opencv#31 非线性滤波——中值滤波

中值滤波原理

中值滤波原理与均值滤波相似。在滤波器的范围内,将滤波器所覆盖的图像的像素,进行排序后,选取序列中中间位置的数值作为滤波后的结果,此过程不含任何线性操作,所以称为非线性滤波,对图像中数据进行排序可以很好的移除掉某些区域中突然出现的较大值。例如在下图中3*3的区域内,即使存在着椒盐滤波255,排序后选取中位数可以有效的筛除最大值。即使有两个最大值,也不会出现远大于或远偏离于期望中的数值。所以中值滤波可以很好的滤除突然出现的较大值,也就是我们的椒盐噪声。

中值滤波步骤

Step1:滤波器内像素排序。

Step2:寻找中位数。

Step3:替换像素。

中值滤波函数

medianBlur()

由于中值滤波是一个非线性滤波,因此没有滤波模板,如果想用图像进行中值滤波,必须使用此函数。否则就需要对每一个像素进行操作,比较,排序,最后得到一个顺序选取中间的值,这个过程比线性滤波可以通过卷积来实现复杂很多。

cpp 复制代码
void cv::medianBlur(InputArray   src,
                    OutputArray  dst,
                    int          ksize
                   )

·src:待中值滤波的图像,可以是单通道,三通道和四通道,数据类型与滤波器的尺寸相关,当滤波器尺寸为3或5时,图像可以是CV_8U,CV_16U或CV_32F类型,对于较大尺寸的滤波器,数据类型只能是CV_8U。

·dst:输出图像,与输入图像src具有相同的尺寸和数据类型。

·ksize:滤波器尺寸,必须是大于1的奇数,例如:3,5,7...。

示例
cpp 复制代码
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv; //opencv的命名空间
using namespace std;


//主函数
int main()
{
	Mat img = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lena3Salt.png");//读取含有椒盐噪声的彩色图像
	Mat gray = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_S.png");//读取含有椒盐噪声的灰度图像
	Mat gray_g = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_G.png");//读取含有高斯噪声的灰度图像

	Mat imgResult3, imgResult9, grayResult3, grayResult9, gray_gResult3, gray_gResult9;//用于存放中值滤波结果

	medianBlur(img, imgResult3, 3);
	medianBlur(gray, grayResult3, 3);
	medianBlur(gray_g, gray_gResult3, 3);

	medianBlur(img, imgResult9, 9);
	medianBlur(gray, grayResult9, 9);
	medianBlur(gray_g, gray_gResult9, 9);

	imshow("imgResult3", imgResult3);
	imshow("grayResult3", grayResult3);
	imshow("gray_gResult3", gray_gResult3);

	imshow("imgResult9", imgResult9);
	imshow("grayResult9", grayResult9);
	imshow("gray_gResult9", gray_gResult9);

	waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出

	return 0;

}

运行程序后可以发现,滤波后,含有椒盐噪声的彩色图像已经去除椒盐噪声了,当尺寸扩大后,图像会模糊。灰度图像中的椒盐噪声也很好去除,尺寸较大时也产生模糊效果,对于高斯噪声,进行中值滤波后还是含有高斯噪声,中值滤波没有办法很好的处理高斯噪声,即使中值滤波尺寸扩大,还是有噪声的存在。

相关推荐
AIGC大时代14 分钟前
知网 AIGC 检测在罚什么:均匀句长、低指代、零口癖,并不等于「用过 ChatGPT」
人工智能·chatgpt·nlp·aigc·论文·知网·学术规范
华奥系科技17 分钟前
银发经济浪潮下,智慧养老该如何落地生根
大数据·人工智能
czxxxc21 分钟前
创客匠人AI观察:模型竞赛再提速,安全与治理成新主线
人工智能·知识付费
IT_陈寒28 分钟前
Redis缓存雪崩把我坑惨了,这次长记性了
前端·人工智能·后端
百胜软件@百胜软件35 分钟前
百胜软件入选“828精选AI解决方案图谱”,胜券AI助力零售品牌构建专属智能体
大数据·人工智能·零售
ai小陈1 小时前
Hunyuan3D-2云端部署实战:图生3D、文生3D怎么跑更稳
人工智能·科技·3d·ai·音视频·gpu算力
智驭未来掌门人1 小时前
别再让员工偷偷用 ChatGPT 了:用一台内网网关,把大模型变成"自来水"
人工智能
阿里云大数据AI技术1 小时前
EMR Serverless Spark多模态 Daft 算子市场免费公测 | 10分钟极速实战(附视频教程)
人工智能·spark
船厂电气自动化ai大模型1 小时前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
小婉1 小时前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js