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;

}

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

相关推荐
warm3snow3 分钟前
AI 重塑产品管理工具:从 Jira 到智能体项目经理的终极演进
人工智能·ai·excel·项目管理·飞书·产品经理·jira·协同·tapd
吴佳浩15 分钟前
OpenClaw macOS 完整安装与本地模型配置教程(实战版)
人工智能·macos·agent
吴佳浩1 小时前
OpenClaw 2026.3.2 — 2026.3.8 权限变更与安全加固
人工智能·openai·agent
左右用AI1 小时前
将openclaw接入飞书:10分钟,让你的AI员工直接操作你的文档和表格!
人工智能
shuaicoding2 小时前
OpenClaw 完全指南:让你的 AI 助手真正『长』在浏览器里
人工智能
刀法如飞2 小时前
AI时代,程序员都应该是算法思想工程师
人工智能·设计模式·程序员
理想小青年2 小时前
OpenClaw网络搜索Tavily Search Skill 安装教程
人工智能
yangpow23 小时前
深度解析 OpenClaw:一个自托管 AI Agent 网关的架构设计与安全机制
人工智能
agentium3 小时前
1小时LangChain教程
人工智能
工边页字3 小时前
面试官:请详细介绍下AI中的token,越详细越好!
前端·人工智能·后端