- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能图像处理:Python和OpenCV实现课件
第八章 图像数学形态学;数学形态学(mathematical morphology)诞生于1964年,基本思想是用具有一定形态的结构元素(SE,structural element)或内核去量度和提取数字图像中的对应形状,以实现对图像进行分析和识别的目的。
形态学分析是一门建立在集合论基础上的学科,它是几何形态分析和描述的有力工具,是一种新的图像处理与分析方法。
数学形态学的基本思想也适应于图像处理的很多方面,包括图像增强、边缘检测、图像分割、特征提取、图像复原、文字识别、医学图像处理、图像压缩,以及机器视???等众多领域。
在工农业生产中,视觉零部件检测、产品质量检测、食品安全检测、生物医学图像分析和纹理分析等方面,数学形态学取得了非常成功的应用,创造了较好的经济效益和社会效益。
;数学形态学是基于图像形状的操作,主要针对的是二值图像,最基本的操作是腐蚀和膨胀,其他如开运算、闭运算、高帽运算、黑帽运算等都是在腐蚀和膨胀操作的基础上进行的。
膨胀是对图像中的高亮部分进行膨胀,类似于领域扩张,结果拥有比原图更大的高亮区域;
腐蚀是对原图的高亮部分腐蚀,类似于领域被蚕食,结果拥有比原图更小的高亮区域。
从数学的角度来说,膨胀和腐蚀操作就是将图像与核进行卷积,核可以是任意形状和大小的。核大则周围对其影响大,变化大;核小则周围对其影响小,变化小。
;8.1 结构元素(卷积核);8.1.1 OpenCV生成结构元素;【例8.1】使用cv2.getStructuringElement()函数生成结构元素,程序代码如下:;8.1.2 Numpy 生成结构元素;8.2 腐蚀;8.2.1 OpenCV中的腐蚀操作;【例8.3】使用cv2.erode()函数实现二值图像的腐蚀运算。程序代码如下:;8.2.2 skimage 中的腐蚀函数;【例8.4】使用skimage库函数实现图像的腐蚀运算,程序代码如下:;8.3 膨胀;8.3.1 OpenCV 中的膨胀函数;【例8.5】使用cv2.dilate ()函数实现图像的膨胀运算,程序代码如下:;8.3.2 skimage中的膨胀函数;【例8.6】使用skimage库函数实现图像的膨胀运算,程序代码如下:;可见卷积核的大小,对膨胀结果的影响非常大。一般设置为奇数,除了正方形的卷积核外,卷积核的形状还有其他矩形、球形等,如表8-3所示:
;8.3.3 OpenCV形态学处理原型函数;? kernel:结构元素;
? anchor:用kernel锚定位置。负值意味着anchor位于核心中心;
? iterations:腐蚀和膨胀的次数;
? borderType:像素边缘处理方法;
? borderValue:边界不变的边界值。
开运算和闭运算均是腐蚀和膨胀的组合,而高帽变换和黑底帽变换 是分别以开运算和闭运算为基础的。这四个操作都可直接使用OpenCV提供的上述函数来完成。
;8.4 开运算;8.4.1 OpenCV中的开运算函数;8.4.2 skimage中的开运算函数;【例8.8】使用skimage.morphology.openning()函数进行开运算,程序代码如下:;8.5 闭运算(closing);8.5.1 OpenCV中的闭运算;8.5.2 skimage中的闭运算;【例8.10】使用skimage.morphology.closing()函数进行闭运算,程序代码如下:;8.6 高帽(tophat)运算;8.6.1 Opencv中的高帽运算;8.6.2 skimage中的高帽运算;8.7黑帽(blackhat)运算;8.7.1 OpenCV中的黑帽运算;8.7.2 skimage中的黑帽运算;8.8 形态学梯度;可以计算的梯度常见如下四种:;【例8.15】使用cv2.morphologyEx()函数实现形态学基本梯度、内部梯度、外部梯度、X方向与Y方向梯度运算,卷积核为3×3。程序代码如下:;def gradient_X(image):
kernel_x = np.array([[0,0,0],[1,1,1],[0,0,0]], dtype=np.uint8)
dmx = cv2.dilate(image, kernel_x)
emx = cv2.erode(image, kernel_x)
dstx = cv2.subtract(dmx, emx) # X方向梯度
cv2.imshow(X-direction, dstx)
?
def gradient_Y(image):
kernel_y = np.array([[0,1,0],[0,1,0],[0,1,0]], dtype=np.uint8)
dmy = cv2.dil
您可能关注的文档
- 工程管理学 01工程概述.pptx
- 工程管理学 02工程管理概述.pptx
- 工程管理学 03工程决策.pptx
- 工程管理学 04工程设计.pptx
- 工程管理学 05工程施工.ppt
- 工程管理学 06工程验收.ppt
- 工程管理学 07工程招投标.ppt
- 工程管理学 08工程投资.ppt
- 工程管理学 09工程融资.ppt
- 工程管理学 10工程经济评估.pptx
- 智能图像处理:Python和OpenCV实现 课件 第二章 数字图像的获取和基本运算.pptx
- 智能图像处理:Python和OpenCV实现第九章 边缘检测.pptx
- 智能图像处理:Python和OpenCV实现第九章 边缘检测1.pptx
- 智能图像处理:Python和OpenCV实现第六章 图像频域滤波.pptx
- 智能图像处理:Python和OpenCV实现第七章 图像退化和复原.pptx
- 智能图像处理:Python和OpenCV实现第三章 数字图像的几何运算.pptx
- 智能图像处理:Python和OpenCV实现第十二章 图像特征的提取与分析.pptx
- 智能图像处理:Python和OpenCV实现第十二章 图像特征的提取与分析1.pptx
- 智能图像处理:Python和OpenCV实现第十一章 彩色图像处理.pptx
- 智能图像处理:Python和OpenCV实现第十章 图像分割.pptx
文档评论(0)