问题描述
有噪点的图片是这样的。 Noised picture: Image3.bmp
我在 MatLab 中使用一些内置和自行实现的过滤器进行图像处理。
我已经尝试了双边、中值和高斯的组合。双边和高斯代码在本文末尾。
img3 = double(imread('Image3.bmp')); % this is the noised image
lena = double(imread('lena_gray.jpg')); % this is the original one
img3_com = bilateral(img3,3,2,80);
img3_com = medfilt2(img3_com,[3 3],'symmetric');
img3_com = gaussian(img3_com,0.5);
img3_com = bilateral(double(img3_com),6,100,13);
SNR3_com = snr(img3_com,img3_com - lena); % 17.1107
然而,结果并不乐观,SNR 仅为 17.11。
原图是这样的。
Clean original image: lena_gray.jpg
您能否就如何处理它给我任何可能的想法?比如什么噪声发生器产生了噪声图像以及我可以使用什么过滤方法或图像处理方法来处理它。欣赏!!!
function img_new = bilateral(img_gray,window,sigmaS,sigmaI)
imgSize = size(img_gray);
img_new = zeros(imgSize);
for i = 1:imgSize(1)
for j = 1:imgSize(2)
sum = 0;
simiSum = 0;
for a = -window:window
for b = -window:window
x = i + a;
y = j + b;
p = img_gray(i,j);
q = 0;
if x < 1 || y < 1 || x > imgSize(1) || y > imgSize(2)
% q=0;
continue;
else
q = img_gray(x,y);
end
gaussianFilter = exp( - double((a)^2 + (b)^2)/ (2 * sigmaS^2 ) - (double(p-q)^2)/ (2 * sigmaI^2 ));
% gaussianFilter = gaussian((a^2 + b^2)^(1/2),sigma) * gaussian(abs(p-q),sigma);
sum = sum + gaussianFilter * q;
simiSum = simiSum + gaussianFilter;
end
end
img_new(i,j) = sum/simiSum;
end
end
% disp SNR
lena = double(imread('lena_gray.jpg'));
SNR1_4_ = snr(img_new,img_new - lena);
disp(SNR1_4_);
我的高斯实现gaussian.m
function img_gau = gaussian(img,hsize,sigma)
h = fspecial('gaussian',sigma);
img_gau = conv2(img,h,'same');
% disp SNR
lena = double(imread('lena_gray.jpg'));
SNR1_4_ = snr(img_gau,img_gau - lena);
disp(SNR1_4_);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)