opencv c++ 图像噪声及去噪
创始人
2024-03-07 14:28:45
0

1、噪声类型及生成

1.1、类型

高斯噪声椒盐噪声、泊松噪声、乘性噪声,等。

具体解释参考:(31条消息) 图像噪声简介_yeler082的博客-CSDN博客_图像噪声

高斯噪声                                                        泊松噪声

乘性噪声                                                       椒盐噪声

 

 原图

1.2、来源

图像获取过程中

两种常用类型的图像传感器CCD和CMOS采集图像过程中,由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引起的热噪声、场效应管的沟道热噪声、光子噪声、暗电流噪声、光响应非均匀性噪声。

图像信号传输过程中

由于传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。另外,在图像处理的某些环节当输入的对象并不如预想时也会在结果图像中引入噪声。

生成椒盐噪声:

void QuickDemo::noise_img(Mat& image)
{Mat img;image.copyTo(img);//产生椒盐噪声RNG rng(12345);int h = img.rows;//行数int w = img.cols;//列数int nums = 10000;//噪点个数定义//通过循环随机在图像上任意点生加上黑白噪声(生成概率相同)for (auto i = 0; i < nums; ++i) {//图像随机点坐标生成int x = rng.uniform(0, w);int y = rng.uniform(0, h);if (i % 2 == 1) {img.at(y, x) = Vec3b(255, 255, 255);}elseimg.at(y, x) = Vec3b(0, 0, 0);}namedWindow("椒盐噪声", WINDOW_FREERATIO);imshow("椒盐噪声", img);}

生成高斯噪声:

利用现有API

randn(inputMat, 与输入图像相同维度的均值,与输入图像相同维度的方差);

inputMat——在生成噪声图像时的输入矩阵为与原始图像大小类型均相同空矩阵

void QuickDemo::noise_img(Mat& image)
{//产生高斯噪声Mat noise = Mat::zeros(image.size(), image.type());randn(noise, (25, 25, 25), (30, 30, 30));//生成噪声图像Mat dst;add(noise, image, dst);namedWindow("高斯噪声", WINDOW_FREERATIO);imshow("高斯噪声", dst);
}

参考:(31条消息) 图像噪声简介_yeler082的博客-CSDN博客_图像噪声

2、去除噪声

2.1、中值滤波

将异常像素点取其周围一层或多层像素点,进行排列,将排列后的中值取代异常像素点值

常用于去除椒盐噪声(因为椒盐噪声是在图像上均匀随机产生的极限像素点值),但当异常点占原图大部分时就会无效果。

opencvAPI

mediaBlur(input ,output , kernelSize);

kernelSize——卷积核大小,int型;

代码:

    Mat dst;medianBlur(img, dst, 5);namedWindow("中值滤波", WINDOW_FREERATIO);imshow("中值滤波", dst);

2.2、高斯滤波

顾名思义,对高斯噪声效果较好

	GaussianBlur(dst2, dst, Size(5, 5), 0);namedWindow("高斯滤波", WINDOW_FREERATIO);imshow("高斯滤波", dst);

 2.3、边缘保留滤波(EPF)

a)高斯双边滤波

 

 API

d——双边模糊近邻选用像素点半径,和sigmaSpace一起控制卷积核大小,如果为0,则只由sigmaSpace制卷积核大小。

 sigmaColor——双边模糊颜色阈值,像素值大于该值的像素点将被处理。

sigmaSpace——双边模糊空间阈值,控制卷积核大小。

bilateralFilter(img, dst, 0, 100, 10);

b)非局部均值滤波

对像素点进行处理时,对周围像素点赋予权值,像素值相近的周边点赋予较高权值,像素值差距大的赋予较低权值。

 API

 官网OpenCV: Denoising

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...