网站需要证件,网站服务器速度,教你做网站和学习教程熊掌号,服务器主机如何搭建wordpress目录
1.图像噪声介绍
2.椒盐噪声的产生
3.高斯噪声的产生 1.图像噪声介绍
噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化#xff0c;这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。
以下是几种常见的图像噪声类型#xff1a; 1…目录
1.图像噪声介绍
2.椒盐噪声的产生
3.高斯噪声的产生 1.图像噪声介绍
噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。
以下是几种常见的图像噪声类型 1.椒盐噪声:又被称作脉冲噪声它会随机改变图像中的像素值是由相机成像、图像传输、解码处理等过程产生的黑白相间的亮暗点噪声。 2. 高斯噪声:高斯噪声是指噪声分布的概率密度函数服从高斯分布(正态分布)的一类噪声。
2.椒盐噪声的产生
椒盐噪声生成的步骤
Step1:确定添加椒盐噪声的位置。Step2:确定噪声的种类。Step3:修改图像像素灰度值。Step4:得到含有椒盐噪声的图像。 由于椒盐噪声是随机产生的所以我们要使用opencv中能够产生 随机数的函数有下面两个 1.rand_double() double cvflann::rand_double ( double high1.0, double low 0 ) 2.rand_int() int cvflann::rand_int ( int high RAND MAX, int low 0 ) 由于图像像素中的数据都是整数并且产生的椒盐噪声的数据是0或者255的整数我们主要使用rand_int()这个函数。 在OpenCV中可以使用cv::Mat类和随机数生成函数rand_int()来模拟生成椒盐噪声。下面是一个示例代码展示如何在图像中添加椒盐噪声 #include opencv2/opencv.hpp
#include iostreamusing namespace cv;
using namespace std;//图像添加椒盐噪声函数
void saltAndPepper(Mat image,int n){for(int k0;kn/2;k){//随机确定图像中的位置int i,j;icvflann::rand_int()%image.cols;//取余数运算保证在图像的列数内jcvflann::rand_int()%image.rows;//取余数运算保证在图像的行数内int write_blackrand()%2;//判断为白色噪声还是黑色噪声的变量if(write_black0)//添加白色噪声{if(image.type()CV_8UC1){image.atuchar(j,i)255;//白色噪声}else if(image.type()CV_8UC4)//处理彩色图片{image.atVec4b(j,i)[0]255;//Vec4b为opencv定义的一个3个值的向量类型指定通道B:0 G:1 R:2image.atVec4b(j,i)[1]255;image.atVec4b(j,i)[2]255;image.atVec4b(j,i)[3]255;}}else{//添加黑色噪声if(image.type()CV_8UC1){image.atuchar(j,i)0;//白色噪声}else if(image.type()CV_8UC4)//处理彩色图片{image.atVec4b(j,i)[0]0;//Vec4b为opencv定义的一个3个值的向量类型指定通道B:0 G:1 R:2image.atVec4b(j,i)[1]0;image.atVec4b(j,i)[2]0;image.atVec4b(j,i)[3]0;}}}
}
//椒盐噪声
void Saltandpepper_noise(Mat image){Mat gray;cvtColor(image,gray,COLOR_BGR2GRAY);imwrite(/sdcard/DCIM/image.png,image);//展示原图imwrite(/sdcard/DCIM/gray.png,gray);saltAndPepper(image,10000);//彩色图像添加椒盐噪声saltAndPepper(gray,10000);//灰度图像添加椒盐噪声imwrite(/sdcard/DCIM/image_saltAndPepper.png,image);imwrite(/sdcard/DCIM/gray_saltAndPepper.png,gray);}
在上面的代码中首先包含了OpenCV的头文件opencv2/opencv.hpp。然后定义了一个名为SaltAndPepper()的函数用于向图像中添加椒盐噪声。
该函数使用cvflann::rand_int()函数生成随机数并根据给定的噪声比例计算添加噪声的像素数量。接着在图像中随机选择这些像素并将其值设置为黑色0或白色255从而模拟生成椒盐噪声。
在Saltandpepper_noise函数中读取了原始图像并调用SaltAndPepper()函数来添加椒盐噪声。然后使用cv::imwrite()显示带有噪声的图像。 灰度图像 灰度图像添加椒盐噪声 彩色图像 彩色图像添加椒盐噪声
请注意在示例代码中假设待处理的图像是8位无符号整型单通道灰度图像CV_8UC1或4通道彩色图像CV_8UC4。如果处理的图像类型不同需要相应地修改代码。
3.高斯噪声的产生
高斯噪声生成的步骤
Step1:创建一个与图像尺寸、数据类型以及通道数相同的Mat类变量。
Step2:在Mat类变量中产生符合高斯分布的随机数。
Step3:将原图像和含有高斯分布的随机数矩阵相加。
Step4:得到添加高斯噪声的图像。
在OpenCV中RNG::fill()是一个用于填充数组或矩阵的函数它可以生成指定分布的随机数并将其存储在指定的数据结构中。该函数的签名如下 void cv::RNG::fill ( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange false ) mat用于存放随机数的矩阵目前只支持低于5通道的矩阵。distType指定生成随机数分布的类型可以是以下值之一 RNG::UNIFORM均匀分布RNG::NORMAL正态分布高斯分布a生成分布所需的参数之一。对于均匀分布它表示随机数的下界对于正态分布它是均值。b生成分布所需的参数之二。对于均匀分布它表示随机数的上界对于正态分布它是标准差。saturateRange一个可选的布尔值如果为true则将生成的随机数截断到输出数组或矩阵的数据类型的有效范围内。
在OpenCV中可以使用随机数生成函数和高斯分布函数来模拟生成高斯噪声。下面是一个示例代码展示如何在图像中添加高斯噪声
//高斯噪声
void Gaussian_noise(Mat image){Mat gray;cvtColor(image,gray,COLOR_BGR2GRAY);Mat image_noiseMat::zeros(image.rows,image.cols,image.type());Mat gray_noiseMat::zeros(gray.rows,gray.cols,gray.type());imwrite(/sdcard/DCIM/image.png,image);//展示原图imwrite(/sdcard/DCIM/gray.png,gray);RNG rng;//创建一个RNG类rng.fill(image_noise,RNG::NORMAL,10,20);//生成三通道的高斯分布随机数rng.fill(gray_noise,RNG::NORMAL,15,30);imwrite(/sdcard/DCIM/image_noise.png,image_noise);//三通道的高斯噪声imwrite(/sdcard/DCIM/gray_noise.png,gray_noise);//单通道的高斯噪声imageimageimage_noise;//在彩色图像中添加高斯噪声graygraygray_noise;//在灰度图像中添加高斯噪声//显示添加高斯噪声后的图像imwrite(/sdcard/DCIM/image_Gaussian.png,image);imwrite(/sdcard/DCIM/gray_Gaussian.png,gray);
}
这段示例代码演示了如何生成高斯噪声并将其添加到彩色图像和灰度图像中。
首先代码使用cvtColor函数将输入的彩色图像转换为灰度图像并创建了gray和image变量来存储结果。
接下来代码创建了两个空白图像image_noise和gray_noise它们与输入图像和灰度图像具有相同的尺寸和类型。这些图像将用于存储生成的高斯噪声。
然后代码利用RNG类创建了一个随机数生成器对象rng。
通过调用rng.fill()函数代码将生成服从高斯分布的随机数填充到image_noise和gray_noise中。第一个参数是要填充的图像第二个参数RNG::NORMAL表示生成的随机数应符合正态分布。第三个和第四个参数分别表示高斯分布的均值和标准差这里分别为10和20对于image_noise以及15和30对于gray_noise。这些值可以根据需要进行调整。
之后代码使用imwrite函数将原始图像、灰度图像、生成的高斯噪声图像保存到指定路径将结果可视化。
最后代码将高斯噪声添加到输入的彩色图像和灰度图像中通过对应的像素相加。结果图像被保存并可视化。 灰度图像 灰度图像添加高斯噪声 彩色图像 彩色图像添加高斯噪声