数字图像在进行数学形态滤波去噪时,根据噪声特点可以尝试采用维数由小到大的结构元素来进行处理,进而达到滤除不同噪声的目的。采用数学形态学的多结构元素,可以更多地保持数字图像的几何特征。因此,选择构建串联滤波器来进行图像滤波,就是将同一形状的结构元素按维数从小到大的顺序来对图像进行滤波,如下图所示:
数字图像在进行数学形态滤波去噪时,根据噪声特点可以尝试采用维数由小到大的结构元素来进行处理,进而达到滤除不同噪声的目的。采用数学形态学的多结构元素,可以更多地保持数字图像的几何特征。因此,选择构建串联滤波器来进行图像滤波,就是将同一形状的结构元素按维数从小到大的顺序来对图像进行滤波。也可以将上面不同形状的结构元素所构成的串联滤波器进行并联,结合自适应权值算法来构建串、并联符合滤波器。
假设输入图像为f(x),经某种形状的结构元素的串行滤波结果为fi(x),i=1,2,...,n,则输出图像为F(x)。结构元素结合自适应算法来确定权值a1,a2,...,an,确定输出图像:
F(x) = sum(ai*fi(x)), i = 1,2,...,n
假设n种形状的结构元素权值分别为:a1,a2,...,an,在对图像进行腐蚀的过程中n中形状的结构元素看匹配图像的次数分别为b1,b2,...,bn,则自适应计算权值的公式为 :
ai = bi/(b1+b2+...+bn)
一般而言,如果选择的结构元素可以探测到图像的边缘等信息,则可匹配的次数多,反之则少。
clc; clear all; close all;
filename = fullfile(pwd, 'images/im.jpg');
Img = imread(filename);
if ndims(Img) == 3
I = rgb2gray(Img);
else
I = Img;
end
Ig = imnoise(I,'poisson');
s = GetStrelList();
e = ErodeList(Ig, s);
f = GetRateList(Ig, e);
Igo = GetRemoveResult(f, e);
figure;
subplot(1, 2, 1); imshow(I, []); title('原图像');
subplot(1, 2, 2); 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('并联去噪图像');
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曲线比较');
联系客服