主要内容

纹理分割使用纹理过滤器

这个例子展示了如何识别和部分地区根据自己的口感。

读取图像

读取和显示一个灰度图像纹理模式的袋子。

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

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

创建纹理图像

使用entropyfilt创建一个纹理图像。这个函数entropyfilt返回一个数组,其中每个输出像素包含9-by-9社区的熵值在相应的输入图像的像素。熵是一个随机性的统计测量。

您还可以使用stdfiltrangefilt实现类似的分割结果。对纹理图像的局部熵相比,创建纹理图像年代R分别显示当地的标准差和当地的范围。

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

使用重新调节重新调节纹理图像E年代所以像素值在[0,1]范围如预期的图像数据类型

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

显示三个纹理图片蒙太奇。

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

图包含一个坐标轴对象。坐标轴对象与标题纹理图像局部熵,当地的标准偏差,和地方范围包含一个类型的对象的形象。

为底部纹理创建面具

这个例子继续纹理图像的信息熵的处理Eim。您可以重复类似的过程对于其他两种类型的纹理图像与其他形态函数来实现类似的分割结果。

阈值的新形象Eim段纹理。选择阈值为0.8,因为它是大致沿着边界像素的强度值之间的纹理。

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

图包含一个坐标轴对象。轴与标题阈值纹理图像对象包含一个类型的对象的形象。

在二进制图像的分割对象BW1是白色的。如果你比较BW1,你注意到顶部纹理是过度分割(多个白色对象)和底部纹理分割几乎全部。在顶部纹理通过删除对象bwareaopen

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

图包含一个坐标轴对象。标题Area-Opened纹理图像的坐标轴对象包含一个类型的对象的形象。

使用imclose平滑的边缘,并关闭任何打开的洞的对象BWao。指定使用的同一9-by-9社区entropyfilt

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

图包含一个坐标轴对象。坐标轴对象标题关闭纹理图像包含一个类型的对象的形象。

使用imfill对象来填补漏洞closeBWao。底部的面具质地并不完美,因为面具不扩展到图像的底部。不过,您可以使用掩码段纹理。

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

图包含一个坐标轴对象。坐标轴对象与标题的面具下结构包含一个类型的对象的形象。

使用掩码段纹理

纹理分割为两个不同的图像。

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

图包含一个坐标轴对象。坐标轴对象与标题分段顶部纹理(左)和分段底部纹理(右)包含一个类型的对象的形象。

显示分割结果

创建一个标签的矩阵标签1面具在哪里和标签2面具在哪里真正的。覆盖标签在原始图像矩阵。

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

图包含一个坐标轴对象。坐标轴对象与标题标签分割区域包含一个类型的对象的形象。

两者之间的边界轮廓纹理在青色。

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

图包含一个坐标轴对象。坐标轴对象与标题之间的界限纹理包含一个类型的对象的形象。

另请参阅

||||||