opencv形态学操作之开运算、闭运算

原图:

开运算:

先腐蚀后膨胀叫开运算(因为先腐蚀会分开物体,这样容易记住),其作用是:分离物体,消除小区域。这类形态学操作用cv2.morphologyEx()函数实现:

下面两份代码分别对应通过先腐蚀后膨胀的效果 和 直接通过开运算的效果

import cv2
import numpy as np

img = cv2.imread("zw.jpg", 0)
kernel = np.ones((3, 3), np.uint8)
kerne2 = np.ones((5, 5), np.uint8)
erodtion = cv2.erode(img, kernel, iterations=2)
dilation = cv2.dilate(erodtion, kerne2, iterations=1)
import cv2
import numpy as np

img = cv2.imread("zw.jpg", 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))  # 矩形结构
open = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

可以看到两者差别不大。

闭运算

先膨胀后腐蚀(先膨胀会使白色的部分扩张,以至于消除/"闭合"物体里面的小黑洞,所以叫闭运算)

import cv2
import numpy as np

img = cv2.imread("zw.jpg", 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))  # 矩形结构
open = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=2)

可以看出左侧原图中的黑点,通过闭运算后被填充掉了

原文地址:https://www.cnblogs.com/answerThe/p/11451619.html

时间: 2024-10-15 02:09:38

opencv形态学操作之开运算、闭运算的相关文章

cvMorphologyEx 形态学操作:开闭运算,形态学梯度,礼帽和黑帽

1.开运算:CV_MOP_OPEN,先腐蚀(cvErode)再膨胀(cvDilate),去除亮点,可以将做了阀值化细胞图像的细胞分开 2.闭运算:CV_MOP_CLOSE,先膨胀(cvDilate)再cvErode,去除暗点 3.形态学梯度:cvDilate-cvErode,用于求边界 4.礼帽:src-开运算,突出亮点 5.黑帽:闭运算-src,突出暗点 程序: 代码: #include "cv.h" #include "cxcore.h" #include &q

paper 76:膨胀、腐蚀、开、闭运算——数字图像处理中的形态学

膨胀.腐蚀.开.闭运算是数学形态学最基本的变换.本文主要针对二值图像的形态学膨胀:把二值图像各1像素连接成分的边界扩大一层(填充边缘或0像素内部的孔):腐蚀:把二值图像各1像素连接成分的边界点去掉从而缩小一层(可提取骨干信息,去掉毛刺,去掉孤立的0像素):开:先腐蚀再膨胀,可以去掉目标外的孤立点闭:先膨胀再腐蚀,可以去掉目标内的孔.以下参考论文:<数学形态学在图像处理中的应用> 二值形态学        数学形态学中二值图像的形态变换是一种针对集合的处理过程.其形态算子的实质是表达物体或形状的

OPENCV形态学操作1

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

opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)

一.形态学其他操作(用的不多,如果忘了也可以通过膨胀腐蚀得到相同效果) 1.开运算 2.闭运算 3.形态学梯度 4.顶帽 5.黑帽 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 Mat srcImg = imread("E://1.jpg"); 7 Mat dstImg; 8 Mat element = getStructuringElement(MORPH_R

opencv 形态学操作应用-提取水平与垂直线

adaptiveThreshold(~gray_src, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2); #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; int main(int argc, char** argv) { Mat src, dst; src = imread("E:/opencv3.2/Tes

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

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

图像开运算和闭运算

1.原理 图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合操作(并.交.补等)组合成的运算构成.开运算与闭运算依据腐蚀和膨胀演变而来. 1)开运算:先对图像腐蚀后膨胀. A○S= (AΘS)⊕ S 作用:用来消除小的物体,平滑形状边界,并且不改变其面积.可以去除小颗粒噪声,断开物体之间的粘连. 2)闭运算:先对图像膨胀后腐蚀 A●S= (A⊕S)Θ S 作用:用来填充物体内的小空洞,连接邻近的物体,连接断开的轮廓线,平滑其边界的同时不改变面积. 2.开运算的实现 imgP

【数字图像处理】图像开运算与闭运算

图像开启与闭合 图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合操作(并.交.补等)组合成的所以运算构成. 开运算与闭运算依据腐蚀和膨胀的不可逆性,演变而来.开运算:先对图像腐蚀后膨胀闭运算:先对图像膨胀后腐蚀注意:使用同一个结构元素. 图像开运算 开运算:能够去除孤立的小点.毛刺和小桥(即连通两块区域的小点),消除小物体.平滑较大物体的边界,同时并不明显改变其面积.不过这一恢复不是信息无损的,即它们通常不等于原始图像. 开运算的效果图如下图所示: 开运算总结: (1)开

opencv学习记录之形态学操作

腐蚀和膨胀是形态学运算的基础,将腐蚀和膨胀进行组合运算,通过不同的组合可以实现不同的效果,需要自行开发则可以实现开运算,闭运算,形态学梯度运算,礼帽运算 黑帽运算,击中击不中运算等不同形式的运算 函数形式 dst = cv2.morphologyEx( src , op , kernel [ , anchor [ , interations [, borderType [ , borderValue]]]]) dst 形态学操作之后的图像,与原图像类型大小相同 src需要操作的图像,与之腐蚀和膨