图像开运算和闭运算

1、原理

图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合操作(并、交、补等)组合成的运算构成。开运算与闭运算依据腐蚀和膨胀演变而来。

1)开运算:先对图像腐蚀后膨胀。

A○S= (AΘS)⊕ S

作用:用来消除小的物体,平滑形状边界,并且不改变其面积。可以去除小颗粒噪声,断开物体之间的粘连。

2)闭运算:先对图像膨胀后腐蚀

A●S= (A⊕S)Θ S

作用:用来填充物体内的小空洞,连接邻近的物体,连接断开的轮廓线,平滑其边界的同时不改变面积。

2、开运算的实现

imgPath = ‘E:\opencv_pic\src_pic\pic2.bmp‘;
img = imread(imgPath);
img=rgb2gray(img);
img = 255-img;

se = strel(‘square‘, 5);
img2 = imerode(img, se);
img3 = imdilate(img2, se);
subplot(1,3,1),imshow(img),title(‘原始图像‘);
subplot(1,3,2),imshow(img2),title(‘腐蚀后‘);
subplot(1,3,3),imshow(img3),title(‘膨胀后‘);

效果如下图。腐蚀消除了小的噪点,保留了最大的一个噪点,膨胀之后还原了噪点的形状。图像上,草莓蒂上的小花纹已经消失。

放大后观察,原图里有较大的斑点,6*5的方块(纵向缺1个点),腐蚀后只剩下1个点,膨胀后变为5*5的方块。

放大到像素级可见,腐蚀图上的点(32,110)在膨胀图里被还原为5*5的块。

使用imopen函数,效果相同。

3、闭运算的实现

imgPath = ‘E:\opencv_pic\src_pic\pic2.bmp‘;
img = imread(imgPath);
img=rgb2gray(img);
img = 255-img;

se = strel(‘square‘, 4);
img2 = imdilate(img, se);
img3 = imerode(img2, se);
subplot(1,3,1),imshow(img),title(‘原始图像‘);
subplot(1,3,2),imshow(img2),title(‘膨胀后‘);
subplot(1,3,3),imshow(img3),title(‘腐蚀后‘);

闭运算效果如下图。

放大后,图像左侧的噪点在膨胀过程被连在一起,体积增大很多。腐蚀后形状发生了一些改变,体积变小很多。

使用大小为15的结构元素,se = strel(‘square‘, 15);草莓中间的空心圈变为实心圈。膨胀过程中,空心被高亮白色填充,但是花瓣部分已经连接在一起形状发生了较大改变。再次腐蚀后,去掉了膨胀造成的粘连,花瓣部分大体形状恢复。

在matlab里,使用imclose函数也可以达到上面先膨胀后腐蚀的效果。

4、总结

单独对比开运算和闭运算,对比图如下。

开运算先腐蚀后膨胀,去除了小的黑点,方块边缘变得圆润了,也就是开运算对图像轮廓进行平滑。

而闭运算先膨胀后腐蚀,把中心比较大的块连接为一个整体,填补了空白的缝隙。

开运算能够除去孤立的小点,毛刺和小桥,而物体的形状轮廓基本不变。

闭运算与开运算相反,能够填平前景物体内的小裂缝、间断和小孔,而总的位置和形状不变。

结构元素大小的不同将导致滤波效果的不同。

不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

5、参考文献

1、形态学开运算闭运算

https://www.jianshu.com/p/2eae48a44f83

2、More Morphology Transformations

https://docs.opencv.org/2.4/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html#more-morphology-transformations

尊重原创技术文章,转载请注明。

https://www.cnblogs.com/pingwen/p/12240890.html

原文地址:https://www.cnblogs.com/pingwen/p/12240890.html

时间: 2024-10-20 16:26:49

图像开运算和闭运算的相关文章

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

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

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

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

形态学滤波:(1)腐蚀与膨胀 (2)开运算,闭运算,形态学梯度,顶帽,黑帽

一.形态学概述 图像处理中的形态学一般指的是数学形态学. 数学形态学是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论.其基本运算包括:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度等. 简单来讲,形态学操作就是基于形状的一系列图像处理操作. 二.形态学滤波 (1)腐蚀与膨胀 膨胀和腐蚀能实现多种多样的功能,主要如下: 消除噪声: 分割(isolate)

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

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

图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算

一.RGB RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值.RGB图像仅仅使用三种颜色,R(red).G(green).B(blue),就能够使它们依照不同的比例混合,在屏幕上呈现16777216(256 * 256 * 256)种颜色. 在电脑中,RGB的所谓"多少"就是指亮度,并使用整数来表示.通常情况下,RGB各有256级亮度,用数字表示为从0.1.2...直到255. 二.ARGB 一种色彩模式,也就是RGB色彩模式附加上Alpha(透

Qt 5.3 下OpenCV 2.4.11 开发(14)开运算与闭运算

代码如下: #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { Mat src = imread("lena.jpg", 0); Mat dst, c

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.

【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

1.思考问题 在某张表中,存在一个id列(整数),用户希望在添加记录的时候,该列从1开始,自动的增长,如何处理? 2.介绍 Oracle通过序列处理自动增长列. (1) 可以为表中的列自动产生值 (2) 由用户创建数据库对象,并可由多个用户共享. (3) 一般用于主键或唯一列 (4) 序列也是一种数据对象 3.定义序列 2  格式: Create sequence 序列名 [Start with n1] [Increment by n2] [Minvalue n3 | nominvalue] [

机器学习进阶-图像形态学变化-礼帽与黑帽 1.cv2.TOPHAT(礼帽-原始图片-开运算后图片) 2.cv2.BLACKHAT(黑帽 闭运算-原始图片)

1.op = cv2.TOPHAT  礼帽:原始图片-开运算后的图片 2. op=cv2.BLACKHAT 黑帽: 闭运算后的图片-原始图片 礼帽:表示的是原始图像-开运算(先腐蚀再膨胀)以后的图像 黑帽:表示的是闭运算(先膨胀再腐蚀)后的图像 - 原始图像 代码: 第一步:读取图片 第二步:使用cv2.MOPRH_TOPHAT获得礼帽图片 第三步:使用cv2.MOPRH_BLACKHAT获得黑帽图片 import cv2 import numpy as np # 第一步读入当前图片 img =