数字图像处理实战-PPT第4章 形态学处理_第1页
数字图像处理实战-PPT第4章 形态学处理_第2页
数字图像处理实战-PPT第4章 形态学处理_第3页
数字图像处理实战-PPT第4章 形态学处理_第4页
数字图像处理实战-PPT第4章 形态学处理_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章形态学处理1使用开/闭操作处理车牌图像目录腐蚀和膨胀车牌图像2使用基本的形态学算法处理图像3章节小结4腐蚀和膨胀车牌图像1.了解腐蚀与膨胀(1)形态学基本概念腐蚀运算与膨胀运算可以理解为对目标集合的处理方法,以对一面白墙涂刷为例,腐蚀运算像针对墙上的目标区域有规则地刷白色,从而缩小目标区域的尺寸;膨胀运算则像针对墙上的目标区域有规则地刷彩色,从而扩大目标区域的尺寸。在介绍腐蚀与膨胀运算之前,先对集合、前景像素、背景像素和结构元等形态学基本概念进行介绍。集合:在二值图像中,集合是二维整数空间的成员,集合的每个元素都是一个二维向量前景像素:通常将目标像素定义为前景像素背景像素:图像中除前景像素外的其他像素称为背景像素结构元:可以理解为特殊的像素过滤器腐蚀和膨胀车牌图像(1)形态学基本概念由于图像在计算机中表示为矩阵序列,并且目标集合的形状通常是任意的。用不同表示方法表示的物体与结构元如下图所示:图像示例:第一行展示了表示为集合的物体、表示为图形图像的物体和数字图像结构元示例:第二行展示了表示为集合的结构元、表示为图形图像的结构元和数字图像对应的结构元前景与背景像素:将表示为目标像素的蓝色前景像素嵌入矩阵背景中,背景颜色为白色腐蚀和膨胀车牌图像(2)反射与平移

(4‑1)

(4‑2)

腐蚀和膨胀车牌图像(3)腐蚀

(4‑3)

腐蚀和膨胀车牌图像(4)膨胀

(4‑4)

腐蚀和膨胀车牌图像(4)膨胀不同结构元对集合进行膨胀运算如图所示。图中(a)、(b)、(c)、(d)、(e)分别是:

(a)(b)(c)(d)(e)腐蚀和膨胀车牌图像(5)对车牌图像进行腐蚀、膨胀使用OpenCV库中的erode函数可实现对图像进行腐蚀运算。erode函数的语法格式:cv2.erode(src,kernel,dst,anchor,iterations,borderType,borderValue),erode函数的参数及其说明如下表所示。参数名称说明src接收constGMat类型。表示输入图像。无默认值kernel接收constMat类型。表示进行运算的内核。默认使用参考点位于中心的3×3的内核anchor接收constPoint类型。表示锚位于单元的中心。默认值为Point(-1,-1)iterations接收int类型。表示迭代使用函数的次数。默认值为1borderType接收int类型。表示用于推断图像外部像素的某种边界模式。默认值为BORDER_CONSTANTborderValue接收constScalar类型。表示当边界为常数时的边界值。默认值为morphologyDefaultBorderValue()腐蚀和膨胀车牌图像(5)对车牌图像进行腐蚀、膨胀使用OpenCV库中的dilate函数可实现对图像进行腐蚀运算。dilate函数的语法格式:cv2.dilate(src,kernel,dst,anchor,iterations,borderType,borderValue),

