灰度图形态学运算知识点总结gray-scalemorphology
⼀般,结构元素B是flat.
1.腐蚀
f以正⽆穷⼤扩边,选取B覆盖f区域中的最⼩值.
2.膨胀
f以负⽆穷⼤扩边,选取B覆盖f区域中的最⼤值.
3.开运算
先腐蚀后膨胀.
开运算会抑制⼩size的⽩点(⾼灰度对象).
4.闭运算
先膨胀后腐蚀.
闭运算会填充⼩size的⿊洞(低灰度对象).
5.腐蚀,膨胀,开,闭的⼀维仿真
四种运算的仿真代码:
输出:
%%灰度图形态学运算
clc;cloall;clear;
x=1:600;
y=2*sin(0.01*x)+sin(0.02*x)+sin(0.04*x);
SELen=51;%oddnumber
SE=ones(1,SELen);
%%腐蚀运算
y_erosion=nan(size(y));
fori=1:length(y)
h=max(1,i-floor(SELen/2));
t=min(length(y),i+floor(SELen/2));
y_erosion(i)=min(y(h:t));
end
%%膨胀
y_dilation=nan(size(y));
fori=1:length(y)
h=max(1,i-floor(SELen/2));
t=min(length(y),i+floor(SELen/2));
y_dilation(i)=max(y(h:t));
end
%%开运算
y_open=y_erosion;%先腐蚀后膨胀
fori=1:length(y_erosion)
h=max(1,i-floor(SELen/2));
t=min(length(y_erosion),i+floor(SELen/2));
y_open(i)=max(y_erosion(h:t));
end
%%闭运算
y_clo=y_dilation;%先膨胀后腐蚀
fori=1:length(y_dilation)
h=max(1,i-floor(SELen/2));
t=min(length(y_dilation),i+floor(SELen/2));
y_clo(i)=min(y_dilation(h:t));
end
figure;plot(x,y,'r-',x,y_erosion,'g-',x,y_dilation,'b-');
xlabel('点序号');ylabel('灰度值');legend('原曲线','腐蚀','膨胀');
figure;plot(x,y_open,'r-',x,y_clo,'b-');
xlabel('点序号');ylabel('灰度值');
legend('开','闭');
注意:闭运算曲线开头处,是⼀段⽔平线,没有和原曲线重合.和DIP书中不⼀致.
使⽤Matlab的内置函数验证⼀下:
结果和上⾯的完全⼀致.
6.形态学平滑
a.对于噪声灰度⾼于背景灰度的情形,先开后闭.因为开运算会抑制⼩size的⽩点(⾼灰度对象).或者连续地先开后闭运算,SE逐渐增⼤.
b.对于噪声灰度低于背景灰度的情形,先闭后开.因为闭运算会填充⼩size的⿊洞(低灰度对象).也可以连续操作.
7.形态学梯度
膨胀减去腐蚀.
-hat
原图减去开运算
-hat
闭运算减去原图.
top-hat和bottom-hat可以⽤于移除背景,校正不均匀光照.
可以作为分割的前处理.
%%内置灰度形态运算
clc;cloall;clear;
x=1:600;
y=2*sin(0.01*x)+sin(0.02*x)+sin(0.04*x);
SELen=51;%oddnumber
SE=strel('line',50,0);
%%imerodeimdilate
y_imerode=imerode(y,SE);
y_imdilate=imdilate(y,SE);
%%imclo闭运算
y_imclo=imclo(y,SE);
%%imopen开运算
y_imopen=imopen(y,SE);
%%plot
figure;plot(x,y,'r-',x,y_imerode,'g-',x,y_imdilate,'b-');
xlabel('点序号');ylabel('灰度值');legend('原曲线','imerode','imdilate');
figure;plot(x,y_imopen,'r-',x,y_imclo,'b-');
legend('imopen','imclo');
10.粒度分析Granulometry
统计相同形状不同size的粒⼦位置和数量.
a.先做形态平滑.
b.使⽤逐渐增⼤的SE做opening.
c.不同尺度SE的opening结果求差分.
d.差分曲线有较⼤尖峰的地⽅就是提取的相应size的粒⼦.
11.⽂本分割TextualSegment
和粒度分析类似.
a.先⽤闭运算把较⼩的⿊洞填平.SE⼤⼩要合适.
b.使⽤开运算把较⼤⿊洞连成⼀⽚.形成了界限分明的两个区域.
c.使⽤形态梯度算法提取边界.
12.形态学重建
形态学重建运算⽐简单的形态学运算好的地⽅在于:
a.对背景的提取较为完整⼲净.
b.对前景(对象)的保留较为完整.
本文发布于:2022-12-31 18:25:32,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/67075.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |