学习Qt_OpenCV形态学开运算、闭运算、形态学梯度、顶帽、黑帽及OpenCV实现

原文:https://blog.youkuaiyun.com/qingyang8513/article/details/80675872

形态学运算


2.1 开运算
    腐蚀与膨胀作为形态学的基本操作,经过组合后可以很容易的实现更高一级的形态学运算。开运算即是先腐蚀后膨胀的得到的结果,即dst = open(src, element) = dilate(erode(src, element))。开运算可以消除局部小的白色杂点,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积

2.2 闭运算
    闭运算过程与开运算过程相反,其是先膨胀后腐蚀的过程,可以消除图像中的小黑点,dst = close(src, element) = erode(dilate(src, element))。。

2.3 形态学梯度
    形态学梯度是膨胀图与腐蚀图之差,其数学表达式为:dst = morph_grad(src, element) = dilate(src, element) - erode(src, element)。对二值图像进行形态学梯度运算,可以突出物体边缘。通常,我们采用形态学梯度来保留物体的边缘轮廓

2.4 顶帽
    顶帽运算又常称为礼帽运算,是原始图像与图像开运算结果之差,其数学表达式为:dst = tophat(src, element) = src - open(src, element)。顶帽运算通常用来分离比邻近点亮一些的斑块,在一幅图像具有大幅背景且微小细节比较有规律的情况下,顶帽运算可以用来进行背景提取

2.5 黑帽
    黑帽运算是图像闭运算结果与原始图像之差,其数学表达式为:dst = tophat(src, element) = close(src, element) - src。黑帽运算通常用来分离比邻近点暗一些的斑块,可以突出比原始图轮廓周围区域更暗的区域

OpenCV实现

    cv::morphologyEx()函数综合形态学大部分运算,可以实现形态学腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽、黑帽等。cv::morphologyEx()声明如下:

void cv::morphologyEx ( InputArray  src,
    OutputArray  dst,
    int  op,
    InputArray  kernel,
    Point  anchor = Point(-1,-1),
    int  iterations = 1,
    int  borderType = BORDER_CONSTANT,
    const Scalar &  borderValue = morphologyDefaultBorderValue() 
  )  

 

#include <opencv2/imgproc.hpp>

执行高级形态转换。

函数cv :: morphologyEx可以使用侵蚀和膨胀作为基本操作来执行高级形态学变换。

任何操作都可以就地完成。在多通道图像的情况下,每个通道被独立处理。

参数

SRC 来源图片。通道数可以是任意的。深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值