Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何正确处理混合噪声类型的图像_Image_Matlab_Image Processing_Filter_Noise Reduction - Fatal编程技术网

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

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_

有噪音的图片是这样的。

我在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_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_);