I=zeros(128,128); I(1:128,1:128)=50; I(50:78,50:78)=100; I(100:28,100:28)=150; A=I/128; figure,imshow(A);title('原始图像'); figure,hist(double(A),10);title('原图直方图'); B=imnoise(A,'gaussian',0.05); figure,imshow(B);title('附加高斯噪声图像'); figure,hist(double(B),10);title('附加高斯噪声直方图'); C=imnoise(A,'speckle',0.05); figure,imshow(C);title('附加均匀分布噪声图像'); figure,hist(double(C),10);title('附加均匀分布噪声直方图'); D=imnoise(A,'salt & pepper',0.05); figure,imshow(D);title('附加椒盐噪声图像'); figure,hist(double(D),10);title('附加椒盐噪声直方图');代码解析
时间: 2023-11-17 19:06:41 浏览: 143
这段 MATLAB 代码的作用是生成一个大小为 128x128 像素的灰度图像,并以不同的方式附加噪声,最后显示图像和噪声的直方图。下面是代码的详细解析:
1. `I=zeros(128,128); I(1:128,1:128)=50; I(50:78,50:78)=100; I(100:28,100:28)=150;`:生成一个大小为 128x128 的矩阵 I,所有像素的初始值均为 50。接着,将矩阵 I 的某几个区域的像素值分别设置为 100 和 150,以模拟一张有一定纹理和明暗变化的灰度图像。
2. `A=I/128;`:将矩阵 I 中的像素值除以 128,得到一个取值范围为 0-1 的灰度图像 A。
3. `figure,imshow(A);title('原始图像');`:在一个新的窗口中显示灰度图像 A,并设置窗口标题为“原始图像”。
4. `figure,hist(double(A),10);title('原图直方图');`:在一个新的窗口中显示灰度图像 A 的直方图,并将直方图分成 10 个区间。
5. `B=imnoise(A,'gaussian',0.05);`:在灰度图像 A 上添加高斯噪声,噪声方差为 0.05。
6. `figure,imshow(B);title('附加高斯噪声图像');`:在一个新的窗口中显示添加了高斯噪声的图像 B,并设置窗口标题为“附加高斯噪声图像”。
7. `figure,hist(double(B),10);title('附加高斯噪声直方图');`:在一个新的窗口中显示添加了高斯噪声的图像 B 的直方图,并将直方图分成 10 个区间。
8. `C=imnoise(A,'speckle',0.05);`:在灰度图像 A 上添加均匀分布噪声,噪声方差为 0.05。
9. `figure,imshow(C);title('附加均匀分布噪声图像');`:在一个新的窗口中显示添加了均匀分布噪声的图像 C,并设置窗口标题为“附加均匀分布噪声图像”。
10. `figure,hist(double(C),10);title('附加均匀分布噪声直方图');`:在一个新的窗口中显示添加了均匀分布噪声的图像 C 的直方图,并将直方图分成 10 个区间。
11. `D=imnoise(A,'salt & pepper',0.05);`:在灰度图像 A 上添加椒盐噪声,噪声密度为 0.05。
12. `figure,imshow(D);title('附加椒盐噪声图像');`:在一个新的窗口中显示添加了椒盐噪声的图像 D,并设置窗口标题为“附加椒盐噪声图像”。
13. `figure,hist(double(D),10);title('附加椒盐噪声直方图');`:在一个新的窗口中显示添加了椒盐噪声的图像 D 的直方图,并将直方图分成 10 个区间。
阅读全文