如何正确处理混合噪声类型的图像

问题描述

有噪点的图片是这样的。 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。

Filtered image: img3_com

原图是这样的。

Clean original image: lena_gray.jpg

您能否就如何处理它给我任何可能的想法?比如什么噪声发生器产生了噪声图像以及我可以使用什么过滤方法或图像处理方法来处理它。欣赏!!!

我的双边函数bilateral.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_);

我的高斯实现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 (将#修改为@)