dilate函数的参数及其说明如下表所示。参数名称说明src接收constGMat类型。表示输入图像。无默认值kernel接收constMat类型。表示进行运算的内核。默认使用参考点位于中心的3×3的内核anchor接收constPoint类型。表示锚位于单元的中心。默认值为Point(-1,-1)iterations接收int类型。表示迭代使用函数的次数。默认值为1borderType接收int类型。表示用于推断图像外部像素的某种边界模式。默认值为BORDER_CONSTANTborderValue接收constScalar类型。表示当边界为常数时的边界值。默认值为morphologyDefaultBorderValue()腐蚀和膨胀车牌图像(5)对车牌图像进行腐蚀、膨胀对车牌图像进行腐蚀、膨胀后的图片对比如下图所示。(b)原图与膨胀车牌图像结果对比(a)原图与腐蚀车牌图像结果对比在进行腐蚀运算后,车牌图像明显更为精细;进行膨胀运算后,车牌图像的线条明显“增长”,整体更为平滑。1使用开/闭操作处理车牌图像目录腐蚀和膨胀车牌图像2使用基本的形态学算法处理图像3章节小结4使用开/闭操作处理车牌图像1.了解开操作与闭操作开操作通常用于平滑物体的轮廓,可断开狭颈、消除细长的突出物;闭操作同样用于平滑轮廓,但是与开操作的不同点在于,闭操作通常弥合狭颈和细长的沟壑、消除小孔,并填充轮廓中的缝隙。(1)开操作

(4‑5)在式(4‑7)中,A是前景像素集合,B为结构元。结构元B对集合A进行开操作,首先进行结构元B对集合A的腐蚀运算,然后结构元B对腐蚀之后的集合A进行膨胀运算。使用开/闭操作处理车牌图像(1)开操作

通过图中可以看出,删除目标像素更窄区域的能力是形态学开操作的关键特征之一。(a)(b)(c)(d)使用开/闭操作处理车牌图像(2)闭操作与开操作类似,结构元B对集合A的闭操作的定义如式(4-6)所示。

(4-6)在式(4‑6)中,A是前景像素集合,B为结构元。结构元B对集合A进行闭操作,可以理解为结构元B首先对集合A进行膨胀运算,然后对膨胀之后的结构进行腐蚀。

(a)(b)(c)(d)使用开/闭操作处理车牌图像(3)对车牌图像进行开操作、闭操作对车牌图像进行开、闭操作使用morphologyEx函数实现,morphologyEx函数的语法格式如下。cv2.morphologyEx(src,op,kernel,dst,anchor,iterations,borderType,borderValue),erode函数的参数及其说明如下表所示。参数名称说明src接收constGMat类型。表示输入图像。无默认值op接收MorphTypes类型。表示形态学运算的类型。无默认值kernel接收constMat类型。表示进行运算的内核。默认使用参考点位于中心的3×3的内核anchor接收constPoint类型。表示锚位于单元的中心。默认值为Point(-1,-1)iterations接收int类型。表示迭代使用函数的次数。默认值为1borderType接收int类型。表示用于推断图像外部像素的某种边界模式。默认值为BORDER_CONSTANT使用开/闭操作处理车牌图像(3)对车牌图像进行开操作、闭操作使用morphologyEx函数时通常只需要设置参数src、op、kernel和anchor。如果要进行开操作,设置op参数值设置为MORPH_OPEN;如果要闭操作时,将op参数值设置为MORPH_CLOSE。将图像放大至像素级别来比较开操作前后图像的平滑程度,(a)为原图像,(b)为进行开操作后的图像进行开操作后,图像中的信息较为平滑,细长的突出有一定消除。进行闭操作后,车牌图像中的信息明显平滑,如图(d)所示,更有利于后续的数据提取。(a)(b)(c)(d)1使用开/闭操作处理车牌图像目录腐蚀和膨胀车牌图像2使用基本的形态学算法处理图像3章节小结4使用基本的形态学算法处理图像1.了解基本的形态学算法在形态学处理中,还有很多运算是以腐蚀与膨胀运算为基础。本小节将介绍一些除腐蚀和膨胀之外的基本形态学算法以及对应的应用效果。在处理二值图象时,基本的形态学算法有孔洞填充、骨架提取和提取连通分量等。形态学的主要作用是改变目标集合的形态以及提取图像中用于表示和描述形状的有用成分。为了更清晰的说明形态学算法的原理,将会借助讲述膨胀腐蚀运算时带有前景像素和背景像素的图像集合,其中前景像素值为1,背景像素值为0。(1)孔洞填充像素孔是目标集合不连贯的像素区域,而孔洞是被前景像素连成的边框所包围的背景区域。使用基本的形态学算法处理图像(1)孔洞填充使用集合的方式解释孔洞填充算法的原理,孔洞填充运算的准备如图4‑13所示。假设有目标集合A,且目标集合A是8连通的边界,在已知每个孔洞中的某一个点后,利用前景像素(值为1)填充孔洞。

