OpenCV形态学操作

本文介绍了OpenCV中的形态学操作,包括图像腐蚀、膨胀、开运算和闭运算,并提供了相关函数的详细说明,如MorphologyEx、Dilate和Erode。还给出了OpenCV形态学实例代码,演示了如何在C++中实现这些操作。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

OpenCV形态学操作

 

一、图像腐蚀 膨胀 细化的基本原理

1.图像细化的基本原理
图像形态学处理的概念
数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。
在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。

二值图像的逻辑运算
逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段。在图像处理中用到的主要逻辑运算是:与、或和非(求补),它们可以互相组合形成其他逻辑运算。

膨胀和腐蚀
膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。
膨胀
是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。AB膨胀是所有位移z的集合,这样, 和A至少有一个元素是重叠的。我们可以把上式改写为:
结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的。
用结构元素B,扫描图像A的每一个像素
用结构元素与其覆盖的二值图像做操作
如果都为0,结果图像的该像素为0。否则为1

腐蚀
Z中的集合ABBA进行腐蚀的整个过程如下:
用结构元素B,扫描图像A的每一个像素
用结构元素与其覆盖的二值图像做操作
如果都为1,结果图像的该像素为1。否则为0
腐蚀处理的结果是使原来的二值图像减小一圈。

击中(匹配)或击不中变换
假设集合A是由3个子集XYZ组成的集合,击中(匹配)的目的是要在A中找到X的位置,我们设X被包围在一个小窗口W中,与W有关的X的局部背景定义为集合的差(WX),则XA内能得到精确拟合位置集合是由XA的腐蚀后由(WX)对A的补集Ac腐蚀的交集,这个交集就是我们要找的位置,我们用集合B来表示由XX的背景构成的集合,我们可以令B=(B1B2),这里B1XB2=(WX),则在A中对B进行匹配可以表示为:
A⊙B
我们称为形态学上的击中或击不中变换。

 

开闭操作
开操作是先腐蚀、后膨胀处理。

闭操作是先膨胀、后腐蚀处理。

 

(6) 细化
图像细化一般作为一种图像预处理技术出现,目的是提取源图像的骨架,即是将原图像中线条宽度大于1个像素的线条细化成只有一个像素宽,形成骨架,形成骨架后能比较容易的分析图像,如提取图像的特征。
细化基本思想是层层剥夺,即从线条边缘开始一层一层向里剥夺,直到线条剩下一个像素的为止。图像细化大大地压缩了原始图像地数据量,并保持其形状的基本拓扑结构不变,从而为文字识别中的特征抽取等应用奠定了基础。细化算法应满足以下条件:
将条形区域变成一条薄线;
薄线应位与原条形区域的中心;
薄线应保持原图像的拓扑特性。
细化分成串行细化和并行细化,串行细化即是一边检测满足细化条件的点,一边删除细化点;并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点。
常用的图像细化算法有hilditch算法,pavlidis算法和rosenfeld算法等。
注:进行细化算法前要先对图像进行二值化,即图像中只包含两种颜色。

具体详细的图像形态学资料参考:http://wenku.baidu.com/view/1923d18fcc22bcd126ff0ccc.html

 

二、OpenCv形态学操作相关函数

1MorphologyEx         高级形态学变换

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 模式下需要。

2Di

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值