形态学开操作与闭操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/water_93/article/details/50859193

开操作是先腐蚀再膨胀,闭操作是先膨胀再腐蚀。灰度图像是求最大最小值,二值图像是进行与运算。

二值形态学:

1.二值腐蚀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。中心及领域有一个点不是黑点,该点就被腐蚀成白点

2.二值膨胀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。

目的:开操作可以平滑物体轮廓,断开狭窄的间断和消除细小的突出物。
   闭操作可以消弭狭窄的间断,消除小的孔洞。

灰度形态学:
1. 灰度形态学膨胀:膨胀就是求局部最大值的操作,结构元素B扫描图像的每一个像素,即计算核B覆盖的图像区域的像素点的最大值,并把这个最大值赋值给参考点(核B的中心点)指定的像素,使图像变明亮。
2. 灰度形态学腐蚀:求局部最小值的操作,结构元素B扫描图像的每一个像素,即计算核B覆盖的图像区域的像素点的最小值,并把这个最小值赋值给参考点(核B的中心点)指定的像素,使图像变灰暗。


代码:其中se是结构元素,根据开操作的不同,结构元素可以是圆形,正方形,矩形等center是结构元素的中心,决定结构元素是否是各向同性的。
//开操作 
void Open(IplImage *src,IplImage *dst,IplImage *se,Position *center)
   Erode(src, dst, se, center);
   Dilate(dst, dst, se, center); 
//闭操作
void Close(IplImage *src,IplImage *dst,IplImage *se,Position *center)
    Dilate(src, dst, se, center); 
    Erode(dst, dst, se, center); 
}
IplConvKernel* t = cvCreateStructuringElementEx(51,3,25,1,CV_SHAPE_RECT);
IplConvKernel* t1 = cvCreateStructuringElementEx(3,51,1,25,CV_SHAPE_RECT);//宽度,高度
cvDilate(m_Frame3,m_Frame3,t1,1);
cvErode(m_Frame3,m_Frame3,t1,1);
 
 

猜你喜欢

转载自blog.csdn.net/water_93/article/details/50859193
今日推荐