(4‑7)

使用基本的形态学算法处理图像(1)孔洞填充

使用基本的形态学算法处理图像(1)孔洞填充对图像进行孔洞填充运算基于dilate函数,但实现孔洞填充运算的过程与实现膨胀运算的过程不同,仅使用dilate函数无法解决问题,要获得二值图像首先要通过cvtColor函数将输入图像转为灰度图像。cvtColor函数的语法格式如下。cv2.cvtColor(src,code,dstCn)。cvtColor函数的参数及其说明如下表所示。参数名称说明src接收constGMat类型。表示输入图像。无默认值code接收int类型。表示所使用的颜色映射类型。默认值为COLOR_RGB2GRAY,表示转为灰度图像dstCn接收int类型。表示输出的通道数。默认值为0使用基本的形态学算法处理图像(1)孔洞填充得到灰度图像后使用threshold函数获得灰度图像的二值图像,二值图像中只有黑白像素。threshold函数的语法格式如下。cv2.threshold(src,thresh,maxval,type)threshold函数的参数及其说明如下表所示。参数名称说明src接收constGMat类型。表示输入图像。无默认值thresh接收Double类型。表示转换过程中使用的阈值。无默认值maxval接收Double类型。表示当参数为CV_THRESH_BINARY和CV_THRESH_BINARY_INV时的最大值。无默认值type接收int类型。表示生成二值图像所选用的方法。无默认值使用基本的形态学算法处理图像(1)孔洞填充获取二值图像的垂直尺寸和水平尺寸,构造进行膨胀运算所需的阵列F,最后将结果与原图像的补集进行与运算。原理是以原图像的补集作为掩模,用来限制膨胀结果,以带有白色边框的黑色图像作为初始标记集合,用结构元对其进行连续膨胀,直至收敛;最后对标记集合取补集得到最终图像,将最终图像与原图相减可得到填充图像。孔洞填充图像的结果如下图所示。图中自左至右依次为原图、二值化结果、孔洞填充后的结果。在图中可以看到使用孔洞填充算法可以将本应是一个近圆形整体的细胞补充完整,更有利于后续的目标集合提取。使用基本的形态学算法处理图像(2)连通分量从图像中提取连通分量是许多自动图像分析应用的核心。自动检测应用会频繁使用连通分量,例如检测图像中的异物并提取异物图像。

(4‑8)

使用基本的形态学算法处理图像(2)连通分量

使用基本的形态学算法处理图像(2)连通分量对图像进行提取连通分量运算同样基于dilate函数,实现提取连通分量算法的过程是综合膨胀运算与交集运算的过程,所以连通分量小节中关于dilate函数的使用不再给出。提取连通分量的结果一个是展现图像的二值化,另一个是展现由二值化图像提取出的每个连通分量的像素数(只截取部分)。其中,每个连通分量的像素数可以通过PhotoShop软件进行核对读取,提取连通分量结果展示,如下图所示。使用基本的形态学算法处理图像(3)凸壳在图像处理过程中,需要基于像素的算法能够找到物体的质心来代表该物体,但是在实际中,环境不理想或相机捕捉不稳定等原因,可能会导致图像在二值化时物体本身形状发生缺损,像素化算法就无法找到物体真正的质心。面对无法找到真正质心的情况可适当进行凸壳处理,弥补凹损,凸壳算法能够找到包含原始形状的最小凸多边形。凸壳算法的定义如式(4‑9)所示。

