3.形态学

#导入工具包

from imutils import *

Erosion腐蚀
其原理是在原图的小区域内取局部最小值,其函数是cv2.erode()。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如:

# 矩形
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
print(kernel1)
[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
# 椭圆
kernel2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))
print(kernel2)
[[0 0 1 0 0]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [0 0 1 0 0]]
# 十字形
kernel3 = cv2.getStructuringElement(cv2.MORPH_CROSS, (5,5))
print(kernel3)
image = imread(‘image.jpg‘)
show(image)

1 erosion = cv2.erode(image, kernel1)
2 show(erosion)

1 for i in range(3):
2     erosion = cv2.erode(image, kernel1, iterations=i+1)
3     show(erosion)

Dilation膨胀
膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()

1 dilation = cv2.dilate(image, kernel)
2 show(dilation)

1 for i in range(3):
2     dilation = cv2.dilate(image, kernel1, iterations=i+1)
3     show(dilation)

Opening开运算

先腐蚀后膨胀叫开运算,其作用是消除小白点。这类形态学操作用cv2.morphologyEx()函数实现

#读入图片

1 image2 = imread(‘image2.jpg‘)
2 show(image2)

1 # 去除白点
2 opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
3 show(opening)

Closing闭运算
闭运算则相反:先膨胀后腐蚀。其作用是消除小黑点。

1 # 去除黑点
2 closing = cv2.morphologyEx(image2, cv2.MORPH_CLOSE, kernel1)
3 show(closing)

# 先开运算再闭运算

1 opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
2 closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel1)
3 show(closing)

Gradient形态学梯度
膨胀图减去腐蚀图,dilation - erosion,得到物体的轮廓

gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel1)
show(gradient)

Top Hat顶帽/White Hat白帽
原图减去开运算后的图:src - opening

1 tophat = cv2.morphologyEx(image2, cv2.MORPH_TOPHAT, kernel1)
2 show(tophat)

Black Hat黑帽
闭运算后的图减去原图:closing - src

1 blackhat = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel1)
2 show(blackhat)

 

原文地址:https://www.cnblogs.com/liuwenhua/p/11506398.html

时间: 2024-11-04 03:08:52

3.形态学的相关文章

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh

学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算.形态学梯度."顶帽"."黑帽"等等. 第二件事,是浅墨想跟大家做一个关于OpenCV系列文章的书写内容和风格的思想汇报. 是这样的,浅墨发现最近几期写出来的文章有些偏离自己开始开这个专栏的最初的愿望--原理和概念部分占的

形态学操作实现

数学形态学的基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的.数学形态学的基本运算有四个:腐蚀.膨胀.开和闭.基于这些基本运算还可以推导和组合成各种数学形态学实用算法.本实验分别实现针对二值图像和灰度图像的四种形态学操作. 一.二值图像的腐蚀.膨胀.开.闭操作 实验结果: 二.灰度图像的腐蚀.膨胀.开.闭操作 实验结果: 代码:(下载链接) %本实验完成对二值图像和灰度图像的腐蚀.膨胀.开.闭操作 close all; clear all; grayI

图像形态学及更通用的形态学的原理及细节

在试图找到连通分支(具有相似颜色或强度的像素点的大块互相分离的区域)时通常使用膨胀操作.因为在大多数情况下一个大的区域可能被噪声.阴影等类似的东西分割成多个部分,而一次轻微的膨胀又将使这些部分“融合”在一起 如果图像不是二值的,那么膨胀和腐蚀起到的作用不是很明显.在处理灰度和彩色图像时,更通用的cvMorphologyEx可提供更有用的操作. 平滑处理与膨胀腐蚀用的核不同,分别是卷积核与形态核,形态核不需要任何的数值填充核,第132页讲高斯滤波器的时候提到高斯卷积核 开运算先腐蚀后膨胀,可以用来

OpenCV2学习笔记(三):形态学及边缘角点检测

形态学滤波理论于上世纪90年代提出,目前被广泛用于分析及处理离散图像.其基本运算有4个: 膨胀.腐蚀.开启和闭合, 它们在二值图像和灰度图像中各有特点.基于这些基本运算还可推导和组合成各种数学形态学实用算法,用它们可以进行图像形状和结构的分析及处理,包括图像分割.特征抽取.边缘检测. 图像滤波.图像增强和恢复等.数学形态学方法利用一个称作结构元素的"探针"收集图像的信息,当探针在图像中不断移动时, 便可考察图像各个部分之间的相互关系,从而了解图像的结构特征.数学形态学基于探测的思想,与

形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽

一.开运算 开运算,就是先腐蚀后膨胀的过程 数学表达式: dst = open(src,element) = dilate(erode(src, element)) 开运算可以用来消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积. 二.闭运算 闭运算,就是先膨胀后腐蚀的过程 数学表达式: dst = open(src,element) = erode(dilate(src, element)) 闭运算可以用来排除小型黑洞(黑色区域) 三.形态学梯度 形态学梯度,就是

学习 opencv---(9)形态学图像处理(一):膨胀和腐蚀

本篇文章中,我们一起探究了图像处理中,最基本的形态学运算--膨胀与腐蚀.浅墨在文章开头友情提醒,用人物照片做腐蚀和膨胀的素材图片得到的效果会比较惊悚,毁三观的,不建议尝试.......... 一.理论与概念讲解--从现象到本质 1.1 形态学概述 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构,而我们图像处理中指的形态学,往往表示的是数学形态学,下面一起来了解数学形态学的概念. 数学形态学(Mathematical morphology)是一门建立在

Atitit 图像处理—图像形态学(膨胀与腐蚀)

Atitit 图像处理-图像形态学(膨胀与腐蚀) 1.1. 膨胀与腐蚀1 1.2. 图像处理之二值膨胀及应用2 1.3. 测试原理,可以给一个5*5pic,测试膨胀算法5 1.4. Photoshop里面的处理5 1.5. 类库的处理,好像没找到jhlabs,6 1.6. Attilax 源码6 1.1. 膨胀与腐蚀 说概念可能很难解释,我们来看图,首先是原图: 膨胀以后会变成这样: 腐蚀以后则会变成这样: 看起来可能有些莫名其妙,明明是膨胀,为什么字反而变细了,而明明是腐蚀,为什么字反而变粗了

OPENCV形态学操作1

形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是针对于图像中较亮的区域而言的,膨胀就是亮的区域变多了,而腐蚀就是暗的区域变多了. 膨胀的功能主要有消除噪声,分割出独立的图像元素,在图像操作的时候,有时候需要对图像中的某些形状进行检测,而这些形状相互连接在一起,不好分开检测,膨胀就能切开这些形状(很小的连接位置),或者图像中有很小块的黑斑,或许是相

形态学图像处理

一.C语言简介程序语句分类 1. 循环: while(表达式) 语句 \\当while()内的表达式为真时,循环执行{}内的语句,直到while()内的表达式为假.跳出循环. do...while语句\\先执行do{}中的语句然后判断while()中的表达式 for语句,for(表达式1;表达式2;表达式3) \\先执行表达式1,然后执行表达式2,如果表达式2的值为真.那么执行{}内的语句,执行完毕后在执行表达式 用break语句提前终止循环 用continue语句结束本次循环 2.选择判断 i