MATLAB中怎么用fill填充指定区域?如图所示,怎么填充直线与x轴的相交区域

2024-12-29 13:17:00
推荐回答(2个)
回答1:

是不是要这种效果

其中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');

实际上就是描封闭图形的边界。

回答2:

 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('填充后的图')