(4‑9)

使用基本的形态学算法处理图像(3)凸壳

(4‑10)

使用基本的形态学算法处理图像(3)凸壳右图所示的过程有一个明显的缺点,凸壳会超出目标集合的边界,这样不仅凸壳的效果不佳而且有违凸壳的定义。可以设定用于限制凸壳不超过目标集合的边界像素,限制凸壳增长后的效果,如下图所示,可以看出添加这一限制条件后图像不失去其凸性。使用基本的形态学算法处理图像(3)凸壳对图像进行凸壳运算基于convexHull函数,其函数的语法格式如下。cv2.convexHull(points,hull,clockwise,returnPoints),convexHull函数的参数及其说明,如表所示。参数名称说明points接收InputArray。表示输入的二维点集,存储在vector或Mat中。无默认值hull接收OutputArray类型,可以为整型向量或点集向量。表示凸壳的二维坐标值。无默认值clockwise接收bool类型。表示凸壳方向的标志位,值为True时,表示基于顺时针方向;值为False时,表示基于逆时针方向。默认值为FalsereturnPoints接收bool类型。表示函数的输出类型,当OutputArray是一个矩阵变量时,值设置为True,输出点坐标,否则,输出索引坐标。默认值为True使用基本的形态学算法处理图像(3)凸壳对图像进行凸壳运算选择易于展现提取效果的手势图像,方便清楚地看到带有不规则结构的图像中轮廓提取的效果。凸壳运算的效果如下图所示。图中左侧为目标图像,右侧为结果图像。在目标图像中绘制了两个凸壳,一个是整个手势外围的凸壳,刚好包围整只手的外侧;另一个是两根手指形成的内部图形,类似于“O”形的凸壳,符合进行凸壳运算想要达到的效果。使用基本的形态学算法处理图像(4)细化在计算机对图像进行识别或特征值提取的过程中,过于粗的线条会对识别造成一定程度的干扰,而细化操作可以获得一个特征值明显的目标图像,进一步选择适当的特征进行分类,从而得到理想的结果。在细化运算中,假设运算的目标是结构元B对前景像素目标集合A进行细化,根据击中-击不中变换,细化运算定义如式(4-11)所示。

(4-11)

使用基本的形态学算法处理图像(4)细化使用上图中的结构元对下图中的前景像素目标集合进行细化操作,细化结束后,对细化的结果进行了一次m连通的转换,转换的效果为消除了多个路径,可以看出,消除后的效果更贴合原前景像素目标集合的细化。使用基本的形态学算法处理图像(4)细化进行细化运算常用的算法是基于映射矩阵的查表法,基本原则是从源图像中去掉部分图像,但整体要保持原来的形状,实际上是保持原图的骨架。判断一个点P是否能去掉是以8个相邻点(八连通)的情况来作为判据,具体判据如下。(1)内部点不能删除(2)孤立点不能删除(3)直线端点不能删除(4)如果P是边界点,去掉P后,如果连通分量不增加,则P可删除在上图中,从上到下,自左至右,第一个图与第二个图的点不能去除,因为中心点是内部点;第三个图像的中心点也不能去除,因为去除后会使原来相连的部分断开;第四个图像的点可以去除,因为其满足判定依据;第五个图像与第六个图像不能删除,因为中心点皆为端点使用基本的形态学算法处理图像(4)细化细化运算的效果展示,如下图所示。图左侧为目标图像,右侧为结果图像,电路板上元件数目繁多,很难一眼看出线路大体纹理与元件大小分布,转为二值图像再细化之后,纹理与相对布局大小相对清晰。使用基本的形态学算法处理图像(5)粗化粗化是细化的形态学对偶,粗化的定义同样基于击中-击不中变换,粗化的定义如式(4-12)所示。

