matlab小球图像纹理分割,17.6 使用纹理滤波器分割图像(1) - 51CTO.COM

17.6  使用纹理滤波器分割图像(1)

使用纹理滤波器分割图像的基本步骤如下:

读取图像;

创建纹理图像;

显示图像不同部分的纹理;

使用合适的滤波器进行分割。

下面通过一个例子来看一下如何使用纹理滤波器对图像进行分割。

例17-7   利用纹理滤波器进行图像分割。

使用纹理滤波器进行分割就是利用图像中不同区域的纹理来对图像的区域进行划分。纹理是指一个物体上的颜色模式或者指物体表面的光滑程度。纹理描述图像中的区域特征,试图直观地定量描述诸如光滑、质地等参数。在遥感、医学图像处理和自动化侦查中,纹理分割图像有着很多的应用。利用纹理可以用来检测图像的边界,从而对图像进行分割。

【本例要点】在本例中首先求取图像不同部分的纹理,然后使用entropyfilt、stdfilt、rangefilt三个不同的滤波函数对图像进行滤波。

本例的基本步骤如下:

读取图像。

代码如下:

I = imread('bag.png');%读取图像

figure; imshow(I);%显示原图像

在这个程序中,首先读取一幅图像bag,这个图像的顶部和底部的纹理有明显的差异,如图17-29所示。

创建纹理图像。

代码如下:

E = entropyfilt(I);%创建纹理图像

Eim = mat2gray(E);%转化为灰度图像

figure; subplot(121)

imshow(Eim);%显示灰度图像

BW1 = im2bw(Eim, .8);%转化为二值图像

subplot(122); imshow(BW1);%显示二值图像

使用函数entropyfilt创建一幅纹理图像,这个函数返回的图像与输入图像大小相同,每个像素值是输入图像相应像素值邻域的熵值。

使用函数mat2gray将矩阵转化为灰度图像,如图17-30左边图像所示。使用纹理边界处的值0.8作为阈值将灰度图像转化为二值图像,如图17-30右边图像所示。

2869705_1.jpg

图17-29  原图像

2869705_2.jpg

图17-30  纹理图像的灰度图像显示和二值图像显示

分别显示图像的底部纹理和顶部纹理。

代码如下:

BWao = bwareaopen(BW1,2000);%提取底部纹理

figure; subplot(121)

imshow(BWao);%显示底部纹理图像

nhood = true(9);

closeBWao = imclose(BWao,nhood);%形态学关操作

subplot(122); imshow(closeBWao)%显示边缘光滑后的图像

roughMask = imfill(closeBWao,'holes');%填充操作

figure; subplot(121)

imshow(roughMask);%显示填充后的图像

I2 = I;

I2(roughMask) = 0;%底部设置为黑色

subplot(122); imshow(I2);%突出显示图像的顶部

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值