OpenCV13-图像噪声:椒盐噪声和高斯噪声

博客介绍了图像噪声,包括高斯、椒盐等常见类型及成因。还阐述了减少噪声的图像处理技术。重点讲解了用OpenCV为图像添加椒盐和高斯噪声的步骤,如生成随机数确定噪声位置、种类,修改像素灰度值等,并提及相关代码实现。

OpenCV13-图像噪声:椒盐噪声和高斯噪声


1.噪声种类

图像噪声是指图像中的随机或非随机的不希望的视觉扰动。它可以出现在数字图像中的各种形式,例如颗粒状噪声、条纹、斑点、模糊、失真等。图像噪声可能是由于图像采集过程中的传感器噪声、电磁干扰、传输错误、压缩算法等原因引起的。

常见的图像噪声类型包括:

  1. 高斯噪声:高斯噪声是最常见的图像噪声类型之一。它是由于传感器噪声和环境干扰引起的,呈现为图像中的随机亮度变化。
  2. 椒盐噪声:椒盐噪声是指图像中出现随机黑白像素点,类似于盐和胡椒粉的颗粒。它通常是由于传感器故障或信号传输中的错误引起的。
  3. 斑点噪声:斑点噪声是指图像中出现的亮度不均匀的斑点,可能是由于摄像头或传感器的缺陷引起的。
  4. 条纹噪声:条纹噪声表现为图像中的水平或垂直条纹,通常是由于电源干扰或摄像头扫描时钟不稳定引起的。
  5. 压缩噪声:压缩噪声是在图像压缩中引入的,特别是在低比特率压缩中。它表现为图像细节的丢失、模糊或块状伪像。

为了减少或去除图像噪声,可以使用图像处理技术,例如平滑滤波、中值滤波、频域滤波等。这些技术可以根据噪声类型和特定应用的需求选择和调整参数,以改善图像质量并增强细节。

2.椒盐噪声

椒盐噪声又称作脉冲噪声,他会随机改变图像中的像素值,其样子就像是在图像上随机地撒上一些盐粒和黑椒粒,因此被称为椒盐噪声。

OpenCV没有提供专门用于为图像添加椒盐噪声的函数,需要使用者根据需求编写生成噪声的程序。考虑到椒盐噪声会在图像中的任何一个位置随机产生,因此对于椒盐噪声的生成,需要使用OpenCV中能够产生随机数的函数 rand() 。为了能够生成不同数据类型的随机数,该函数拥有多种演变形式:

namespace cvflann
{
   
   
    inline int rand();
    // low与high是输出随机数的最小值与最大值
    inline double rand_double(double high = 1.0, double low = 0);
    inline int rand_int(int high = RAND_MAX, int low = 0);
}

添加椒盐噪声的步骤:

1.确定椒盐噪声的位置。通过随机函数生成两个随机数,确定噪声点的行和列。

2.确定噪声的种类。噪声点的黑白也是随机的,可以再生成一个随机数,根据奇偶性确定黑白。

3.修改图像像素灰度值。判断图像的通道数,灰度图像单通道赋一个值,彩色图像三通道赋3个值。

最终得到含有噪声的图像。

下面是代码实现:

#include <opencv2/core/utils/logger.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

//盐噪声函数
void saltAndPepper(cv::Mat image, int n)
{
   
   
	//using cvflann::rand();
	for (int k = 0; k < n / 2; k++)
	{
   
   
		//随机确定图像中位置
		int i, j;
		i = cvflann::rand() % image.cols;  //取余数运算,保证在图像的列数内
		j = cvflann::rand() % image.rows;  //取余数运算,保证在图像的行数内
		int write_black = cvflann::rand() % 2;  //判定为白色噪声还是黑色噪声的变量
		if (write_black == 0)  //添加白色噪声
		{
   
   
			if (image.type() == CV_8UC1)  //处理灰度图像
			{
   
   
				image.at<uchar>(j, i) = 255;  //白色噪声
			}
			else if (image.type() == CV_8UC3)  //处理彩色图像
			{
   
   
				image.at<cv::Vec3b>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shlyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值