zoukankan      html  css  js  c++  java
  • 图像膨胀

    1、原理

    所谓的图片的膨胀处理,其实就是在图像的边缘添加像素值,使得整体的像素值扩张,进而达到图像的膨胀效果,也可以说是信号与系统书中所提到的像素插值处理。

    对Z2上元素集合A和结构体元素S,使用S对A进行腐蚀,记作:

    A⊕S={z|(S)z ∩ A ≠ Ø}

    让位于图像圆点的结构元素S在Z平面上移动,如果S的圆点移动到z点时,S与A有公共的交集(非空集),则认为这样的z点构成的集合是S对A的膨胀图像。

    下图左侧是原图X,B是结构元素,右图是膨胀的结果。膨胀的方法是,拿B的中心点和X上的点一个一个地对比,如果B上至少有一个点在X的范围内,则该点为前景有效点;右边是膨胀后的结果。可以看出,膨胀后的图比原图点数多,就象X被膨胀增加了一层。

     2、膨胀的实现

    imgPath = 'E:opencv_picsrc_picpic1.bmp';
    img = imread(imgPath);
    img=rgb2gray(img);
    img = 255-img;
     
    se = strel('square', 3)
    img2 = imdilate(img, se);
    subplot(1,2,1),imshow(img),title('原始图像');
    subplot(1,2,2),imshow(img2),title('膨胀图像');

    膨胀后结果如下图。

     放大后观察,左侧的噪点,第一列最下面一个是2*2的块,膨胀后变为4*4块。

    如果使用5*5和10*10的结构元素,膨胀效果如下。

    se = strel('square', 5)
    img2 = imdilate(img, se);
    subplot(1,3,1),imshow(img),title('原始图像');
    subplot(1,3,2),imshow(img2),title('膨胀图像系数5');
    se3 = strel('square', 10)
    img3 = imdilate(img, se3);
    subplot(1,3,3),imshow(img3),title('膨胀图像系数10');

    膨胀使物体的边界扩大,可能把多个元素连同起来。腐蚀后可以删除对象边界的某些像素,而膨胀给图像中的对象边界添加像素。腐蚀使图像变“细”,膨胀是图像变“粗”。

    先腐蚀后再膨胀可以用在图像滤波,腐蚀后图像变细,去除了比较小的噪声,膨胀后恢复原图像。

    imgPath = 'E:opencv_picsrc_picpic1.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('膨胀图像');

    图像效果如下图。

    3、总结

    和腐蚀相反,膨胀能使物体的边界扩大,具体的结果和图像的本身、结构元素的形状有关。一般的,二值化后图像容易出现断裂,膨胀可以桥接断裂的缝隙。

    腐蚀和膨胀对比:

    膨胀用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1。只要有一个元素非零结果就非零,所以使二值图像扩大一圈。

    腐蚀用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0。只要全部元素都为1结果才为1,所以使二值图像减小一圈。

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

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

  • 相关阅读:
    OAuth 2.0之授权码模式
    Rest和Restful & http
    HTTP1.1协议中文版-RFC2616
    Linux中安装Python2.7
    CvMat、Mat、IplImage之间的转换详解及实例
    ROS Node/Topic/Message/Service的一些问题
    ROS的tf_tree相关
    机器人路径规划(包括行人检测及动态避障总结)(长期更新)
    相关博客链接(长期更新)
    关于视觉里程计以及VI融合的相关研究(长期更新)
  • 原文地址:https://www.cnblogs.com/pingwen/p/12238674.html
Copyright © 2011-2022 走看看