2025年图像处理——形态学

图像处理——形态学什么是形态学 形态学 morphology 一词通常表示生物学的一个分支 该分支主要研究动植物的形态和结构 而我们图像处理中指的形态学 往往表示的是数学形态学 数学形态学 Mathematical morphology 是一门建立在格论和拓扑学基础之上的图像分析学科

大家好,我是讯享网,很高兴认识大家。

什么是形态学

形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。

数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。

其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。

膨胀与腐蚀

最基本的形态学操作有二种:膨胀与腐蚀(Dilation与Erosion)。

作用

膨胀与腐蚀能实现多种多样的功能,主要如下:

  • 消除噪声
  • 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
  • 寻找图像中的明显的极大值区域或极小值区域
  • 求出图像的梯度

定义

腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。

在这里插入图片描述
讯享网

膨胀(dilate)

按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,我们称之为A)与核(我们称之为B)进行卷积。核可以是任何的形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,核是一个小的中间带有参考点和实心正方形或者圆盘,其实,我们可以把核视为模板或者掩码。

而膨胀就是求局部最大值的操作,核B与图形卷积,即计算核B覆盖的区域(体现局部)的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。
在这里插入图片描述
假设A区域内为高亮白色,则右侧区域中虚线部分与左侧图形等大。通过膨胀操作,A的范围扩大。

膨胀可以理解为B的中心(锚点)沿着A的外边界走了一圈。膨胀是对高亮部分而言,A区域之外的部分 < A的高亮像素,所里外面被里面取代。

用(x, y)周边区域(x+x’, y+y’)内的最大值代替(x, y)的值。因而整体变亮。

腐蚀(erode)

在这里插入图片描述

用(x, y)周边区域(x+x’, y+y’)内的最小值代替(x, y)的值。因而整体变暗。

相关API

  1. 获取结构元素
getStructuringElement(int shape, Size ksize, Point anchor) //- shape 形状 (MORPH_RECT 矩形 \MORPH_CROSS 变形十字 \MORPH_ELLIPSE 变形椭圆) //- ksize 大小,奇数 //- anchor 锚点,默认是Point(-1, -1)意思就是中心像素 int s = element_size * 2 + 1; Mat structureElement = getStructuringElement(MORPH_RECT, Size( s, s), Point(-1, -1)); //获取结构元素,形状,大小,锚点(中心) 

讯享网
  1. 膨胀
讯享网dilate(src, dst, kernel); //原图,目标图像,结构元素 dilate(src, dst, structureElement, Point(-1, -1), 1); //膨胀(最大值替换,变白亮),结构元素,锚点,迭代次数(不写也默认为1) 
  1. 腐蚀
erode(src, dst, kernel); //原图,目标图像,结构元素 erode(src, dst, structureElement); //腐蚀(最小值替换,变暗黑),锚点前面已定义这里默认了  

梯度

形态学梯度是膨胀和腐蚀的差别,结果看上去就像前景物体的轮廓。计算的梯度常见的有三种.

作用:边缘提取,对二值图像进行这一操作,可以将团块(blob)的边缘突出出来,保留物体的边缘轮廓。

基本梯度(gradient):

基本梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,称为梯度图像,也是OpenCV中支持的计算形态学梯度的方法,而此方法得到的梯度又被称为基本梯度。

内部梯度(inernal):

是用原图像减去腐蚀后的图像得到差值图像,称为图像的内部梯度

外部梯度(external):

图像膨胀后的图像减去原来的图像得到的差值图像,称为图像的外部梯度。

在这里插入图片描述

讯享网morphologyEx(src, dst3, CV_MOP_GRADIENT, kernel); //梯度,膨胀减腐蚀,边缘提取 

开,闭

在这里插入图片描述

开(Open)::先腐蚀后膨胀

在这里插入图片描述

作用:可以去掉小的白噪点,填充小的白洞。能排除小区域物体、消除孤立点、去噪、平滑物体的轮廓。

Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1)); //结构元素 morphologyEx(src, dst1, CV_MOP_OPEN, kernel); //开操作,先腐蚀后膨胀 

闭操作(close):先膨胀后腐蚀(bin2)

在这里插入图片描述

讯享网morphologyEx(src, dst2, CV_MOP_CLOSE, kernel); //闭操作,先膨胀后腐蚀 

顶帽,黑帽

顶帽(top hat):原图像与开操作之间的差值图像

在这里插入图片描述

作用:显示开操作所去掉的小白噪点。往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
在这里插入图片描述
图中是直接二值化和先顶帽,后二值化的结果比较。

Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1)); //结构元素 morphologyEx(src, dst1, CV_MOP_OPEN, kernel); //开操作,先腐蚀后膨胀 

黑帽(black hat):闭操作图像与源图像的差值图像

作用:显示闭操作所填充的小黑洞。突出了与原图像轮廓周围的区域更暗的区域,且这一操作和选择的核大小相关。所以黑帽运算用来分离比邻近点暗一些的斑块。
在这里插入图片描述

讯享网morphologyEx(src, dst2, CV_MOP_CLOSE, kernel); //闭操作,先膨胀后腐蚀 

参考

小讯
上一篇 2025-01-25 08:44
下一篇 2025-01-18 16:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/22070.html