OpenCV——彩色图像添加椒盐噪声

📅 发布时间:2026/7/11 14:21:25 👁️ 浏览次数:
OpenCV——彩色图像添加椒盐噪声
目录一、椒盐噪声二、C代码三、结果展示1、原图2、添加椒盐噪声四、python代码五、结果展示1、原图2、添加椒盐噪声一、椒盐噪声椒盐噪声是数字图像中的常见噪声一般是图像传感器、传输信道及解码处理等产生的黑白相间的亮暗点噪声椒盐噪声常由图像切割产生。椒盐噪声是指两种噪声盐噪声和椒噪声。盐噪声一般是白色噪声椒噪声一般为黑色噪声。前者属于高灰度噪声或者属于低灰度噪声一般两种噪声同时出现呈现黑白杂点。去除椒盐噪声常用的方法是中值滤波。二、C代码#includeopencv2\opencv.hpp#includeiostreamusingnamespacecv;usingnamespacestd;//-----------------------------------椒盐噪声函数----------------------------------------------voidsaltAndPepper(cv::Mat image,intn){for(intk0;kn/2;k){// 随机确定图像中添加椒盐噪声的位置inti,j;istd::rand()%image.cols;// 取余数运算保证在图像的列数内jstd::rand()%image.rows;// 取余数运算保证在图像的行数内intwrite_blackstd::rand()%2;// 判定为白色噪声还是黑色噪声的变量// 添加白色噪声if(write_black0){image.atcv::Vec3b(j,i)[0]255;//cv::Vec3b为opencv定义的一个3个值的向量类型image.atcv::Vec3b(j,i)[1]255;//[]指定通道B:0G:1R:2image.atcv::Vec3b(j,i)[2]255;}// 添加黑色噪声else{image.atcv::Vec3b(j,i)[0]0;//cv::Vec3b为opencv定义的一个3个值的向量类型image.atcv::Vec3b(j,i)[1]0;//[]指定通道B:0G:1R:2image.atcv::Vec3b(j,i)[2]0;}}}intmain(){Mat lenaimread(qq.jpg);if(lena.empty()){cout请确认图像文件名称是否正确endl;return-1;}imshow(原图,lena);saltAndPepper(lena,10000);// 彩色图像添加椒盐噪声imshow(添加噪声,lena);waitKey(0);return0;}三、结果展示1、原图2、添加椒盐噪声四、python代码importnumpyasnpimportcv2defsalt_pepper_noise(image,prob): 添加椒盐噪声 :param image: 输入图像 :param prob: 噪声比 :return: 带有椒盐噪声的图像 saltnp.zeros(image.shape,np.uint8)thres1-probforiinrange(image.shape[0]):forjinrange(image.shape[1]):rdnnp.random.rand()ifrdnprob:salt[i][j]0elifrdnthres:salt[i][j]255else:salt[i][j]image[i][j]returnsalt srccv2.imread(qq.jpg)cv2.namedWindow(input_image,cv2.WINDOW_AUTOSIZE)cv2.imshow(input_image,src)tarsalt_pepper_noise(src,0.01)cv2.imshow(noise,tar)cv2.waitKey(0)cv2.destroyAllWindows()五、结果展示1、原图2、添加椒盐噪声