之前在使用matlab时,有库函数可以直接给图像添加椒盐、高斯噪声等,最近在学习opencv,发现库中并没有定义这种加噪函数(可能是我没有找到 `_` ),所以想要给图片加噪,就必须得自己写函数。
首先 , 通过查找课本以及博客中其他人的见解,得出如下理解:
1.椒盐噪声
椒盐噪声(salt-and-pepper noise)又称脉冲噪声,它随机改变一些像素值,在二值图像上表现为使一些像素点变白,一些像素点变黑。椒盐噪声是指两种噪声,一种是盐噪声(salt noise),另一种是胡椒噪声(pepper noise)。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。————引自百度百科
直白的说,椒盐噪声的出现点是随机的,噪声的数值是固定的,要么是 0 (黑色),要么是 255 (白色)。
函数程序如下:
//添加椒盐噪声
IplImage* addSaltNoise(IplImage* image, int n) {
IplImage* dst = cvCloneImage(image);
for(int k = 0 ; k < n ;k++)
{
//取随机值
int row = rand()%dst->height;
int col = rand() % dst->width;
//图像通道判断
if (d