[OpenCV学习日记-java]-06-统计排序滤波

统计排序滤波

之前介绍的模糊 是 线型滤波

现在我们就要说非线性滤波

这里就介绍 几种他们分别是

  • 中值滤波
  • 最大值滤波(也叫作膨胀)
  • 最小值滤波(也叫作腐蚀)

中值滤波

中值滤波的API函数:

medianBlur(Mat src, Mat dst, int ksize) 
  • src:输入如下
  • dst:输出图像
  • ksize:卷积核大小

注意这里的ksize 为单数

下面通过此代码来演示作用

Mat m1 = Imgcodecs.imread("C:\\test\\bmp.png" );
HighGui.imshow("原图",m1);

Mat s1 = new Mat();
Imgproc.medianBlur(m1,s1,3);
Mat s2 = new Mat();
Imgproc.medianBlur(m1,s2,5);
Mat s3 = new Mat();
Imgproc.medianBlur(m1,s3,7);

HighGui.imshow("中值滤波3",s1);
HighGui.imshow("中值滤波5",s2);
HighGui.imshow("中值滤波7",s3);

在这里插入图片描述

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。


最大值滤波(膨胀)

膨胀的函数如下:

dilate(Mat src, Mat dst, Mat kernel)
  • src:输入如下
  • dst:输出图像
  • kernel:卷积核,他可以是任何形状
kernel 的 获取代码如下
Mat getStructuringElement(int shape, Size ksize)
Mat getStructuringElement(int shape, Size ksize, Point anchor)
  • shape:表示结构元素的形状类型
  • ksize:表示结构元素的大小
  • achor:表示结构元素中心点(错点)的位置

等下介绍完腐蚀,通过代码再来整体看一下

最小值滤波(腐蚀)

erode(Mat src, Mat dst, Mat kernel)
  • src:输入如下
  • dst:输出图像
  • kernel:卷积核,他可以是任何形状

这里的 kernel 和 上面的kernel 获取方式一样

膨胀与腐蚀的应用

下面通过这一组代码 来展示膨胀与腐蚀

Mat m1 = Imgcodecs.imread("C:\\test\\bmp.png" );
HighGui.imshow("原图",m1);

//k是一个3x3 的矩形结构元素
Mat k = Imgproc.getStructuringElement(Imgproc.CV_SHAPE_RECT,new Size(3,3));

Mat s1 = new Mat();
Imgproc.dilate(m1,s1,k);
Mat s2 = new Mat();
Imgproc.erode(m1,s2,k);

HighGui.imshow("膨胀",s1);
HighGui.imshow("腐蚀",s2);

在这里插入图片描述
膨胀与腐蚀的用途 下一篇再说


上一篇[OpenCV学习日记-java]-05-模糊
下一篇[OpenCV学习日记-java]-07-形态学操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Timeless小帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值