Opencv图像形态学运算总结——腐蚀、膨胀、开运算、闭运算、顶帽、黑帽、形态学梯度

Opencv中提供了图像形态学运算的接口,像基本的腐蚀膨胀都有自己单独的函数接口,但实际上调用morphologyEx()一个函数接口使用不同的参数就可以完成所有常见的形态学运算,包括腐蚀、膨胀、开运算、闭运算、顶帽、黑帽、形态学梯度。

示例:

Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
morphologyEx(src, dst, MORPH_DILATE, element);

element是运算核(内核矩阵),从getStructuringElement()函数返回获取一个矩阵,getStructuringElement()函数定义了运算核的类型,MORPH_RECT代表的是矩形的运算核,还可以选择MORPH_ELLIPSE椭圆核和MORPH_CROSS十字形核;第二个参数是设置运算核的大小cv::Size()。

morphologyEx()函数第一个参数为原图像(待运算的图像),第二个参数为目标图像(运算生成的图像),第三个参数最为重要,为运算类型,关于不同标识符作为参数输入与对应的运算类型有一个表非常详细:

标识符运算类型
MORPH_ERODE腐蚀
MORPH_DILATE膨胀
MORPH_OPEN开运算
MORPH_CLOSE闭运算
MORPH_GRADIENT形态学梯度
MORPH_TOPHAT顶帽运算
MORPH_BLACKHAT黑帽运算

最后一个参数就是已经设置好的内核矩阵element。

  • 腐蚀与膨胀

腐蚀与膨胀是形态学中最基本的运算,其实所谓的”腐蚀“与”膨胀“都是针对亮度较高的像素而言的,腐蚀运算会将高亮像素区域局部缩小,而膨胀运算会将高亮像素区域局部放大。

原图
腐蚀图
膨胀图
  • 开运算与闭运算

开运算与闭运算都是在腐蚀膨胀的基础上进行的;准确地说,开运算就是先进行腐蚀再进行膨胀,可以消除图像中较小的亮点(在前景检测中开运算能够很好的消除二值前景图像中的噪声点);闭运算就是先进行膨胀再进行腐蚀,可以消除图像中小型的黑洞

原图
开运算图
闭运算图

 

  •  形态学梯度

形态学梯度与开闭运算一样,是在腐蚀膨胀的基础上进行的运算;不同的是形态学梯度图是膨胀图与腐蚀图做差分得到的图像,通过膨胀图减去腐蚀图可以得到图像的边缘轮廓区域的像素。

原图
形态学梯度图
  • 顶帽与黑帽

顶帽:原图像与开运算图之差,用于分离局部较亮区域的像素

黑帽:闭运算与原图像之差,用于分离局部较暗区域的像素

原图
顶帽运算图
黑帽运算图

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值