cvMorphologyEx —不推荐使用

在OpenCV中某些高级形态学变换用cvMorphologyEx函数完成,包括开运算,闭运算,标准形态梯度,白顶帽,黑顶帽运算。

但是不推荐使用该函数。 通过查看cvMorphologyEx的源代码,可以发现,在执行开、闭等运算,在进行第二步形态学腐蚀和膨胀时,该函数仍然采用与第一步相同的结构元素进行。这种方法在针对一般对称的结构元素情况是正确的,但是当结构元素为自定义的非对称结构元素时,结果图像会发生错误的偏移。 正确的方法是,如前面在开、闭运算的介绍中,执行第二步腐蚀、膨胀操作时,应采用结构元素的映射(反射)进行。因此,在本文中不提倡使用cvMorphologyEx函数。本文将通过一系列扩展的形态学变换函数替代该函数的功能,如:lhMorpOpen,lhMorpClose等,可参考http://lh2078.blog.163.com在这里仅给出该函数的简单描述。

函数:cvMorphologyExvoid cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp,IplConvKernel* element, int operation, int iterations=1 );

src 输入图像. dst 输出图像. temp 临时图像,某些情况下需要 element 结构元素 operation 形态操作的类型: CV_MOP_OPEN - 开运算

 CV_MOP_CLOSE - 闭运算

 CV_MOP_GRADIENT - 形态梯度  :结果=膨胀图-腐蚀图,表示图像亮度变化剧烈的程度;可以把黑色线条变成白色

 CV_MOP_TOPHAT - "顶帽":结果=原图-开操作;突出A图像领域内更亮的区域

 CV_MOP_BLACKHAT - "黑帽":结果:闭操作-原图;突出A图像领域内更暗的区域

 iterations 膨胀和腐蚀次数. 不是简单的重复两次闭或者开运算,而是对于闭的话:先膨胀两次,在腐蚀两次;

函数 cvMorphologyEx 在膨胀和腐蚀基本操作的基础上,完成一些高级的形态变换: 开运算dst=open(src,element)=dilate(erode(src,element),element) 闭运算dst=close(src,element)=erode(dilate(src,element),element) 形态梯度 dst=morph_grad(src,element)=dilate(src,element)-erode(src,element) "顶帽"dst=tophat(src,element)=src-open(src,element) "黑帽"dst=blackhat(src,element)=close(src,element)-src 临时图像 temp 在形态梯度以及对“顶帽”和“黑帽”操作时的 in-place 模式下需要。


你可能感兴趣的:(opencv,cvMorphologyEx)