形态学运算"/>
图像的形态学运算
文章和代码参考自,《OpenCV计算机视觉编程攻略》
数学形态学是一门 20 世纪 60 年代发展起来的理论,用于分析和处理离散图像。它定义了一系列运算,用预先定义的形状元素探测图像,从而实现图像的转换。
其中腐蚀和膨胀是是形态学运算的基础算子,开运算闭运算,和提度都离不开这两种基础运算,在形态学中,核心的概念是基础概念是结构元素(类似卷积,实际上卷积也可以代替,本质都是用用滤波器扫描图像),结构元素可以简单地定义为像素的组合(原则上可以是任何形状,但通常是一个简单形状,如正方形、圆形或菱形,并且把中心点作为原点。自定义结构元素可用于强化或消除特殊形状。),在对应的像素上定义了一个原点(也称锚点),形态学滤波器的应用过程就包含了用这个结构元素探测图像中每个像素的操作过程。
形态学一般应用于二值图像,对灰度图像也可以
腐蚀和膨胀都是对图像的白色部分(高亮部分)而言。
膨胀—是图像中的高亮部分进行膨胀,类似于领域扩张,效果图拥有比原图更大的高亮区域;
腐蚀—是原图的高亮部分被腐蚀,类似于领域被蚕食,效果图拥有比原图更小的高亮区域。
形态学一般应用于二值图像,对灰度图而言也同样使用,
腐蚀就是把当前像素替换成所定义像素集合中的最小像素值; 膨胀是腐蚀的反运算,它把当前像素替换成所定义像素集合中的最大像素值。由于输入的二值图像只包含黑色(值为 0)和白色(值为 255)像素,因此每个像素都会被替换成白色或黑色像素。
从形态学的角度理解,腐蚀和膨胀的过程就是不断滑动结构元素,腐蚀时,结构元素放到某个像素位置时碰到了背景(即交集中有一个像素是黑色的),那么这个像素就变为背景;膨胀时,如果结构元素放到某个背景像素位置时碰到了前景物体,那么这个像素就被标为白色。正因如此,图像腐蚀后物体尺寸会缩小(形状被腐蚀),而图像膨胀后物体会扩大。在腐蚀图像中,有些面积较小的物体(可看作背景中的“噪声”像素)会彻底消失。与之类似,膨胀后的物体会变大,而物体中一些“空隙”会被填满。
从数学的角度来说,膨胀和腐蚀操作就是将图像与核进行卷积,核可以是任意形状和大小的。核大,则周围对其影响大,变化大,核小,则周围对其影响小,变化小。(个人理解,形态学结构元素是不进行翻转的滑动,卷积是需要翻转进行乘积)
原始图像图片:
二值化后的图像:
图像的膨胀
// 膨胀图像
cv::Mat dilated; // 目标图像
cv::dilate(image,dilated,cv::Mat());
膨胀后的图像
图像的腐蚀
// 读取输入图像
cv::Mat image= cv::imread("binary.bmp");
// 腐蚀图像
// 采用默认的 3×3 结构元素
cv::Mat eroded; // 目标图像102 第 5 章 用形态学运算变换图像
cv::erode(image,eroded,cv::Mat());
腐蚀后的图像:
图像开运算
开运算其实就是先腐蚀再膨胀,开启运算消除了背景中的几个小物体。所有小到不能容纳完整结构元素的物体都会被移除。
开运算可以用来可以去掉目标外的孤立点,消除小物体,,并且在平滑较大物体的边界的同时不明显改变其面积。
OpenCV 中给出了简单的API,同样你用膨胀 +腐蚀组合运算也是可以的
cv::Mat opened;
cv::morphologyEx(image,opened, // 输入和输出的图像
cv::MORPH_OPEN, // 运算符
element); // 结构元素
开运算图:
图像闭运算
闭运算其实就是先膨胀再腐蚀,可看到闭运算后,白色的前景物体中的小空隙已经被填满。闭运算也会把邻近的物体连接起来。基本上,所有小到不能容纳完整结构元素的空隙或间隙都会被闭运算消除。
OpenCV 中给出了简单的API,同样你用膨胀 +腐蚀组合运算也是可以的
cv::Mat closed;
cv::morphologyEx(image,closed, // 输入和输出的图像
cv::MORPH_CLOSE, // 运算符
element); // 结构元素
闭运算图:
形态学梯度
形态学梯度就是膨胀图与腐蚀图之差,对二值图像进行这一操作,可以将团块的边缘突出出来(膨胀(扩充边缘图)—腐蚀(缩减边缘图)=轮廓的环状边缘),我们可以用形态梯度来保留物体的边缘轮廓
顶帽运算
因为开运算带来的结果是:放大了裂痕或者局部低亮度的区域,消除了前景物体局部尖锐的部分和一些局部小型前景物体,这时候,用原始图像 - 开运算后的图像,即可得到,被开运算消除的前景物体
顶帽运算往往用来分离比邻近点亮一些的斑块(局部前景的小物体或者大前景物体的尖锐部分),在一幅图像具有大幅的背景,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
黑帽运算
黑帽就是原图与闭运算图之差,黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。
更多推荐
图像的形态学运算
发布评论