形态学图像处理

来源:互联网 发布:杨幂的鼻子知乎 编辑:程序博客网 时间:2024/05/23 19:18

形态学【生】【数】 morphology

        从图像中提取表达和描绘区域形状的有用图像分量, 边界 骨架  凸壳等

1 Prerequisite  P403

     1 一个集合的反射表示为 定义如下:

     2 如果是描述图像中物体的像素的几何( 二维点 ),则坐标被代替的点集

     3 集合按照的平移定义为:

     4 形态学中几何的泛着和平移广泛用来表达基于结构元( SE ) 的操作:研究一副图像中感兴趣特性所用的小集合或子图像。

        * 阴影方块——  SE的成员

        * 标记 "×"——   不关心条件

        * 标记 "·" ——   中心位置

        * 白色背景——  为图像操作,添加最小可能数量的背景元素形成 “矩形阵列”

 

2 腐蚀和膨胀

     1 腐蚀

         中的集合,  表示的腐蚀

        意义:包含在中,不予背景共享任何公共元素,故腐蚀表达式 等价于:

                  其中   是 的补集。

        例子: wikipedia http://en.wikipedia.org/wiki/Erosion_(morphology)

     2 膨胀

        表示的膨胀,定义为:

        意义:至少有一个元素是重叠的 等价于:

 

         对偶性

         * 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的,即

                     以及   

                  的腐蚀,是膨胀的补,反之亦然。

          *证明:P407

                   

3 开操作与闭操作

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

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

 

4 击中或击不中变换( HMT )

        *用于形状检测的基本工具

        ☆ P411 & http://blog.sina.com.cn/s/blog_4ca086fc0100ie18.html

 

5 基本形态学算法

       1 边界提取

          做法: 表示集合 的边界,通过 腐蚀,而后执行 和腐蚀结果之间集合做差

          理解:将原图像边界缩小一圈,再使用图像与其求差

       2 孔洞填补

          P425 书上的方法好像有错

 

% MatlabI = [    0 0 0 0 0 0    0 1 1 1 1 0    0 1 0 0 1 0    0 1 0 0 1 0    0 1 0 0 1 0    0 1 0 0 1 0    0 1 1 1 1 0    0 0 0 0 0 0    0 1 0 0 0 1];    I = logical(I);subplot(231);imshow(~I);title('I');% I 的反I_c = logical(~I);subplot(232);imshow(~I_c);title('I^c  I 的反');% F 是边界处理后的图像% 边界元素 = 1 - I(i,j)[r c] = size(I);F = zeros(r,c)for i = 1 : r    for j = 1 : c        if i==1 || j==1 || i==r || j==c            F(i,j) = 1 - I(i,j);        end    endendsubplot(233);imshow(~F);title('经过处理边界图像 F');% B在F上做膨胀B = ones(3);TMP_F = zeros(r+2,c+2);TMP_F([2:r+1], [2:c+1]) = F;TMP = zeros(r+2,c+2);for i = 2:r+1    for j = 2:c+1        if TMP_F(i,j) == 1            TMP(i-1,j-1) = 1;            TMP(i-1,j) = 1;            TMP(i-1,j+1) = 1;            TMP(i,j-1) = 1;            TMP(i,j+1) = 1;            TMP(i+1,j-1) = 1;            TMP(i+1,j) = 1;            TMP(i+1,j+1) = 1;        end    endendF_oplus_B = TMP([2:r+1], [2:c+1]);subplot(234);imshow(~F_oplus_B);title('F \oplus B ');% 经过腐蚀的F交上 I^c (I的反)F_oplus_B_cap_I_c = xor(F_oplus_B,I_c);subplot(235);imshow(~F_oplus_B_cap_I_c);title('F \oplus B \cap I^c');% 取反 OKsubplot(236);imshow(F_oplus_B_cap_I_c);title('final');

 

          补洞不同方法 http://codesmesh.com/hole-filling-of-image-in-matlab/

 

       3 连通分量提取

          * MATLAB  http://www.mathworks.cn/cn/help/images/ref/bwlabel.html

       4 凸壳

       5 细化

       6 粗化

       7 骨架

       8 裁剪

       9 形态学重建

 

6 灰度级形态学