1.统计排序滤波
上节笔记中提到的
均值模糊、高斯模糊两种图像模糊操作都属于图像的线性滤波,
本文则首先将笔记OpenCV中存在的几种基于统计排序的滤波器,
即
中值滤波、最大值与最小值滤波,这几种滤波器在特定场合与应用场景下,也经常用来(
划重点,对应滤波的作用!!!)消除图像噪声(中值滤波可以抑制椒盐噪声;最大值滤波可以填充小的闭合区域以及狭窄的间断;最小值滤波可以去除小的图像噪声或者图像元素对象的大小丝黏连);
或者抑制图像像素极小值与极大值(最大值与最小值滤波)。
1.1.中值滤波
- 中值滤波同样也需要一个
卷积核,
与卷积滤波不同的是,它不会用卷积核的每个系数与对应的像素值做算术计算,
而是把对应的像素值做排序,取中间值作为输出。
- 具体说明如图所示:
![]()
线性滤波是一个自带有/设置有系数的“实”模板;中值滤波是有一个只有滤波特性,没有设置系数的“空”模板;- 运算逻辑顺序概况:
“空”模板移动,套/捞与模板重合的N×N个像素值上来,
对套上来的值排序,取中值;
置回模板核中心格子下重合的像素块;
中值滤波的相关API函数处于Imgproc包中,完整的说明如下:
-
medianBlur(Mat src, Mat dst, int ksize)src:表示输入图像,
当ksize为3、5的时候输入图像可以为浮点数或者整数类型,
当ksize大于5的时候,则只能为字节类型图像,即CV_8UC。dst:表示中值滤波以后输出的图像,其类型与输入图像保持一致。ksize:表示上图中模板的大小,
常见为3、5,注意模板大小必须为奇数而且必须大于1。
调用此函数实现中值滤波的相关代码如下:
Mat src = Imgcodecs.imread(fileUri.getPath());
if(src.empty()){
return;
}
Mat dst = new Mat();
Imgproc.medianBlur(src, dst, 5);
划重点!!!
- 中值滤波对图像的
椒盐噪声有很明显的抑制作用,是一个很好的图像降噪的滤波函数。
!!!

最低0.47元/天 解锁文章
3108

被折叠的 条评论
为什么被折叠?



