zoukankan      html  css  js  c++  java
  • OpenCV3编程入门读书笔记4-形态学滤波

    一、腐蚀和膨胀

    1、腐蚀和膨胀的主要功能

    (1)消除噪声

    (2)分割出独立的图像元素,在图像中连接相邻的元素

    (3)寻找图像中的极大值或者极小值区域

    (4)求出图像的梯度

    2、膨胀(dilate)

    膨胀就是求局部最大值的操作。从数学角度来说,就是将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。这样就会使图像中的高亮区域逐渐增长。

    3、腐蚀(erode)

    腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。

    4、膨胀和腐蚀示例

     1 Mat srcImage = imread("E:\CodeResource\opencv\car_pic\car1.jpg",0);
     2 
     3 Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
     4 
     5 Mat dilateImage;
     6 dilate(srcImage, dilateImage, element);
     7 
     8 Mat erodeImage;
     9 erode(srcImage, erodeImage, element);    
    10 
    11 imshow("srcImage", srcImage);
    12 imshow("dilateImage", dilateImage);
    13 imshow("erodeImage", erodeImage);
    14 
    15 waitKey(0);

    5、效果图:

    二、开运算

    1、概述

    开运算是先腐蚀后膨胀。主要用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。

    2、示例

     1 Mat srcImage = imread("E:\CodeResource\opencv\car_pic\test1.png",0);
     2 
     3 Mat element = getStructuringElement(MORPH_RECT, Size(5,5));
     4 
     5 Mat openImage;
     6 morphologyEx(srcImage, openImage, MORPH_OPEN, element);
     7 
     8 imshow("srcImage", srcImage);
     9 imshow("openImage", openImage);
    10 
    11 waitKey(0);

    3、效果图

    三、闭运算

     1、概述

    闭运算是先膨胀后腐蚀。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积,同时抑制比结构元小的暗细节。

    2、示例

     1 Mat srcImage = imread("E:\CodeResource\opencv\car_pic\test2.png",0);
     2 
     3 Mat element = getStructuringElement(MORPH_RECT, Size(5,5));
     4 
     5 Mat closeImage;
     6 morphologyEx(srcImage, closeImage, MORPH_CLOSE, element);
     7 
     8 imshow("srcImage", srcImage);
     9 imshow("closeImage", closeImage);
    10 
    11 waitKey(0);

    3、效果图

    四、形态学梯度

    1、概述

    就是将膨胀土和腐蚀图相减。对二值化图像进行这一操作可以将边缘突出来,可以使用形态学梯度来保留物体的边缘轮廓

    2、示例

     1 Mat srcImage = imread("E:\CodeResource\opencv\car_pic\test2.png",0);
     2 
     3 Mat element = getStructuringElement(MORPH_RECT, Size(2,2));
     4 
     5 Mat gradientImage;
     6 morphologyEx(srcImage, gradientImage, MORPH_GRADIENT, element);
     7 
     8 imshow("srcImage", srcImage);
     9 imshow("gradientImage", gradientImage);
    10 
    11 waitKey(0);

    3、效果图

    五、顶帽变换和黑帽变换

    1、概述

    顶帽变换就是用源图像减去开运算图像。因为开运算带来的结果是放大了裂缝或者局部低亮度的区域。因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围区域更明亮的区域。顶帽一般用于校正不均匀光照的影响(补充:均匀光照在从背景中提取目标的处理中扮演核心的角色)。

    黑帽变换就是用闭运算减去源图像。黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。黑帽运算一般用来分离比邻近点暗一些的斑块。

    2、示例

     1 Mat srcImage = imread("E:\CodeResource\opencv\car_pic\test2.png",0);
     2 
     3 Mat element = getStructuringElement(MORPH_RECT, Size(15,15));
     4 
     5 Mat tophatImage;
     6 morphologyEx(srcImage, tophatImage, MORPH_TOPHAT, element);
     7 
     8 Mat blackhatImage;
     9 morphologyEx(srcImage, blackhatImage, MORPH_BLACKHAT, element);
    10 
    11 imshow("srcImage", srcImage);
    12 imshow("tophatImage", tophatImage);
    13 imshow("blackhatImage", blackhatImage);
    14 
    15 waitKey(0);

    3、效果图

     参考:http://blog.csdn.net/hx1298234467/article/details/49887925

  • 相关阅读:
    vue ssr
    webpack-dev-server proxy代理
    PHP连数据库生成数据字典
    redis.rpm 安装
    centos 6.5安装NodeJS
    Jenkins + git + maven 安装
    最新版本GIT安装
    身份证校验
    快递100物流公司列表
    redis 安装
  • 原文地址:https://www.cnblogs.com/justkong/p/7289462.html
Copyright © 2011-2022 走看看