《数字图像处理》--冈萨雷斯(第九章)

来源:互联网 发布:评价汪精卫 知乎 编辑:程序博客网 时间:2024/05/19 00:43

  • 形态学图像处理
      • 预备知识
      • 膨胀和腐蚀
      • 膨胀与腐蚀的结合

形态学图像处理

预备知识

  • 集合论中的基本概念

  • 二值图像、集合和逻辑运算符

    在MATLAB中用逻辑表示于二值图像上执行集合运算

集合运算 二值图像的MATLAB语句 名称 A ∩ B A & B 与 A ∪ B A | B 或 Ac ~A 非 A - B A &~B 差

膨胀和腐蚀

  • 膨胀

    膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表示为:D(X)={a | Ba↑X}=X img B,如图6.13所示。图6.13中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。

    函数imdilate

    A2 = imdilate(A, B)

    其中 A和A2都是二值图像,B是指定结构元素的由 0 和1 组成的矩阵

  • 结构元素的分解

    膨胀满足结合率

    A ⊕(B⊕C) = (A⊕B)⊕C

    假设一个结构元素B可以表示为两个结构元素B1和B2的膨胀,即

    B = B1 ⊕ B2

  • 函数strel

    se = strel(shape, parameters)

    以分解的形式来产生结构元素

    >> se = strel('diamond', 5)>> decomp = getsequence(se);

    decomp是strel 对象的四元素向量,分解中的四结构元素可以通过索引到decomp中来逐个地检查。

  • 腐蚀

    函数imerode

膨胀与腐蚀的结合

  • 开运算和闭运算

    函数imopen 和 imclose

    >> f = imread('9 (5).tif');>> se = strel ('square', 20);>> fo = imopen(f, se);>> fc = imclose(f,se);>> foc = imclose(fo, se);

    由上图可看出 先开后闭 与先闭后开的效果一样

  • 击中或不击中变换

    函数bwhitmiss

    C为结果,A为输入图像,B1和B2为结构元素

    >> f = imread('9 (7).tif');>> B1 = strel([0 0 0;0 1 1;0 1 0]);>> B2 = strel([1 1 1; 1 0 0;1 0 0]);>> g = bwhitmiss(f, B1, B2);

  • 使用查找表

    IPT提供两个函数 makelut 和applylut

    makelut 为用户的函数构造一个查找表

    applylut 使用这个查找表来处理二值图像

    函数endpoints

    ​ 该函数使用 makelut 和applylut 在二值图像中检测端点

    函数conway

    该函数使用 makelut 和 applylut 来实现生命游戏 Conway

    函数bwmorph

    可基于膨胀、腐蚀和查找表操作的组合实现许多有用的操作,该函数的调用语法为

    g = bwmorph(f, operation, n)

    f 是一幅输入的二值图像,operation是一个指定期望操作的字符串

    n 是一个用于指定将被重复的操作次数的正整数。

    >> g1 = bwmorph(f, 'thin', 1);>> g2 = bwmorph(f, 'thin',2);>> ginf = bwmorph(f, 'thin',Inf);

    >> fs = bwmorph(f, 'skel', Inf);>> for k = 1:5fs = fs & ~endpoints(fs);end

原创粉丝点击