标签:原图 运算 C++ element 形态学 OpenCV 腐蚀 图像处理 膨胀
【OpenCV(C++)】图像处理:形态学滤波
形态学(morphology)
图像处理中的形态学指的是数学形态学(Mathmatical morphology),它是一门建立在格论和拓扑学基础之上的图像分析学科。形态学操作就是基于形状的一系列图像处理操作。
膨胀与腐蚀
膨胀(dilate)与腐蚀(erode)是最基本的形态学操作,能实现多种多样的功能:
- 消除噪声
- 分割出独立的图像元素,在图像中连接相邻的元素
- 寻找图像中明显的极大值区域或极小值区域
- 求出图像的梯度
注:腐蚀和膨胀是对高亮部分而言的
膨胀
膨胀是求局部最大值的操作。
dilate函数使用像素邻域内的局部极大运算符来膨胀一张图片。
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat srcImage = imread("fg.jpg");
namedWindow("【原图】膨胀操作");
namedWindow("【处理图】膨胀操作");
imshow("【原图】膨胀操作", srcImage);
Mat element = getStructuringElement(MORPH_BLACKHAT, Size(100, 100));
Mat dstImage;
dilate(srcImage, dstImage, element);
imshow("【处理图】膨胀操作", dstImage);
waitKey(0);
return 0;
}
运行效果如下:
腐蚀
腐蚀是求局部最小值的操作。
erode函数使用像素邻域内的局部极小运算符来腐蚀一张图片。
erode(g_srcImage, g_dstImage, element);
其它形态学滤波
开运算(Opening Operation)
开运算即先腐蚀后膨胀的过程。可以用来消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。
闭运算(Closing Operation)
闭运算即先膨胀后腐蚀的过程。能够排除小型黑洞(黑色区域)。
形态学梯度(Morphological Gradient)
即膨胀图与腐蚀图之差。对二值图像进行这一操作可以将blob的边缘突出出来。
顶帽(Top Hat)
即原图与开运算之差,突出比原图轮廓周围更明亮的区域。
黑帽(Black Hat)
即原图与闭运算之差,突出比原图轮廓周围更暗的区域。
element
下面分别为使用十字形、矩形、椭圆作为元素element的运行效果:
- 十字形
- 矩形
- 椭圆
标签:原图,运算,C++,element,形态学,OpenCV,腐蚀,图像处理,膨胀 来源: https://blog.csdn.net/weixin_43645790/article/details/104088352
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。