Image 如何正确处理混合噪声类型的图像
有噪音的图片是这样的。 我在MatLab中使用一些内置和自我实现的过滤器进行图像处理 我已经尝试了双边、中位数和高斯组合。双边码和高斯码在这篇文章的末尾Image 如何正确处理混合噪声类型的图像,image,matlab,image-processing,filter,noise-reduction,Image,Matlab,Image Processing,Filter,Noise Reduction,有噪音的图片是这样的。 我在MatLab中使用一些内置和自我实现的过滤器进行图像处理 我已经尝试了双边、中位数和高斯组合。双边码和高斯码在这篇文章的末尾 img3=double(imread('Image3.bmp'));%这是有噪声的图像 lena=double(imread('lena_gray.jpg');%这是原版的 img3_com=双边(img3,3,2,80); img3_-com=medfilt2(img3_-com,[3],“对称”); img3_com=高斯分布(img3_
img3=double(imread('Image3.bmp'));%这是有噪声的图像
lena=double(imread('lena_gray.jpg');%这是原版的
img3_com=双边(img3,3,2,80);
img3_-com=medfilt2(img3_-com,[3],“对称”);
img3_com=高斯分布(img3_com,3,0.5);
img3_-com=双边(双(img3_-com),6100,13);
SNR3_com=信噪比(img3_com,img3_com-lena);%17.1107
然而,当信噪比仅为17.11时,结果并不乐观
原图是这样的
你能告诉我如何处理它吗?比如什么样的噪声发生器产生了有噪声的图像,我可以用什么样的滤波方法或图像处理方法来处理它。感谢
我的双边功能双边.m
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_);
欢迎来到堆栈溢出!这个问题对这个网站来说太广泛了。你应该问一些更具体的问题,包括。另外,
双边
和高斯
似乎不是标准的Matlab/图像处理工具箱功能如果有最终解决方案,那么所有这些过滤器都不存在……@LuisMendo谢谢!这是我第一次尝试堆栈溢出。我会尽量把我的问题说得更具体一些。@AnderBiguri谢谢!我完全同意。这就是为什么我试图结合滤波器和图像处理技术来获得更高的信噪比。我想知道如何分析原始图像来判断组合方式。
function img_gau = gaussian(img, hsize, sigma)
h = fspecial('gaussian', hsize, 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_);