OpenCV C++
线性滤波复习和总结
文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言
一、线性滤波?
二、使用步骤
- 1.引入库
- 2.读入数据
前言
图像处理中,图像滤波是去除图像中不感兴趣的噪声,从而更好的去关注想要的图像内容。
去除图像的噪声也叫平滑或去噪。
当然图像处理不仅有平滑,还有锐化。
本文主要专注平滑中的线性滤波。
锐化会下次讨论
一、线性滤波?
首先我们解释一下何为滤波。
”滤波是指通过、修改或抑制图像的规定频率分量”。
简单来讲就是想办法制定一个规则来修改原有的图像分布频率。
重点指这个过程的方法。
何为线性滤波:这个方法的运算规则是线性的,那就是线性滤波。
全称”线性空间滤波器”。
线性空间滤波器在图像中f和滤波核w之间执行乘积之和的 *** 作。
核是一个数据阵列,大小定义了运算的领域,核中的系数决定了该滤波器的性质。
核也常称为模板或窗口。
讲到这里我们提醒一下:线性滤波类似于图像卷积。
图像卷积就是把滤波的时候将窗体旋转180度再进行运算。
当然,卷积才是空间滤波的基础。
本文讨论线性滤波的应用,就不再解释卷积。
那线性滤波分为几种?
均值(平滑或者低通)、方框(盒式)、高斯低通。
Opencv提供了对应的函数来实现三种滤波。
分别式blur()、boxFilter()、GaussianBlur();
下面我们来对比一下三种滤波的效果。
二、使用步骤 1.引入库
代码如下(示例):
#include
#include
using namespace cv;
using namespace std;
2.读入数据
代码如下(示例):
//均值滤波
void QuickDemo::myBlur(Mat &image)
{
Mat result_img;
blur(image, result_img, Size(3, 3));
namedWindow("原图",WINDOW_NORMAL);
namedWindow("模糊后",WINDOW_NORMAL);
imshow("原图",image);
imshow("模糊后",result_img);
waitKey(0);
}
//盒式滤波
void QuickDemo::myboxFilter(Mat &image)
{
Mat result_img;
boxFilter(image,result_img,-1,Size(3,3),Point(-1,-1),true);
//sqrBoxFilter(image, result_img, -1, Size(3, 3), Point(-1, -1), true,BORDER_CONSTANT);
namedWindow("原图",WINDOW_NORMAL);
imshow("原图",image);
namedWindow("方框滤波后",WINDOW_NORMAL);
imshow("方框滤波后",result_img);
}
// 高斯滤波
void QuickDemo::myGaussianBlur(Mat &image)
{
Mat result_image;
GaussianBlur(image,result_image,Size(9,9),10,20);
namedWindow("原图",WINDOW_NORMAL);
imshow("原图",image);
namedWindow("处理后的图",WINDOW_NORMAL);
imshow("处理后的图",result_image);
waitKey(0);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/00311d9d15b94741b95dd5a784ba3278.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVE9QLeeKgOeJmw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/7cd3a47317c84adc8656718c9a40283e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVE9QLeeKgOeJmw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
---
# 总结
提示:线性滤波问题欢迎讨论
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)