Java+opencv3.2.0之均值滤波

均值滤波主要是利用某像素点周边的像素的平均值来达到平滑噪声的目的。它是一种典型的线性滤波算法。均值滤波本身存在着缺陷,它不能很好的保护图像的细节,在去噪的同时会破坏图像的细节部分,不能很好的去除噪点。
均值滤波常用的内核如图:
Java+opencv3.2.0之均值滤波_第1张图片
Opencv3.2.0中实现均值滤波的方法:Imgproc.blur(Mat src, Mat dst, Size ksize, Point anchor, int borderType)
参数说明:
src:输入源图像
dst:输出目标图像
ksize:内核的大小
anchor:锚点,有默认值new Point(-1,-1),代表核的中心
borderType:推断图像外部像素的边界模式,有默认值Core.BORDER_DEFAULT
borderType的取值还有:
BORDER_REPLICATE:复制法,既是复制最边缘像素,例如aaa|abc|ccc
BORDER_REFLECT:对称法,例如cba|abc|cba
BORDER_REFLECT_101:对称法,最边缘像素不会被复制,例如cb|abc|ba
BORDER_CONSTANT:常量法,默认为0
BORDER_WRAP:镜像对称复制

例子:

public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    Mat srcImage = Imgcodecs.imread("F:\\t010bf2fad41ee7797e.jpg");

    Mat dstImage = srcImage.clone();

    Imgproc.blur(srcImage, dstImage, new Size(9,9), new Point(-1, -1), Core.BORDER_DEFAULT);

    Imgcodecs.imwrite("F:\\blur.jpg", dstImage);
}

源图像:
Java+opencv3.2.0之均值滤波_第2张图片

目标图像:
Java+opencv3.2.0之均值滤波_第3张图片

你可能感兴趣的:(OpenCV3.2.0)