このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
イメージ内における円形ブロブの統計の検索
この例は、Blob
Analysis
ブロックを使用して、イメージ内の円形ブロブの重心、周囲長、および境界ボックスの座標を見つける方法を示しています。モデルは、参照用のラベル行列も出力します。
MATLAB ワークスペースへのデータの読み込み
イメージを MATLAB ワークスペースに読み取ります。
I = imread('coins.png');
入力イメージ内のセグメント化されたオブジェクトを表すブロブを含むバイナリ マスクを読み込みます。
load('maskImage','BW');
入力イメージと、対応するバイナリ マスクを表示します。バイナリ マスクは、さまざまな統計の 10 個の円形ブロブで構成されています。
figure subplot(1,2,1) imshow(I,[]); title('Original Image'); subplot(1,2,2) imshow(BW) title('Circular Blobs');
モデル例
Simulink モデルを開きます。
open_system('ex_blkblobanalysis.slx')
モデルは、バイナリ イメージ内のブロブの重心、周囲長、および境界ボックスの座標を計算します。計算された統計は、Draw
Markers
ブロックと Draw
Rectangles
ブロックを使用して、入力イメージにオーバーレイされます。
Blob
Analysis block
の出力ブロブ パラメーターの値は、バイナリ マスク内のブロブの数と同じに設定されます。Draw
Markers
ブロックは計算された重心をプロットし、Draw
Rectangles
ブロックは境界ボックスを描画します。周囲長の値は、変数 perimeter
として MATLAB ワークスペースにエクスポートされます。ラベル行列は、変数 label
として MATLAB ワークスペースにエクスポートされます。
結果のシミュレーションと表示
モデルを実行し、Video
Viewer
ブロックを使用して結果を表示します。計算された重心と境界ボックスは、元のイメージにオーバーレイされます。円形のマーカーは各ブロブの重心を指定し、各ブロブの周りの四角形は計算された境界ボックスを指定します。
out = sim('ex_blkblobanalysis.slx');
計算されたすべての統計の最初の値は、ラベル値 1 のブロブに対応します。同様に、2 番目の値は、ラベル値 2 のブロブに対応します。マスクの背景に対応するラベル値 0 は無視しなければなりません。
ラベル行列から一意のラベル値を読み取ります。
lb = unique(out.label);
周囲長の値と、対応するラベル値を table にして表示します。
table(lb(2:end),out.perimeter,'VariableNames',{'Label','Perimeter'})
ans = 10x2 table Label Perimeter _____ _________ 1 194.17 2 170.02 3 191.58 4 156.37 5 195.58 6 186.51 7 190.75 8 192.17 9 167.44 10 168.85
ラベル行列を表示します。
figure
imshow(out.label,[]);
colorbar
title('Label Matrix');