您的位置:首页 > 编程语言 > Java开发

Java+opencv3.2.0之均值滤波

2017-08-01 15:19 211 查看
均值滤波主要是利用某像素点周边的像素的平均值来达到平滑噪声的目的。它是一种典型的线性滤波算法。均值滤波本身存在着缺陷,它不能很好的保护图像的细节,在去噪的同时会破坏图像的细节部分,不能很好的去除噪点。

均值滤波常用的内核如图:



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);
}


源图像:



目标图像:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: