文章目录
- 1.strel
- 2.roipoly
- 3.roifilt2
- 4.roifill
1.strel
功能: 形态学结构元素,strel 对象表示一个平面形态学结构元素,该元素是形态学膨胀和腐蚀运算的重要部分。
语法:
- SE= strel(shape, parameters)
创建一个结构元素对象SE。参量shape及parameters指定结构元素对象的类型。字符串参量shape取值可为:square(方型)、line(线型)、disk(圆盘型)、ball(球型)、rectangle(长方型)等。parameters为对应shape的大小描述。
代码示例:
se1 = strel('square',3)% 创建 6*6 的正方形
se2 = strel('line',3,45)% 创建直线长度 10,角度 45
se3 = strel('disk',3)% 创建圆盘半径 15
se4 = strel('ball',5,4)% 创建椭圆体,半径 15,高度 5
运行结果:
- SE = strel(‘arbitrary’, NHOOD)
创建一个平面结构元素对象SE。参量NHOOD是一个由O和1组成的矩阵,用于指定邻域。
代码示例:
se1 = strel('arbitrary',[1 0 1;1 1 1;0 0 1])
运行结果:
- SE = strel(‘arbitrary’, NHOOD, HEIGHT)
创建一个非平面结构元素SE。参量HEIGHT与NHOOD的维数相同,表示NHOOD中每个非零元素的高度值。
代码示例:
se2 = strel('arbitrary',[1 0 1;1 1 1;0 0 1],[10 0 15;20 30 40;3 2 1])
运行结果:
2.roipoly
功能: 用于选择图像中的多边形区域。
语法:
- BW = roipoly(I,c,r)
表示用向量 c、r 指定多边形各点的 X、Y 坐标。BW 选中的区域为1,其他部分的值为 0.
运行结果:
I = imread('girl.jpg');
c = [222 272 300 270 221 194];% 四个点的x坐标值
r = [21 21 75 121 121 75];% 四个点的y坐标值
BW = roipoly(I,c,r);
subplot(121);imshow(I);
subplot(122); imshow(BW)
运行结果:
- BW = roipoly(I)
表示建立交互式的处理界面。让用户使用鼠标来指定一个多边形,在最后显示的图像上操作,定位并调整多边形的大小后,通过双击或右键单击该多边行的内部,然后从出现的菜单中选取Create mask,可创建模板B。
代码示例:
I = imread('girl.jpg');
BW = roipoly(I);
subplot(121);imshow(I);
subplot(122); imshow(BW)
人机交互:
运行结果:
- BW = roipoly(x,y,I,xi,yi)
表示向量 x 和 y 建立非默认的坐标系,然后在指定的坐标
系下选择由向量 xi,yi 指定的多边形区域。
3.roifilt2
功能: 用于对一个区域进行滤波。
用法:
- J = roifilt2(h,I,BW)
表示使用滤波器 h 对图像 I 中用二值掩模 BW 选中的区域滤波。
BW 为和 I 大小相同的二值图像。
代码如下(示例):
I = imread('girl.jpg');
I = rgb2gray(I);
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);
h = fspecial('unsharp');%指定滤波器
J = roifilt2(h,I,BW);
subplot(121);imshow(I); subplot(122); imshow(J);
运行结果:
- J = roifilt2(I,BW,fun)
使用函数FUN处理I中的数据。 - J = roifilt2(I,BW,fun,P1,P2,…)
表示用 fun 函数处理区域滤波图像 I。参数 P1、P2 等为 fun 函数的输入参数。
代码如下(示例):
4.roifill
功能: 对指定区域进行填充。
用法:
- J = roifill(I,c,r)
填充由向量 c,r 指定的多边形,c 和 r 分别为多边形的各顶点 X、Y 坐标。可用于擦除图像中的小物体。 - J = roifill(I)
用于交互式处理界面。 - J = roifill(I,BW)用 BW(和 I 大小一致)掩模填充此区域。如果为多个多边形,则分别执行插值填充。
- [J,BW] = roifill(…)
返回用于确定填充的像素的二进制掩码。BW 为和 I 大小相同的二值图像。 - J = roifill(x,y,I,xi,yi)
- [x,y,J,BW,xi,yi] = roifill(…)
代码如下(示例):
I = imread('girl.jpg');
I = imread('eight.tif');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
J = roifill(I,c,r);
subplot(121);imshow(I);subplot(122);imshow(J)
运行结果: