二值图像--形态学处理3 开操作和闭操作,--形态学


学习DIP第13天

开篇废话

    简单来说所谓开操作和闭操作就是把腐蚀和膨胀结合起来,先腐蚀后膨胀就是开,膨胀后腐蚀就是关,至于为什么是开为什么是关,我一开始也记不住,记得老师好像也没告诉我为啥叫开,为啥叫闭,不过在下面的介绍中,会给出叫开和关的原因。

数学原理

    额,公式还没准备好。。。

性质

    开操作,一般会平滑物体轮廓,断开较窄的狭颈(细长的白色线条),所以叫开,并消除细小的突出物。     闭操作,一般也会平滑物体轮廓,但与开操作相反,弥合较窄的间断和细长的沟壑,所以叫闭,消除小的空洞,填补轮廓线的中的断裂。     上述中所有所谓的细,窄都是与结构元SE相比的,所以,关键还是SE。     幂等性(idempotent):就是当对同一SE对图像做开(闭)操作,做一次和做多次,结果是一样的。

代码

     代码,完全是基于腐蚀和膨胀的操作,其中腐蚀和膨胀的具体实现,见上节:
//开操作
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);
    
}


结果

    以下所有结果的SE均为3x3的全为1,中心为中间元素,即SE为各向同性的。     开操作:左上为原图,左下为开操作结果,右上是开操作结果与原图的差,可以看出,细小的白色突起,细长的线条被处理掉了,而狭长的黑色沟壑被保留:
    闭操作:左上为原图,左下为闭操作结果,右上为原图与闭操作结果的差。可以看出,原图中的黑色细条(即黑色沟壑)被填充,但白色突起点被保留。
     下面对以100为阈值处理的lenna图进行操作:      lena的open结果:
     lena的close结果

相关内容