人工智能编程语言大作业~
- 椒盐噪声实现思路
- 然后遍历上述矩阵,对随机选到的像素进行噪声处理,如果是椒(0)则通道值都变为0(显示黑色),盐(1)则都变为通道值的最大值(显示白色)。
- 然后根据信噪比生成椒盐噪声:先通过rand生成均匀分布的随机数,产生一个三维的矩阵,分别确定要添加噪声的行列值和添加椒(0)或者盐(1)的信息值;
- 然后确定信噪比(噪声占图片像素的多少);
- 首先读取照片,读取后获得一个像素矩阵,该矩阵描述了照片通道值的大小。
- matlab实现
clear;clc
rng('shuffle');%防止每次生成随机数结果一样
img=imread('peppers.png');%读取图片
img_new=img;
row=size(img_new,1);%获取图片的行
col=size(img_new,2);%获取图片的列
channel=size(img_new,3);%获取图片的通道数(可以确认是RGB还是灰度图等)信息
type=class(img(1,1,1));
a=str2num((type(isstrprop(type,'digit'))));%获取是8位图还是16位图的信息,后面利用a作最大值撒盐
%从输入中获取信噪比,从而确定要撒的椒盐数目
SNR=input("the jiao yan rate(0-1):");
n=int16(SNR*row*col);
%通过均匀生成的随机数,确定撒椒盐的地方以及撒椒(0)还是盐(1)
change=[[randi(row,n,1)] [randi(col,n,1)] [randi([0 1],n,1)]];
%撒椒盐
for i=1:n
for j=1:channel
img_new(change(i,1),change(