【OpenCV(C++)】图像处理:线性滤波
平滑处理
平滑处理(smoothing)也称模糊处理(bluring),是一种简单且使用频率高的图像处理方法,常用来减少图像上的噪点或者失真。
图像滤波
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。
消除图像中的噪声成分叫作图像的平滑化或滤波操作。
图像滤波的目的:
- 抽出对象的特征作为图像识别的特征模式
- 适应图像处理的要求,消除图像数字化时所混入的噪声
滤波处理的要求:
- 不能损坏图像的轮廓及边缘等重要信息
- 图像清晰视觉效果好
线性滤波操作
方框滤波(box Filter)
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat srcImage = imread("fg.jpg");
imshow("[原图]方框滤波", srcImage);
Mat dstImage;
boxFilter(srcImage, dstImage, -1, Size(7, 7));
imshow("[效果图]方框滤波", dstImage);
waitKey(0);
return 0;
}
运行效果如下:
均值滤波(blur)
是典型的线性滤波算法,主要方法为邻域平均法,其缺陷在于:不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪点。
blur(srcImage, dstImage, Size(7, 7));
运行效果如下:
高斯滤波(GaussianBlur)
就地过滤
GaussianBlur(srcImage, dstImage, Size(7, 7), 0, 0);
运行效果如下: