opencv学习—形态学

void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

src             输入图像. dst            输出图像. element    用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素 iterations   膨胀的次数
cvErode()腐蚀后cvDilate()膨胀,叫作开操作,那些离散点或游丝线、毛刺就被过滤

cvDilate()膨胀后cvErode()腐蚀,叫作闭操作,那些断裂处就被缝合。

  在OpenCV中某些高级形态学变换用cvMorphologyEx函数完成,包括开运算,闭运算,标准形态梯度,白顶帽,黑顶帽运算。但是本博主不推荐使用该函数。

     通过查看cvMorphologyEx的源代码,可以发现,在执行开、闭等运算,在进行第二步形态学腐蚀和膨胀时,该函数仍然采用与第一步相同的结构元素进行。这种方法在针对一般对称的结构元素情况是正确的,但是当结构元素为自定义的非对称结构元素时,结果图像会发生错误的偏移。

 正确的方法是,如前面在开、闭运算的介绍中,执行第二步腐蚀、膨胀操作时,应采用结构元素的映射(反射)进行。因此,在本文中不提倡使用cvMorphologyEx函数。本文将通过一系列扩展的形态学变换函数替代该函数的功能,如:lhMorpOpen,lhMorpClose等,请参考本博客OpenCV和形态学系列文章。http://lh2078.blog.163.com

在这里仅给出该函数的简单描述。

函数:cvMorphologyEx

void 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 - "顶帽" 
CV_MOP_BLACKHAT - "黑帽" 
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 模式下需要。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值