龙空技术网

「三十」MATLAB数字图像运算之特定区域处理方法

赤诚之心 212

前言:

今天姐妹们对“matlab解决图像边缘填充问题”大致比较关注,兄弟们都想要知道一些“matlab解决图像边缘填充问题”的相关文章。那么小编也在网上收集了一些有关“matlab解决图像边缘填充问题””的相关资讯,希望同学们能喜欢,小伙伴们一起来学习一下吧!

在进行图像处理时,有时只需对图像中的某个特定区域进行处理,而并不需要对整个图像进行处理。在MATLAB中,对特定区域的处理是通过二值掩膜来实现的。用户选定一个区域后会生成一个与原图像大小相同的二值图像,选定的区域为白色,其它为黑色。通过掩膜图像就可以实现对特定区域的选择性处理。

在MATLAB中提供了bestblk()函数用于选择图像块的尺寸。当需要定义图像块,但图像块的尺寸又不能明显看出来,这时就可以利用bestblk()函数来帮助我们获得合适的块尺寸。该函数的调用格式如下:

siz = bestblk([m n],k):输入图像的尺寸大小为m*n,输出siz为块尺寸;块尺寸的最大值不大于输入参数k;

[mb,nb] = bestblk([m n],k):返回图像块的行数和列数,结果和siz一样。

在MATLAB图像处理工具箱中,提供了roipoly()函数、roicolor()函数和poly2mask()三个函数来生成二值掩膜。

roipoly()函数用于设定图像中的多边形区域,其输出与输入大小一致的二值图像,多边形区域为1,其他为0。该函数的调用格式如下:

BW = roipoly或BW = roipoly(I):让用户交互地选择多边形区域。通过单击鼠标设定多边形的顶点(按空格键、Esc键和Del键可撤销顶点),选好顶点后,按回车键确认;

BW = roipoly(I, c, r):非交互,向量(c,r)作为多边形X-Y轴下的顶点坐标;

BW = roipoly(x, y, I, xi, yi):用矢量x,y建立非默认的坐标系,然后在该坐标系下以向量(xi,yi)表示多边形顶点;

[BW, xi, yi] = roipoly(...):返回多边形顶点的坐标;

[x, y, BW, xi, yi] = roipoly(...):返回在X-Y坐标系下的多边形顶点的坐标。

roicolor()函数用于按灰度选择区域。该函数的调用格式如下:

BW = roicolor(A,low,high):色图范围为[low high],像素灰度值在该范围内,返回1,否则,返回0,最后输出与输入图像大小一致的二值图像;

BW = roicolor(A,v):v是一个包含各种灰度值的向量;如果A中像素灰度值在向量v中,则返回1,否则,返回0;

poly2mask()函数可以生成二值图像的掩膜,前提是必须要指定生成掩膜的图像;此外,也可以将多边形区域转化为遮罩。该函数的调用格式如下:

BW = poly2mask(x, y, m, n):输出的二值图像大小为m*n,(x,y)为顶点构成的多边形内部返回1,外部返回0,边界不定。要想包括边界,可以使(x,y)坐标为小数即可。

在MATLAB中,基于上述产生的二值掩膜,还提供了一些对特定区域进行图像处理的方法。下面,介绍MATLAB中对特定区域进行滤波和填充的方法。

在MATLAB图像处理工具箱中,提供了roifilt2()函数来实现对特定区域的滤波处理。该函数的调用格式如下:

J = roifilt2(h, I, BW):使用滤波器h对图像I中用二值掩膜BW选中的区域进行滤波;

J = roifilt2(I, BW, fun):对图像I中用二值掩膜BW选中的区域进行函数运算,参数fun表示运算表达式。

在MATLAB图像处理工具箱中,提供了roifill()函数来实现对特定区域的填充处理。该函数的调用格式如下:

J = roifill或J = roifill(I):交互选中填充区域

J = roifill(I, c, r):可以“擦掉”向量(c,r)包围的图像;

J = roifill(I, BW):用掩膜图像BW旋转区域;

[J,BW] = roifill(...):返回掩膜图像BW;

J = roifill(x, y, I, xi, yi):与前面介绍的roipoly()函数用法一致;

[x, y, J, BW, xi, yi] = roifill(...):与前面介绍的roipoly()函数用法一致。

下面,通过三个简单实例来具体说明对图像特定区域的处理方法:

代码:

Demo1

Demo2

Demo3

显示效果:

Demo1_原图像

Demo1_分块图像

Demo2_多边形区域生成掩膜

Demo3_figure1:原图像

Demo3_figure2:二值掩膜

Demo3_figure3:篮球颜色变绿

Demo3_figure4:篮球变模糊

Demo3_figure5:篮球被掩盖消失

最后,感谢您的耐心阅读!

MATLAB的世界

MATLAB语言之程序性能优化

上一篇:MATLAB数字图像运算之块操作

标签: #matlab解决图像边缘填充问题