最小均方滤波器可以降低图像中的噪声?

时间:2014-03-03 10:12:25

标签: matlab image-processing

我有一个参考图像和输出图像,它有很多噪音。我为两个图像中的一部分创建了一个蒙版。我想设计一个过滤器,当应用于这个区域时,可以应用于整个区域。我是使用最小均方法来减少噪音。但每次均方不断增加。任何想法如何解决这个问题。我使用MAT LAB来做这个。这是我的代码。

    output=double(imread('obtained_output.jpg'));
    reference=double(imread('reference_output.jpg')); 
    [M,N]=size(output);
    upper_mask_obtained = output(1:100, 1:100);
    lower_mask_obtained=output(201:300,1:100);
    total_mask_obtained=[upper_mask_obtained;lower_mask_obtained];
    upper_mask_reference = reference(1:100, 1:100);
    lower_mask_reference=reference(201:300,1:100);
    total_mask_reference=[upper_mask_reference;lower_mask_reference];
           Ns=5;
          [a,b]=size(total_mask_reference);
           u=.000000001;
           W=ones(Ns,Ns);
          Y=zeros(Ns,Ns); 
          DD=zeros(Ns,Ns);
          error=zeros(M,N);
          e=zeros(Ns,Ns);
          error_mask=abs(total_mask_obtained-total_mask_reference);
          s= sum(sum(error_mask.^2));
          mean_square_error=(s/(a*b));

            while(mean_square_error>7)

            for m=1+Ns:200
             for n=1+Ns:100 

               for l=1:Ns
                 for k=1:Ns

                    Y(l,k)=total_mask_obtained(m-Ns+l-1,n-Ns+k-1);
                    DD(l,k)=total_mask_reference(m-Ns+l-1,n-Ns+k-1);     
                 end
                end 

            Z=conv2(Y,W,'same')/sum(sum(W));
            e=DD(3,3)-Z(3,3); 
            W=(W+u*e*Y);
            total_mask_obtained(m-Ns+2,n-Ns+2)=Z(3,3);
           end 
          end 

          error=total_mask_reference-total_mask_obtained;
          mean_square_error=sum(sum(error.^2))/(a*b); 

         end

         figure(2);
         final_output=(conv2(output,W,'same')/(sum(sum(W))));
         imshow(uint8(final_output));

1 个答案:

答案 0 :(得分:0)

我认为通过使用高斯滤波器可以很好地完成您的任务。它已经内置在Matlab中。 http://www.mathworks.com/help/images/ref/fspecial.html请查看此内容以供参考。对不起,我是StackOverflow的新手。所以我还无法添加评论。对不起,如果它没有回答你的问题。