第九章 形态学图像处理

形态学图像处理

预备知识

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

与数学中的逻辑运算基本相同

这里写图片描述

f = imread('Fig4.41(a).jpg');
g = imread('FigProb4.09(left).jpg');
subplot(231),imshow(f),title('A');
subplot(232),imshow(g),title('B');
subplot(233),imshow(~f),title('A的补集');
subplot(234),imshow(f|g),title('AB的合集');
subplot(235),imshow(f&g),title('AB的并集');
subplot(236),imshow(f&~g),title('AB的差集');

逻辑运算

膨胀和腐蚀

膨胀

在二值图像中“加长”或“变粗”的操作。膨胀定义为集合运算,A被B膨胀记为
原理:这里写图片描述

A = imread('Fig9.05(a).jpg');
A = ~A;
B = [1 1 1;1 1 1;1 1 1];
A2 = imdilate(A,B);
subplot(121),imshow(A),title('原图');
subplot(122),imshow(A2),title('膨胀后');

膨胀

结构元素的分解

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

这里写图片描述
这里写图片描述

腐蚀

做与,或操作,结果是使原来的二值图像减小一圈

A = imread('Fig01.png');
se = strel('disk',10);
A2 = imerode(A,se);
subplot(221),imshow(A),title('原图');
subplot(222),imshow(A2),title('半径为10腐蚀');
se = strel('disk',5);
A3 = imerode(A,se);
subplot(223),imshow(A2),title('半径为5腐蚀');
A4 = imerode(A,strel('disk',20));
subplot(224),imshow(A2),title('半径为20腐蚀');

腐蚀

膨胀与腐蚀的组合

开:先腐蚀再膨胀,可以去掉目标外的孤立点
闭:先膨胀再腐蚀,可以去掉目标内的孔。
这里写图片描述

  • 开运算与闭运算

    开运算:C = imopen(A,B)
    闭运算:C = imclose(A,B)

    f = imread('Fig02.png');
    se = strel('square',20);
    fo = imopen(f,se);
    subplot(221),imshow(f),title('原图');
    subplot(222),imshow(fo),title('b开运算');
    fc = imclose(f,se);
    subplot(223),imshow(fc),title('c闭运算');
    foc = imclose(fo,se);
    subplot(224),imshow(foc),title('b的闭运算')

    开闭运算

击中或击不中变换

击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。在研究图像中的目标物体与图像背景之间的关系上,HMT能够取得很好的效果。所以常被用于解决目标图像识别和模式识别等领域。

f = imread(‘Fig11.10.jpg’);
B1 = strel([0 0 0;0 1 1;0 1 0]);
B2 = strel([1 1 1;1 0 0;1 0 1]);
g = bwhitmiss(f,B1,B2);
subplot(121);imshow(f),title(‘原图’);
subplot(122);imshow(g),title(‘击中击不中变换’);
这里写图片描述

使用查找表

当击中击不中结构元素较小时,计算击中击不中变换的较快方法是使用查找表(LUT).
函数:endpoints
函数:bwmorph

f = imread(‘Fig11.10.jpg’);
g = bwmorph(f, ‘skel’, Inf);
for k = 1:20
g = g & ~endpoints(g);
end
subplot(121);imshow(f);
subplot(122);imshow(g);
这里写图片描述
f = imread(‘Fig12.09(a).jpg’);
[L,n] = bwlabel(f);
[r,c] = find(L == 3);
rbar = mean(r);
cbar = mean(c);
imshow(f);
hold on
for k = 1:n
[r,c] = find(L == k);
rbar = mean(r);
cbar = mean(c);
plot(cbar,rbar,’Marker’,’o’,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’k’,’MarkerSize’,10);
plot(cbar,rbar,’Marker’,’*’,’MarkerEdgeColor’,’w’);
end

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值