利用MATLAB生成一幅128*128的灰度图片,对图片添加噪声(高斯噪声,均匀分布噪声以及椒盐噪声)并且观察它们的直方图变化。生成代码
时间: 2024-03-19 09:46:31 浏览: 23
好的,以下是MATLAB代码实现:
```matlab
% 生成灰度图片
img = uint8(zeros(128, 128));
for i = 1:128
for j = 1:128
img(i, j) = uint8(i/2 + j/2);
end
end
% 显示原始图片
figure, imshow(img), title('Original Image');
% 添加高斯噪声
gauss_noise = uint8(randn(size(img)) * 20);
img_gauss = img + gauss_noise;
% 显示添加高斯噪声后的图片
figure, imshow(img_gauss), title('Image with Gaussian Noise');
% 绘制添加高斯噪声后图片的直方图
figure, imhist(img_gauss), title('Histogram of Image with Gaussian Noise');
% 添加均匀分布噪声
uni_noise = uint8(rand(size(img)) * 50);
img_uni = img + uni_noise;
% 显示添加均匀分布噪声后的图片
figure, imshow(img_uni), title('Image with Uniform Noise');
% 绘制添加均匀分布噪声后图片的直方图
figure, imhist(img_uni), title('Histogram of Image with Uniform Noise');
% 添加椒盐噪声
salt_pepper_noise = uint8(rand(size(img)) * 255);
img_salt_pepper = img;
img_salt_pepper(salt_pepper_noise < 30) = 0;
img_salt_pepper(salt_pepper_noise > 225) = 255;
% 显示添加椒盐噪声后的图片
figure, imshow(img_salt_pepper), title('Image with Salt and Pepper Noise');
% 绘制添加椒盐噪声后图片的直方图
figure, imhist(img_salt_pepper), title('Histogram of Image with Salt and Pepper Noise');
```
代码中首先生成一个灰度图片,然后分别添加高斯噪声、均匀分布噪声和椒盐噪声,并且绘制每个噪声类型下图片的直方图。最终输出四幅图片以及四个直方图,可以观察到不同噪声类型对图片直方图的影响。