数字图像处理四 | 灰度形态学操作原理及python实现

ぃ、小莉子 提交于 2020-01-27 05:30:30

图像处理总结4

灰度形态学
之前说过:
形态学起源于法国巴黎高等矿业学院,因为人家是搞地质的。
可见一斑,形态学的精要就是在于将图像看作是等高线组成的地形图,他的基本操作就是动土,平高填低等等。
之前的二值形态学针对的是二值图片,在地形上,就像是现代的建筑,拔地而起没有一定的梯度。
而这篇是针对灰度图片的形态学,这时的图片就更像自然界的地貌,像山川,像河谷。


基本操作

基本操作也是腐蚀和膨胀。
Dilation(膨胀):
先看公式:Fk=maxa,bk{F(x+a,y+b)+k(a,b)}F\bigoplus k=max_{a,b\in k}\{F(x+a,y+b)+k(a,b)\}
同样有两种算法。
1)平移
对原图先加上SE对应部分的值,再向SE对应的位置平移,然后取最大值。
比如,现在有一个一维的SE: [1,2,3], 中心点定为第一个点,就是“1”。
那么首先对应于“1”,则是原图位置不变加1.
对于“2”,原图灰度值加2,向右平移一位。
对于“3”,原图灰度值加3,向右平移两位。
最后将三张图重合,并在原图区域取最大值,作为结果图。
2)盖章
SE在原图上滑动,每个滑动的位置,SE与原图相加,中心点取SE范围内最大值作为结果。
这个程序上好实现。
直观上,就是原图亮的地方会更亮(整体亮度增加),且范围扩大。
Erosion(腐蚀):
公式:Fk=mina,bk{F(xa,yb)k(a,b)}F\bigodot k=min_{a,b \in k}\{F(x-a,y-b)-k(a,b)\}
与膨胀不同的就是与SE相减,取最小值。
直观上就是,暗的地方会更暗(整体亮度减小)
Open(开):
先腐蚀后膨胀。
直观上就是消除了原图上比SE小的亮处。
Close(闭):
先膨胀后腐蚀。
直观上与Open相反,消除了暗处。


组合算法

TopHat Transform:
高帽变换分为白色高帽变换和黑色高帽变换。
白色是指将灰度Close过的图和原图相减。
黑色是指将原图与灰度Open过的图相减。
总之就是留下了灰度形态学操作突出的部分。

Grayscale Reconstruction:
灰度重建分为OBR和CBR。
一个是针对Open后的图片重建。
一个是针对Close后的图片重建。
重建算法就是不断膨胀,但每次膨胀后与原图比较,将灰度值高于原图处的点置为原图的灰度值。
意思就是不能超过原图的灰度值。重复膨胀直到稳定。
类似二值里面的Conditional Dilation

梯度:
灰度形态学也有梯度,和二值里面的相同。


Code

这里的算法都可以在我的GitHub里的项目里找到
包括灰度形态学基本操作(D,E,O,C),以及部分组合算法。
该项目是一个包括阈值分割、卷积滤波、形态学和灰度形态学的数字图像处理算法集合
用法见readme文件。
且带有GUI,有很好的演示效果
觉得可以别忘了star哦

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!