一、简介
针对去除周期性噪声的同时容易造成图像的失真或降噪效果不理想的问题,提出了一种基于权重自适应形态学的周期性噪声去除方法。该方法使用不同尺度的结构元素对图像的周期性噪声进行串行处理,再将串行处理的结果并行处理,并通过自适应权值算法来构建复合级联滤波器,使用该滤波器滤除图像的周期性噪声。为了验证该算法的去噪性能,对周期性噪声及混合噪声进行了常用去噪算法的对比性实验。结果表明,视觉上,使用该算法去噪后的图像去噪效果较好且图像边缘和细节比较清晰; 定量评价标准上,使用该算法去噪后的图像的PSNR 比较高。
二、部分源码
clc; clear all; close all;
%载入图像
n1=uigetfile('*','选择文件');
Img=imread(n1);
%灰度化
if ndims(Img) == 3
I = rgb2gray(Img);
else
I = Img;
end
pic = I;
SE = strel('square',7);
pic= imdilate(pic,SE);
%添加噪声
Ig = imnoise(I,'poisson');
%获取算子
s = GetStrelList();
%串联去噪
e = ErodeList(Ig, s);
%计算权重
f = GetRateList(Ig, e);
%并联
Igo = GetRemoveResult(f, e);
figure;
%显示结果
subplot(2, 2, 1); imshow(Img, []); title('原图像');
subplot(2, 2, 2); imshow(I, []); title('灰度图像');
subplot(2, 2, 3); imshow(pic, []); title('形态学图像');
subplot(2, 2, 4); imshow(Ig, []); title('噪声图像');
figure;
subplot(2, 2, 1); imshow(e.eroded_co12, []); title('串联1处理结果');
subplot(2, 2, 2); imshow(e.eroded_co22, []); title('串联2处理结果');
subplot(2, 2, 3); imshow(e.eroded_co32, []); title('串联3处理结果');
subplot(2, 2, 4); imshow(e.eroded_co42, []); title('串联4处理结果');
figure;
subplot(1, 2, 1); imshow(Ig, []); title('噪声图像');
subplot(1, 2, 2); imshow(Igo, []); title('并联去噪图像');
%计算PSNR的值
psnr1 = PSNR(I, e.eroded_co12);
psnr2 = PSNR(I, e.eroded_co22);
psnr3 = PSNR(I, e.eroded_co32);
psnr4 = PSNR(I, e.eroded_co42);
psnr5 = PSNR(I, Igo);
psnr_list = [psnr1 psnr2 psnr3 psnr4 psnr5];
figure;
plot(1:5, psnr_list, 'r+-');
axis([0 6 18 24]);
set(gca, 'XTick', 0:6, 'XTickLabel', {'', '串联1', '串联2', '串联3', ...
'串联4', '并联', ''});
grid on;
title('PSNR曲线比较');
三、运行结果
四、软件版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信(有偿)