总述
图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。
我们可以通过低通滤波器(LPF),对图像进行模糊处理,去除图像中的高频含量,比如边界和噪声。
OpenCV中有四个主要的图像滤波器,分别是:averaging,Gaussian,median filtering,bilateral filtering,即平均,高斯,中值滤波,双边滤波。
平均
通过二维卷积可以达到平均的目的,我们先给出这样一个核算子:
将核算子放在图像的一个像素 A 上,求与核对应的图像上 9(3×3)个像素的和,再取平均数,用这个平均数替代像素 A 的值。重复以上操作直到将图像的每一个像素值都更新一边。
有个很方便的函数可以实现,Imgproc.blur(Mat src, Mat dst, Size ksize)
,其中src
是读取的图像,dst
是处理后的图像,ksize
是核大小。代码如下:
import org.opencv.imgproc.Imgproc;
Mat src = Imgcodecs.imread("D:\\spiderman.jpg");
if(src.empty()) {
System.out.println("empty");
return;