利用课程讲的滤波方法,自行设计滤波模板的内容和尺寸,分别对两个噪声图像进行去噪处理,得到的去噪结果,统一命名为denoise_lena_guassian和denoise_lena_salt_pepper。分别将去噪后的结果与原始图像(即没有噪声的lena_gray)进行比较。mTLb代码
时间: 2024-02-22 09:54:57 浏览: 62
对三幅经典的图像(lena、peppers、barbara)分别加上加性噪声和乘性噪声 对其进行中值滤波、均值滤波、小波变换
好的,以下是mTLb代码实现:
```matlab
% 读取图像
lena_gray = imread('lena_gray.jpg');
lena_guassian = imread('lena_guassian.jpg');
lena_salt_pepper = imread('lena_salt_pepper.jpg');
% 高斯滤波
gaussian_filter = fspecial('gaussian', [5 5], 2);
denoise_lena_guassian = imfilter(lena_guassian, gaussian_filter);
% 中值滤波
denoise_lena_salt_pepper = medfilt2(lena_salt_pepper, [3 3]);
% 计算评价指标
psnr_guassian = psnr(denoise_lena_guassian, lena_gray);
ssim_guassian = ssim(denoise_lena_guassian, lena_gray);
psnr_salt_pepper = psnr(denoise_lena_salt_pepper, lena_gray);
ssim_salt_pepper = ssim(denoise_lena_salt_pepper, lena_gray);
% 显示结果
subplot(2, 3, 1), imshow(lena_gray), title('原始图像');
subplot(2, 3, 2), imshow(lena_guassian), title('高斯噪声图像');
subplot(2, 3, 3), imshow(denoise_lena_guassian), title(sprintf('去噪图像\nPSNR=%.2f\nSSIM=%.2f', psnr_guassian, ssim_guassian));
subplot(2, 3, 4), imshow(lena_salt_pepper), title('椒盐噪声图像');
subplot(2, 3, 5), imshow(denoise_lena_salt_pepper), title(sprintf('去噪图像\nPSNR=%.2f\nSSIM=%.2f', psnr_salt_pepper, ssim_salt_pepper));
subplot(2, 3, 6), imshow(lena_gray-denoise_lena_salt_pepper), title('差异图像');
```
这里假设原始图像为lena_gray.jpg,高斯噪声图像为lena_guassian.jpg,椒盐噪声图像为lena_salt_pepper.jpg。代码中首先使用fspecial函数生成一个5x5的高斯滤波器,标准差为2,然后使用imfilter函数对高斯噪声图像进行滤波,得到去噪图片denoise_lena_guassian。接着,使用medfilt2函数对椒盐噪声图像进行中值滤波,得到去噪图片denoise_lena_salt_pepper。最后,使用psnr和ssim函数计算评价指标,并使用subplot和imshow函数将原始图像、噪声图像、去噪图像和差异图像显示在画布上。
希望这份代码能够帮到您!如果您还有其他问题,请随时提出。
阅读全文