Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

bwtraceboundary

バイナリ イメージのオブジェクトをトレース

説明

B = bwtraceboundary(BW,P,fstep) は、バイナリ イメージ BW 内のオブジェクトの輪郭をトレースします。非ゼロ ピクセルはオブジェクトに属し、ゼロ値ピクセルは背景になります。P はトレースを開始するオブジェクト境界の点の行と列座標を指定します。fstepP に連結している隣接オブジェクト ピクセルの初期探索方向を指定します。B は、領域の境界ピクセルの行と列座標を保持します。

B = bwtraceboundary(BW,P,fstep,conn) は境界をトレースします。ここで、conn は必要な連結性を指定します。

B = bwtraceboundary(BW,P,fstep,conn,m,dir) は、抽出する最大境界ピクセル数である m と境界をトレースする方向である dir を指定します。既定では、bwtraceboundary は境界にあるすべてのピクセルを識別します。

すべて折りたたむ

イメージを読み取り、それを表示します。

BW = imread('blobs.png');
imshow(BW)

Figure contains an axes object. The axes object contains an object of type image.

イメージ内のオブジェクトを選択し、境界をトレースします。オブジェクトを選択するには、境界上のピクセルを指定します。この例では、impixelinfo を使用した視覚的検査で得られる太線の白い円の境界上にあるピクセルの座標を使用します。既定では、bwtraceboundary は境界にあるすべてのピクセルを識別します。

r1 = 163;
c1 = 37;
contour = bwtraceboundary(BW,[r1 c1],'W');

輪郭をイメージにプロットします。

hold on
plot(contour(:,2),contour(:,1),'g','LineWidth',2)

Figure contains an axes object. The axes object contains 2 objects of type image, line.

2 番目のオブジェクトの境界上にある点を選択します。この例では、最大の四角形の左上隅近くにあるピクセルの座標を使用します。最初の 50 個の境界ピクセルを時計回りの方向にトレースします。

r2 = 68;
c2 = 95;
contourCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'clockwise');

2 番目のオブジェクトの境界上にある同じ点から、最初の 50 個の境界ピクセルを反時計回りの方向にトレースします。

contourCCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'counterclockwise');

イメージ上に時計回りの輪郭を赤でプロットします。イメージ上に反時計回りの輪郭を青でプロットします。

plot(contourCW(:,2),contourCW(:,1),'r','LineWidth',2)
plot(contourCCW(:,2),contourCCW(:,1),'b','LineWidth',2)

Figure contains an axes object. The axes object contains 4 objects of type image, line.

入力引数

すべて折りたたむ

バイナリ イメージ。2 次元数値行列または logical 行列として指定します。

トレースを開始するオブジェクトの境界上にある開始点の座標。[row column] の形式で 2 要素ベクトルとして指定します。

データ型: double

P に連結している隣接オブジェクト ピクセルの初期探索方向。次の図で示す string スカラーまたは文字ベクトルとして指定します。

The initial search directions correspond to the four cardinal and four ordinal directions: "N" for north, "NE" for northeast, and so on.

メモ

連結性 conn4 であるとき、fstep"N""E""S" および "W" の値に制限されています。

データ型: char | string

ピクセルの連結性。8 または 4 として指定します。

意味

2 次元連結性

4

ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。

3-by-3 pixel neighborhood with four pixels connected to the center pixel

現在のピクセルを灰色で示します。

8

ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。

3-by-3 pixel neighborhood with 8 pixels connected to the center pixel

現在のピクセルを灰色で示します。

データ型: double

抽出する境界ピクセルの最大数。正の整数として指定します。既定では、mInf で、bwtraceboundary は境界にあるすべてのピクセルを識別します。

データ型: double

境界のトレース方向。"clockwise" または "counterclockwise" として指定します。

データ型: char | string

出力引数

すべて折りたたむ

領域の境界ピクセルの行座標と列座標。q 行 2 列の行列として返されます。B の各行は [row column] の形式になります。

アルゴリズム

関数 bwtraceboundary は、Jacob の停止条件によって変更された Moore-Neighbor トレース アルゴリズムを実装します。この関数は、『Digital Image Processing Using MATLAB, by Gonzalez, R. C., R. E. Woods, and S. L. Eddins, New Jersey, Pearson Prentice Hall, 2004』の初版にある関数 boundaries に基づいています。

参照

[1] Gonzalez, R. C., R. E. Woods, and S. L. Eddins, Digital Image Processing Using MATLAB, New Jersey, Pearson Prentice Hall, 2004.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する