1. 图像噪声
图像降噪(Image Denoising)是指从图像中去除噪声的过程,目的是提高图像质量,增强图像的视觉效果。
图像噪声是指图像中不希望出现的随机亮度或颜色变化,通常会降低图像的清晰度和可辨识度,以及会降低图像的质量并使图像分析和理解更加困难。
图像噪声主要有以下几个原因来产生的:
光线不足:光线不足会导致光子噪声增加,从而降低图像的信噪比。
电子元器件的热噪声:电子元器件在工作时会产生热噪声,这种噪声会影响图像的质量。
电路噪声:电路中的电磁干扰也会导致图像噪声的产生。
图像传输过程中的错误:图像在传输过程中可能会受到各种干扰,从而导致图像噪声的产生。
根据噪声的统计特性来分类,可以将图像噪声分为以下几类:
椒盐噪声:图像中随机出现黑白像素的噪声。
高斯噪声:最常见的噪声类型,其概率密度函数服从高斯分布。
泊松噪声:光子噪声的一种类型,其概率密度函数服从泊松分布。
斑点噪声:由图像传感器坏点或污点引起的噪声。
下面的例子,分别展示了在图像中添加椒盐噪声、高斯噪声、泊松噪声和斑点噪声。
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <random>
using namespace std;
using namespace cv;
void addSaltNoise(Mat &src, int num, Mat &dst)
{
dst = src.clone();
// 随机数产生器
std::random_device rd; //种子
std::mt19937 gen(rd()); // 随机数引擎
auto rows = src.rows; // 行数
auto cols = src.cols * src.channels();
for (int i = 0; i < num; i++)
{
auto row = static_cast<int>(gen() % rows);
auto col = static_cast<int>(gen() % cols);
auto p = dst.ptr<uchar>(row);
p[col++] = 255;
p[col++] = 255;
p[col] = 255;
}
}
void a