0
点赞
收藏
分享

微信扫一扫

Java Opencv 实现 中值滤波器

捌柒陆壹 2022-08-04 阅读 85


原理

Note

以下原理来源于Richard Szeliski 的著作 ​​Computer Vision: Algorithms and Applications​​ 以及 Learning OpenCV

  • 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。
  • 平滑处理的用途有很多, 但是在本教程中我们仅仅关注它减少噪声的功用 (其他用途在以后的教程中会接触到)。
  • 平滑处理时需要用到一个滤波器 。 最常用的滤波器是 线性 滤波器,线性滤波处理的输出像素值 (i.e.
  • Java Opencv 实现 中值滤波器_git

  • ) 是输入像素值 (i.e.
  • Java Opencv 实现 中值滤波器_邻域_02

  • )的加权和 :
  • Java Opencv 实现 中值滤波器_邻域_03


  • Java Opencv 实现 中值滤波器_git_04

  • 称为 , 它仅仅是一个加权系数。
    不妨把滤波器 想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就把这个窗口滑过图像。
  • 滤波器的种类有很多, 这里仅仅提及最常用的:

中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的 中值 代替 。

Java 实现Code:

package com.gitee.dgw.lesson8;

import com.gitee.dgw.lesson1.platformUtils;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.core.Point;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
* @program: learn-opencv
* @description:
* @author: Mr.Dai
* @create: 2020-03-10 20:02
**/
public class MedianFilter {


private final static String path=System.getProperty("user.dir")+"\\catton.jpg";
/// 全局变量
private final static int MAX_KERNEL_LENGTH = 31;

static{
platformUtils.loadLibraries();
}

public static void main(String[] args) {
Mat src = new Mat();
Mat dst=new Mat();
//读取一张图片
//image=Imgcodecs.imread(path);

//读取一张灰度图片
src= Imgcodecs.imread(path,Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);

if (src.empty()) {
System.err.println("加载图片出错,请检查图片路径!");
return;
}

/// 使用 均值平滑

for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 )
{
//Imgproc.blur(src, dst, new Size( i, i ), new Point(-1,-1));
Imgproc.medianBlur(src,dst,i);
}

//显示出来 对namedWindos 与cv::imshow 封装
HighGui.imshow("dstimg showimg",src);
HighGui.imshow("srcimage showimg",dst);
// 无限等待按键按下
HighGui.waitKey(0);

}
}



​​

Java Opencv 实现 中值滤波器_git_05

​​



举报

相关推荐

0 条评论