MATLAB中怎么用fill填充指定区域?
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:\ProgramFiles\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('填充后的图')