OpenCV 笔记(28):图像降噪算法——中值滤波、高斯滤波

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
  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值