是不是要这种效果
其中fliplr函数为flip array left to right,此处fliplr(i)的输出结果为[4 3 2 1],详见doc fliplr。
分析:
fill函数的一般用法为 fill(X,Y,ColorSpec),
ColorSpec即颜色参数,注意不能省略,如上面的'r',这个不做进一步解释了。
fill的这个用法可以用来填充封闭区域,先举个简单例子,比如填充一个凸四边形,四边形的4个顶点坐标为(0,0),(1,3),(4,-3),(2,-5),如下图(a)
绘图函数为
plot([0,1,4,2,0],[0,3,-3,-5,0]);
fill的用法为
fill([0,1,4,2],[0,3,-3,-1],'r');
效果如下图(b)
注意比较plot与fill的用法相似处与区别。
现在回头看开头那个i-a的例子,应该可以理解了吧,那个fill也可以写成
fill([1,2,3,4,4,3,2,1],[1,-2,3,-4,0,0,0,0],'r');
实际上就是描封闭图形的边界。
MATLAB 图像处理工具箱中提供了函数 roifill 用于对特定区域的填充,其语法格式为:
J = roifill(I,c,r)
J = roifill(I)
J = roifill(I,BW)
[J,BW] = roifill(⋯)
J = roifill(x,y,I,xi,yi)
[x,y,J,BW,xi,yi] = roifill(⋯)
1、其中 J=roifill(I,c,r)填充由向量 c、r 指定的多边形,c 和 r 分别为多边形各顶点的 x、y 坐标。它是通过求解边界的拉普拉斯方程,利用多边形边界点的灰度平滑的插值得到多边形内部的点。通常可以利用对指定区域的填充来“擦”掉图像中的小块区域。
2、J=roifill(I)表示由用户交互选取填充的区域。选择多边形的角点后,按 Enter 键表示结束,空格键或 Del 键表示取消一个选择。
3、J=roifill(I,BW)用掩模图像 BW 选择区域。
4、 [J,BW]=roifill(⋯)在填充区域的同时还返回掩模图像 BW。
5、 J=roifill(x,y,I,xi,yi)和[x,y,J,BW,xi,yi]=roifill(⋯)表示在指定的坐标系 xy 下填充由向量 xi和 yi 指定的多边形区域。按照这个理解就可以完成特定区域的填充。
语法格式的示例如下:
I=imread('eight.tif');
%matlab自带的素材图,不需要指定路径,在MATLAB的工作路径下,C:\Program
Files\MATLAB\R2014a\toolbox\images\imdata
c=[222 272 300 270 221 194];
r=[21 21 75 121 121 75];
J=roifill(I,c,r);
figure,imshow(I),title('原图');
>> figure,imshow(J),title('填充后的图')