(4-12)

在右图中,自上到下、自左到右分别是:带有目标像素集合A的图像I;图像I的补集;对补集进行细化后的图像;对细化后的图像再求补集的图像;去除断点的最终结果。使用基本的形态学算法处理图像(5)粗化从图426中可以看出,粗化处理的过程可能会产生断点。所以在粗化处理获得结果前,需要进行断点的删除。对补集中前景像素目标集合的细化处理形成了粗化处理的边界。边界这一限制特性对于获得效果较为理想的粗化图像是有利的,但是边界不会在进行粗化处理时直接出现,因此可以对背景像素进行细化运算来实现原目标集合的粗化运算。对图像进行粗化运算的实现基于击中-击不中变换的二值图像补集操作,因此不再单独给出实现过程,并且现在更常使用膨胀运算对图像进行粗化,效果明显的同时效率更高。使用基本的形态学算法处理图像(5)骨架骨架可以理解为图像的中轴,如一个长方形的骨架是长方形上的中轴线;圆的骨架是圆的直径;直线的骨架是直线自身;孤立点的骨架也是自身。有效理解数字图像处理中骨架的方法主要有如下2种。基于烈火模拟的方法。设想在同一时刻,将目标的边缘线都“点燃”,火的前沿匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的集合就是骨架。这种方法有一定的局限性。基于最大圆盘的表述。目标图像的骨架是由目标内所有最大圆盘的圆心组成的,基于最大圆盘的骨架提取如下图所示。使用基本的形态学算法处理图像(5)骨架

(4‑13)

(4‑14)使用基本的形态学算法处理图像(5)骨架

(4‑15)

使用基本的形态学算法处理图像(5)骨架

使用基本的形态学算法处理图像(5)骨架1.对图像进行转灰度图像、转二值图像的预处理,获得阈值图像时,建议先分析图像的灰度直方图以选择合适的阈值。2.对图像进行开操作,即进行腐蚀运算与膨胀运算,因为进行开操作会导致某些像素被删除,这些被删除的像素其实是骨架的一部分。3.使用bitwise_or函数对二进制数据进行或运算。4.当腐蚀后的图像不存在前景像素时结束循环,得到目标图像的骨架。上图左侧为原图像右侧为结果图像。数字与字母部分清晰度提高。不足之处在于,当原始目标图像较模糊时,结构较复杂的中文在骨架提取上效果不理想。骨架提取后可以借助图像识别等其他技术去噪以获取更好的效果。使用基本的形态学算法处理图像(6)裁剪裁剪运算本质上是对细化和骨架提取运算的补充,因为细化和骨架提取过程可能会留下需要再次处理的成分。例如,在手写体字符的自动识别应用中,有一种基于提取每个字的骨架进行分析的方法,然而在提取的骨架中会有细小的突刺、断痕等影响图像的使用。使用裁剪则可以截去对图像有负面作用的“噪声”或不均匀区域。通过不断消除骨架中的分支端点达到想要的效果,在定义上可以理解为不断对集合A进行细化处理,定义如式(4-16)所示。

(4-16)在式(423)中,A是目标像素集合,B是裁剪运算使用的结构元。使用基本的形态学算法处理图像(6)裁剪裁剪过程使用的结构元集合{B}如左图所示。由图中可以看出,每种结构元都可以使除中心像素外的8个元素旋转90°,使每个结构元可以检测特定方向的某个端点。裁剪运算的过程如右图所示,对目标像素集合多次使用式(4-16),因为进行裁剪运算减少了部分原本应存在的像素集合,所得到的最终的结果如图右中第三排的阵列所示。使用基本的形态学算法处理图像(6)裁剪在Python环境中进行图像裁剪有两种方式,一种是基于Pillow库中的crop()方法的方式,另一种是基于Ope

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论