精华内容
下载资源
问答
  • 对图像进行开运算
    千次阅读
    2021-04-19 04:37:18

    图像开启与闭合

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

    开运算与闭运算依据腐蚀和膨胀的不可逆性,演变而来。

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

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

    注意:使用同一个结构元素。

    图像开运算

    开运算:能够去除孤立的小点、毛刺和小桥(即连通两块区域的小点),消除小物体、平滑较大物体的边界,同时并不明显改变其面积。

    不过这一恢复不是信息无损的,即它们通常不等于原始图像。

    开运算的效果图如下图所示:

    a070ca61c5fdb46021988d3aa7248304.png

    开运算总结:

    (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。

    (2)开运算是一个基于几何运算的滤波器。

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

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

    图像闭运算

    闭运算:先膨胀运算,再腐蚀运算(看上去将两个细微连接的图块封闭在一起)

    闭运算的效果图如下图所示:

    12af3c50b19971661484bdbe436e9032.png

    闭运算总结:

    (1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。

    (2)闭运算是通过填充图像的凹角来滤波图像的。

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

    (4)不同结构元素的选择导致了不同的分割。

    refer:

    更多相关内容
  • 对图像进行开运算和闭运算操作,简单验证开运算和闭运算功能
  • OpenCV图像处理--开运算和闭运算

    千次阅读 2021-10-09 23:50:17
    开运算:先腐蚀,在膨胀 闭运算:先膨胀,在腐蚀

    开运算:先腐蚀,在膨胀
    闭运算:先膨胀,在腐蚀

    我们在膨胀和腐蚀的图片中可以看到,图片大小程度上都受到了损失,字体信息缺失或者变粗等等。如果我们不想更改原有信息,即字体粗细。那么我们可以使用上面的两种运算。例如开运算,先对字体进行变细,在对字体进行变粗,整体上字体粗细不会发生变化。毛刺信息在腐蚀的时候就已经消除了,膨胀也不会膨胀出多余信息。

    闭操作:消除黑色的小块,填充闭合区域
    数学表达式为:

    dst = close(src, element) = erode(dilate(src, element))

    例子:

        Mat src = imread("/home/wangcf/Qtprojects/qtopencvandeasypr/hai.png");
        imshow("src",src);
        Mat gray;
        cvtColor(src, gray, CV_BGR2GRAY);
       // imshow("gray",gray);
        Mat BINARY;
     threshold(gray,BINARY,25,255,CV_THRESH_BINARY);
        imshow("threshold",BINARY);
        Mat element;
         element = getStructuringElement(MORPH_RECT, Size(15, 15));
         Mat dstImage;
     //    第一种实现方法
         morphologyEx(BINARY, dstImage, MORPH_CLOSE, element);
     //    第二种实现方法
     //    dilate(BINARY, dstImage, element);
     //    erode(dstImage, dstImage, element);
         imshow("CLOSE",dstImage);
        waitKey();
    

    效果:
    在这里插入图片描述
    开操作:消除白色的小点,去除小的干扰块
    数学表达式为:

    dst = open(src, element) = dilate(erode(src, element))
    在这里插入图片描述

    展开全文
  • 掌握二值图像的腐蚀、膨胀、开运算、闭运算等常见的形态学方法python,用jupyterlab 文件写的
  • 1 图像开运算(先腐蚀,后膨胀) 1.1 基本原理 1.2 代码示例 2 图像运算(先膨胀,后腐蚀) 2.1 基本原理 2.2 代码示例 3 图像梯度运算(膨胀—腐蚀) 3.1 基本原理 3.2 代码示例 参考资料 前面介绍了 形态学...

    目录

    1 图像开运算(先腐蚀,后膨胀)

    1.1 基本原理

    1.2 代码示例

    2 图像闭运算(先膨胀,后腐蚀)

    2.1 基本原理

    2.2 代码示例

    3 图像梯度运算(膨胀 — 腐蚀)

    3.1 基本原理

    3.2 代码示例

    参考资料


    前面介绍了 形态学处理——图像腐蚀与图像膨胀,图像膨胀会扩大一幅图像的组成部分,而图像腐蚀会缩小一幅图像的组成部分。下面将继续介绍形态学处理中的开操作和闭操作。

    开操作一般会平滑物体的轮廓、断开较窄的狭颈并消除细的突出物。

    闭操作同样也会平滑轮廓的一部分。但与开操作相反,它通常会弥合较窄的间断和细长的沟壑,消除小的孔洞,填补轮廓线中的断裂。

     

    1 图像开运算(先腐蚀,后膨胀)

    1.1 基本原理

    图像开运算是图像依次经过腐蚀、膨胀处理后的过程。图像被腐蚀后,去除了噪声,但是也压缩了图像;接着对腐蚀过的图像进行膨胀处理,可以去除噪声,并保留原有图像。如下图所示:

    开运算:先腐蚀,后膨胀

     

    下图借鉴是一篇博客写的开运算效果图:

     

    1.2 代码示例

    图像开运算使用函数 morphologyEx() ,它是形态学扩展的一组函数,其参数cv2.MORPH_OPEN对应开运算

    morphologyEx() 函数形式如下:

    dst = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)

    其中,参数:

    dst 表示处理的结果;

    src 表示原始图像;

    cv2.MORPH_OPEN 表示开运算;

    kernel 表示卷积核。

    例如下图表示 5\times5 的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。

     

    (1)卷积核大小为5\times

    代码如下所示:

    #encoding:utf-8
    import cv2
    import numpy as np
    
    #读取图片
    src = cv2.imread('test3.bmp', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核
    kernel = np.ones((5,5), np.uint8)
    
    #图像开运算
    result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

    由上面结果可以看到,仍然有噪声存在,可以将增大卷积核的大小。

     

    (2)卷积核大小为25\times25 

    代码如下所示:

    #encoding:utf-8
    import cv2
    import numpy as np
    
    #读取图片
    src = cv2.imread('test3.bmp', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核
    kernel = np.ones((25,25), np.uint8)
    
    #图像开运算
    result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

     

    运行结果如下图所示:

     


     

    2 图像闭运算(先膨胀,后腐蚀)

    2.1 基本原理

    图像闭运算是图像依次经过膨胀、腐蚀处理后的过程。图像先膨胀,后腐蚀,它有助于关闭前景物体内部的小孔,或物体上的小黑点。如下图所示:

    闭运算:先膨胀,后腐蚀

     

    下图借鉴是一篇博客写的开运算效果图:

     

     

    2.2 代码示例

    图像闭运算使用函数 morphologyEx() , 它是形态学扩展的一组函数,其参数 cv2.MORPH_CLOSE 对应闭运算

    morphologyEx() 函数形式如下:

    dst = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)

    其中,参数:

    dst 表示处理的结果;

    src 表示原图像;

    cv2.MORPH_CLOSE 表示闭运算;

    kernel表示卷积核。

    例如,下图表示 5\times5 的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。

     

    (1)卷积核大小为 5\times

    代码如下所示:

    #encoding:utf-8
    import cv2
    import numpy as np
    
    #读取图片
    src = cv2.imread('test4.bmp', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核
    kernel = np.ones((5,5), np.uint8)
    
    #图像闭运算
    result = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

    由上面结果可以看到,噪声仍有一处存在,可以将增大卷积核的大小。

     

    (2)卷积核大小为 7\times

    代码如下所示:

    #encoding:utf-8
    import cv2
    import numpy as np
    
    #读取图片
    src = cv2.imread('test4.bmp', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核
    kernel = np.ones((7,7), np.uint8)
    
    #图像闭运算
    result = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

     


     

    3 图像梯度运算(膨胀 — 腐蚀)

    3.1 基本原理

    图像梯度运算是膨胀图像减去腐蚀图像的结果,得到图像的轮廓,其中二值图像1表示白色点,0表示黑色点。 如下图所示:

    梯度运算:膨胀图像 — 腐蚀图像

     

    3.2 代码示例

    图像梯度运算使用的函数 morphologyEx(),其参数 cv2.MORPH_GRADIENT 对应 梯度运算

    morphologyEx() 函数形式如下:

    dst = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)

    其中,参数:

    dst表示处理的结果;,

    src表示原图像;,

    cv2.MORPH_GRADIENT表示梯度运算;,

    kernel表示卷积核。

    例如,下图表示 5\times5 的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。

     

    代码如下所示:

    #encoding:utf-8
    import cv2
    import numpy as np
    
    #读取图片
    src = cv2.imread('test4.bmp', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核
    kernel = np.ones((7,7), np.uint8)
    
    #图像闭运算
    result = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

     


     

    参考资料

    [1] https://blog.csdn.net/Eastmount/article/details/83651172

    [2] https://blog.csdn.net/hanshanbuleng/article/details/80657148

    [3] Python+OpenCV图像处理

    展开全文
  • 图像开运算和闭运算

    千次阅读 2020-12-10 05:27:45
    如果您觉得本文不错,帮忙点赞哦...图解图像开运算与闭运算 ↑为什么有了膨胀、腐蚀还要开运算运算呢?其实运算最重要的一点就是,可以保持物体原有大小。然后一个是消除物体外部噪声(开运算)的另一个是增强物...

    如果您觉得本文不错,帮忙点赞哦!

    一. 图像形态学处理 —— 膨胀和腐蚀

    图解图像腐蚀和膨胀 ↑

    二. 开运算与闭运算:

    开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声)。

    闭运算:先膨胀后腐蚀,能够消除图像区域内的小黑点(噪声)。

    图解图像开运算与闭运算 ↑

    为什么有了膨胀、腐蚀还要开运算闭运算呢?其实开闭运算最重要的一点就是,可以保持物体原有大小。然后一个是消除物体外部噪声(开运算)的另一个是增强物体之间连接点(闭运算)的。

    三. python实现开运算和闭运算:

    # Writer : wojianxinygcl@163.com

    # Date   : 2020.3.21

    import numpy as np

    # Morphology Dilate

    def Morphology_Dilate(img, Dil_time=1):

    H, W = img.shape

    # kernel

    MF = np.array(((0, 1, 0),

    (1, 0, 1),

    (0, 1, 0)), dtype=np.int)

    # each dilate time

    out = img.copy()

    for i in range(Dil_time):

    tmp = np.pad(out, (1, 1), 'edge')

    for y in range(1, H):

    for x in range(1, W):

    if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) >= 255:

    out[y, x] = 255

    return out

    # Morphology Erode

    def Morphology_Erode(img, Erode_time=1):

    H, W = img.shape

    out = img.copy()

    # kernel

    MF = np.array(((0, 1, 0),

    (1, 0, 1),

    (0, 1, 0)), dtype=np.int)

    # each erode

    for i in range(Erode_time):

    tmp = np.pad(out, (1, 1), 'edge')

    # erode

    for y in range(1, H):

    for x in range(1, W):

    if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) < 255*4:

    out[y, x] = 0

    return out

    # Morphology Closing

    def Morphology_Closing(img, time=1):

    out = Morphology_Dilate(img, Dil_time=time)

    out = Morphology_Erode(out, Erode_time=time)

    return out

    # Opening morphology

    def Morphology_Opening(img, time=1):

    out = Morphology_Erode(img, Erode_time=time)

    out = Morphology_Dilate(out, Dil_time=time)

    return out

    四. 开闭运算的效果:

    原图(左)、开运算(中)、闭运算(右) ↑

    可以看到,图像开运算,消除了图像外部的噪声,图像闭运算,连通了更多的图像区域。

    五. 参考内容:

    六. 版权声明:

    未经作者允许,请勿随意转载抄袭,抄袭情节严重者,作者将考虑追究其法律责任,创作不易,感谢您的理解和配合!

    展开全文
  • MatLab程序。 C++实现。 实现二值图像进行腐蚀、膨胀、/闭运算。 腐蚀分水平、垂直、全方位。 膨胀分水平、垂直、全方位。 能保存处理后的图,以及将处理后的图与原图进行对比。
  • 第二部分将讲解图像运算和图像增强,上一篇文章介绍图像腐蚀处理和膨胀处理。这篇文章将继续介绍运算、闭运算和梯度运算。数学形态学(Mathematical Morphology)是一种应用于图像处理和模式识别领域的新方法。...
  • 改进分水岭方法定位虹膜,采用形态学闭重建运算对图像进行滤波,进行前后景标记,从而进行分割图像
  • 如果您觉得本文不错,帮忙点赞哦! 一. 图像形态学处理 —— 膨胀和腐蚀 图解图像腐蚀和膨胀 ↑ 二. 开运算与闭运算: ... 开运算:先腐蚀后膨胀,能够消除... 图解图像开运算与闭运算 ↑ 为什么有了膨胀、腐蚀...
  • 图像腐蚀:将图像变小,去除...拓展知识:个人认为在进行连通域识别前,应该先进性操作,即通过先腐蚀后膨胀,去除图片中的噪点,因为噪点的存在会直接导致图片连通域识别个数错误。而图片中的孔洞,连通域识别的
  • 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作 图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要...
  • 二值图像处理开运算

    千次阅读 2017-05-29 22:17:31
    应用背景:在二值形态学图像处理中,除了腐蚀和膨胀这两种一次运算外,还有二次运算操作,开运算就是其中一种。
  • 本文简单介绍了形态变换中的开运算和闭运算开运算和闭运算是形态学中最为重要的两个组合运算,这两个运算是不同形状不同大小的核对图像变换的影响比较大,开运算有助于断开一些图像间的细小连接或背景上的一些图像...
  • 开运算和闭运算的异同

    千次阅读 2019-05-04 09:00:40
    策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域。 1 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg') 2 binary_threshold (Tu, Region, 'max...
  • 二值图像开运算

    2011-11-23 18:47:54
    二值图像进行开运算,先膨胀后腐蚀,可以对图像尤其是字体太细的部分进行丰富,使图像效果更明显。用在汉字识别里的预处理
  • 形态学滤波:灰度图像进行开运算与闭运算。一、c++示例代码//包含头文件 #include &lt;opencv2/opencv.hpp&gt; //命名空间 using namespace cv; using namespace std; //全局函数声明部分 //主函数 int ...
  • 形态学滤波:二值图像进行开运算与闭运算。morphologyEx()函数可以实现形态学处理的很多运算,慢慢来~一、c++示例代码//包含头文件 #include &lt;opencv2/opencv.hpp&gt; //命名空间 using namespace cv; ...
  • 前文传送门: ...「Python 图像处理 OpenCV (4):图像算数运算以及修改颜色空间」 「Python 图像处理 OpenCV (5):图像的几何变换」 「Python 图像处理 OpenCV (6):图像的阈值处理」 「Python .
  • 接着腐蚀过的图像进行膨胀处理,可以去除噪声,并保留原有图像(前景恢复,但是去除了噪声)。 如上图所示,先经过腐蚀,再膨胀,原图的内容不变,但是噪点都被去除了。 2 图像运算(先膨胀,后腐蚀) 图像闭...
  • 本文详细介绍了图像处理的算术运算与逻辑运算,包括图像加法、图像减法、图像运算图像运算图像运算图像异或运算
  • 一、开运算 开运算(opening) 的实质是对图像进行腐蚀(erode) 然后进行膨胀(dilate),相当于将两个图像处理技术封装在了一起,接着往下看吧。 1.1 原始图像 (原始图像是带有噪点的数字图像,怎么去除这些噪点呢...
  • python 图像开运算

    千次阅读 2017-11-07 21:54:35
    开运算和闭运算就是将腐蚀和膨胀按照一定的次序进行处理。但这两者并不是可逆的,即先后闭并不能得到原先的图像。 闭运算用来连接被误分为许多小块的对象,而开运算用于移除由图像噪音形成的斑点。 闭运算操作...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解...本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像开运算图像运算和梯度运算,基础性知识希望您有所帮助,如果有不足之处,还请海涵~
  • 图像形态学之开运算和闭运算

    万次阅读 2018-03-03 16:44:49
    开运算相当于对图像进行腐蚀运算进行膨胀运算,可以消除离散点和"毛刺",可以将两个物体分开。 闭运算相当于对图像进行膨胀运算进行腐蚀运行,可以填充图像的内部孔洞和图像的凹角点,可以把两个...
  • 形态学应用——图像开运算与闭运算

    万次阅读 多人点赞 2018-06-11 20:16:42
    开运算 = 先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 开运算的效果图如下图所示: 开运算总结: (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。 (2)开运算是一...
  • 今天介绍图像的逻辑运算实践。单看课本知识,不去动手,难以体会到视觉效果的冲击感。本内容参考自《实用MATLAB图像和视频处理》第6章。
  • 【Matlab 图像运算 imopen imclose

    千次阅读 2020-11-16 19:30:36
    %函数imopen和imclose的应用 f=imread('liantongyu.png');...subplot(2,2,2),imshow(fo),title('开运算后的图像') fc=imclose(f,se);%闭运算 subplot(2,2,3),imshow(fc),title('闭运算后的图像') foc=imclose
  • OpenCV之图像开运算(C++实现)

    千次阅读 2020-12-19 16:15:28
    开运算,其实就是先腐蚀后膨胀的过程,其数学表达式为: ...实现图像开运算有两种方法,如下代码示例: #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #i

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 197,410
精华内容 78,964
关键字:

对图像进行开运算