主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

テクスチャフィルターを使ったテクスチャのセグメンテーション

この例では,テクスチャに基づいて領域を識別し,セグメント化する方法を示します。

イメージの読み取り

バッグのテクスチャパターンのグレースケールイメージを読み取り,それを表示します。

我= imread (“bag.png”);imshow (I)标题(原始图像的

图中包含一个坐标轴。标题为“原始图像”的轴包含一个类型为“图像”的对象。

テクスチャイメージの作成

関数entropyfiltを使用して,テクスチャイメージを作成します。関数entropyfiltは,配列を出力します。ここで,各出力ピクセルは,入力イメージ内の対応するピクセル周辺に9 x9近傍のエントロピー値を含んでいます。エントロピーとは,ランダム性の統計的尺度です。

stdfiltおよびrangefiltを使用しても,同じようなセグメンテーション結果に達することができます。局所エントロピーのテクスチャイメージを比較するため,局所的な標準偏差と局所範囲を示すテクスチャイメージ年代およびRをそれぞれ作成します。

E = entropyfilt(我);S = stdfilt(我的(9));R = rangefilt(我的(9));

重新调节を使用してテクスチャイメージEおよび年代を再スケーリングし,ピクセル値がデータ型のイメージに期待される[0,1]の範囲に収まるようにします。

Eim =重新调节(E);Sim =重新调节(年代);

3つのテクスチャイメージをモンタージュに表示します。

蒙太奇({Eim, Sim, R},“大小”3 [1],“写成BackgroundColor”' w '“BorderSize”, 20)标题(“显示局部熵、局部标准差和局部范围的纹理图像”

图中包含一个坐标轴。标题为“纹理图像显示局部熵、局部标准差和局部范围”的轴包含一个类型为image的对象。

下部テクスチャでのマスクの作成

この例では,引き続きエントロピーテクスチャイメージEimを処理します。その他のモルフォロジー関数を使用して,他の2種類のテクスチャイメージについて同様の処理を繰り返しても,同じようなセグメンテーション結果に達することができます。

再スケーリングされたイメージEimをしきい値処理し,テクスチャをセグメント化します。テクスチャ間の境界線のピクセル強度値とほとんど同じであるため,しきい値0.8を選択します。

0.8 BW1 = imbinarize (Eim);imshow (BW1)标题(阈值纹理图像的

图中包含一个坐标轴。标题为“阈值纹理图像”的轴包含一个图像类型的对象。

バイナリイメージBW1のセグメント化されたオブジェクトは白色です。BW1を比較した場合,上部テクスチャは過度にセグメント化され(複数の白色オブジェクト),下部テクスチャはほとんど全体がセグメント化されていることに気が付きます。bwareaopenを使用して,上部テクスチャ内のオブジェクトを削除します。

BWao = bwareaopen (BW1, 2000);imshow (BWao)标题(“Area-Opened纹理图像”

图中包含一个坐标轴。标题为Area-Opened Texture Image的轴包含一个类型为Image的对象。

関数imcloseを使用して,エッジを滑らかにし,BWaoのオブジェクトで開いている穴を閉じます。entropyfiltで使用したものと同じ9行9列近傍を指定します。

nhood = 1 (9);closeBWao = imclose (BWao nhood);imshow (closeBWao)标题(封闭的纹理图像的

图中包含一个坐标轴。标题为Closed Texture Image的轴包含一个Image类型的对象。

関数imfillを使用して,closeBWaoのオブジェクトの穴を塗りつぶします。マスクはイメージの最下部まで拡張されていないため,下部テクスチャのマスクは完ぺきではありません。ただし,マスクを使用して,テクスチャをセグメント化できます。

掩码= imfill (closeBWao,“黑洞”);imshow(面具);标题(“底部纹理蒙版”

图中包含一个坐标轴。标题为Mask of Bottom Texture的轴包含一个类型为image的对象。

マスクを使用したテクスチャのセグメント化

テクスチャを2つの異なるイメージに分割します。

textureTop =我;textureTop(面具)= 0;textureBottom =我;textureBottom面具(~)= 0;蒙太奇({textureTop textureBottom},“大小”(1 - 2),“写成BackgroundColor”' w '“BorderSize”, 20)标题(“分割顶部纹理(左)和分割底部纹理(右)”

图中包含一个坐标轴。标题为分割顶部纹理(左)和分割底部纹理(右)的轴包含一个类型为image的对象。

セグメンテーション結果の表示

ラベル行列を作成し,ラベル1のマスクを2,ラベルのマスクを真正的とします。元のイメージ上にラベル行列を重ね合わせます。

L =面具+ 1;L) imshow (labeloverlay(我)标题(“标签分割区域”

图中包含一个坐标轴。带有标题标记分割区域的轴包含一个类型为图像的对象。

2つのテクスチャ間の境界線の輪郭をシアンで表示します。

边界= bwperim(面具);imshow (labeloverlay(边界,我“Colormap”,[0 1 1])) title(“纹理之间的界限”

图中包含一个坐标轴。带有标题纹理边界的轴包含一个类型为image的对象。

参考

||||||