最近期末考试最后一题考到了形态学重构,当时只是粗略看了看,具体原理方法没有说的特别清楚,需要学习!
参考网站:
(75条消息) 关于形态应用学(重构、边界提取)和matlab实现_张诚瑞的博客-CSDN博客
图像处理 形态学 (腐蚀 膨胀 开闭运算 连通分量....) - Bear.Tirisfal - 博客园 (cnblogs.com)
matlab中用到的形态学重构函数 imreconstruct(M,X)
M代表一个标记点图像,标记变换开始点 X为掩膜图像,约束变换过程 目的是提取原始图像中的含有某些特征的连通区域构成新图像
那道期末考试题主要利用重构对图像进行保护性腐蚀
原图:
目标:
大致目标是想提取原图中带长竖线的字母。按照imreconstruct的输入,首先需要有标记长竖线位置的标记点。
%% 图片是直接截图的,所以需要一个二值化过程
Z = imread("reCon.png");
Z1 = im2bw(Z(:,:,1));
figure;
imshow(Z1);
%% 用竖线腐蚀图像
mark = imerode(Z1,ones(14,1));
figure;
imshow(mark);
利用一个labeloverlay叠加操作看一下标记点大概位置,基本上覆盖了所有的含长竖线的字母。
将这个腐蚀后的图像作为标记点,原图作为掩膜,寻找原图中与标记点连接的部分
%% 形态学重构
Z2 = imreconstruct(mark,Z1);
figure;
imshow(Z2);
(有些字母没有非常完整的提取,可以在重构之前对原图膨胀一下,完整连接部分)
与单纯的开运算比较:
形态学重构相比于开运算,可以保护性腐蚀图像
(暂时先发现这么多,这个工具应该还有很多作用....)