快速均值滤波

原创 2013年12月04日 23:44:14

采用积分图进行加速,实现与滤波窗口大小无关的效率
积分图:图像I的积分图S是与其大小相同的图像,S的每一像素S(u,v)存贮的是I(u,v)左上角所有像素的颜色值之和。
积分图可增量计算,只需对原图进行一遍扫描:S(u,v)=S(u,v-1)+sum(I(1:u,v))

设滤波窗口大小为2w+1,滤波结果为图像O,则:

Z=(2w+1)*(2w+1)为像素个数;中括号内即为滤波窗口覆盖的像素颜色值之和;


clear;
A1=imread('H:/数字图像处理/13_input.jpg');
w=str2double(inputdlg('请输入滤波窗口大小', 'INPUT scale factor', 1, {'2'}));
z=(2*w+1)*(2*w+1);
A2=imnoise(A1,'salt & pepper',0.01);
%A2=rgb2gray(A2);
[nrows,ncols,ncoms]=size(A2);
OUT = uint8(zeros(nrows,ncols,ncoms));%输出图像
if(ncoms==1)
    S=zeros(nrows,ncols);
    S(1,1)=A2(1,1);
    for u=2:nrows
        S(u,1)=S(1,1)+A2(u,1);
    end    
    for u=1:nrows
       for v=2:ncols
         S(u,v)=S(u,v-1)+sum(A2(1:u,v));          
       end
    end
    t=S(3,2)/6;
  for v=1:ncols-w
      for i=1:w+1
        for j=0:w
            OUT(i,v+j)=S(i,v+j)/(i*(v+j));            
        end        
      end    
  end
for v=1:ncols-w+1
    for i=nrows-w+1:nrows
        for j=0:w-1
           OUT(i,v+j)=S(i,v+j)/(i*(v+j));            
        end        
    end    
end
for u=w+2:nrows-w-w
    for i=0:w
        for j=1:w+1
            OUT(u+i,j)=S(u+i,j)/((u+i)*j);            
        end
    end
end
for u=w+2:nrows-w-w+1
    for i=0:w-1
        for j=ncols-w+1:ncols
            OUT(u+i,j)=S(u+i,j)/((u+i)*j);            
        end
    end
end
for u=w+2:nrows-w
    for v=w+2:ncols-w
        OUT(u,v)=(1/z)*(S(u+w,v+w)+S(u-w-1,v-w-1)-S(u+w,v-w-1)-S(u-w-1,v+w));        
    end
end
end


if(ncoms==3)
R = A2(:,:,1);
G = A2(:,:,2);
B = A2(:,:,3);
%输出图像的RGB分量
RR = uint8(zeros(nrows,ncols));
GG = uint8(zeros(nrows,ncols));
BB = uint8(zeros(nrows,ncols));
%各分量上的积分量
Sr =zeros(nrows,ncols);
Sg =zeros(nrows,ncols);
Sb =zeros(nrows,ncols);
Sr(1,1)=R(1,1);
Sg(1,1)=G(1,1);
Sb(1,1)=B(1,1);
for u=2:nrows
    Sr(u,1)=Sr(u-1,1)+R(u,1);
    Sg(u,1)=Sg(u-1,1)+G(u,1);
    Sb(u,1)=Sb(u-1,1)+B(u,1);
end
for u=1:nrows
    for v=2:ncols
        Sr(u,v)=Sr(u,v-1)+sum(R(1:u,v));
        Sg(u,v)=Sg(u,v-1)+sum(G(1:u,v));
        Sb(u,v)=Sb(u,v-1)+sum(B(1:u,v));        
    end
end
%边界处理
for v=1:ncols-w
    for i=1:w+1
        for j=0:w
            RR(i,v+j)=Sr(i,v+j)/(i*(v+j));
            GG(i,v+j)=Sg(i,v+j)/(i*(v+j));
            BB(i,v+j)=Sb(i,v+j)/(i*(v+j));            
        end        
    end    
end
for v=1:ncols-w+1
    for i=nrows-w+1:nrows
        for j=0:w-1
            RR(i,v+j)=Sr(i,v+j)/(i*(v+j));
            GG(i,v+j)=Sg(i,v+j)/(i*(v+j));
            BB(i,v+j)=Sb(i,v+j)/(i*(v+j));
        end        
    end    
end
for u=w+2:nrows-w-w
    for i=0:w
        for j=1:w+1
            RR(u+i,j)=Sr(u+i,j)/((u+i)*j);
            GG(u+i,j)=Sg(u+i,j)/((u+i)*j);
            BB(u+i,j)=Sb(u+i,j)/((u+i)*j);
        end
    end
end
for u=w+2:nrows-w-w+1
    for i=0:w-1
        for j=ncols-w+1:ncols
            RR(u+i,j)=Sr(u+i,j)/((u+i)*j);
            GG(u+i,j)=Sg(u+i,j)/((u+i)*j);
            BB(u+i,j)=Sb(u+i,j)/((u+i)*j);
        end
    end
end
for u=w+2:nrows-w
    for v=w+2:ncols-w
        RR(u,v)=(1/z)*(Sr(u+w,v+w)+Sr(u-w-1,v-w-1)-Sr(u+w,v-w-1)-Sr(u-w-1,v+w));
        GG(u,v)=(1/z)*(Sg(u+w,v+w)+Sg(u-w-1,v-w-1)-Sg(u+w,v-w-1)-Sg(u-w-1,v+w));
        BB(u,v)=(1/z)*(Sb(u+w,v+w)+Sb(u-w-1,v-w-1)-Sb(u+w,v-w-1)-Sb(u-w-1,v+w));
    end
end
OUT(:,:,1) = RR;
OUT(:,:,2) = GG;
OUT(:,:,3) = BB;
end
imshow(A1),title('原图');
figure;
imshow(A2),title('加噪声后的图片');
figure;
imshow(OUT),title('均值滤波后的图片');


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

均值滤波的快速解法

均值滤波的快速解法 均值滤波是一种非常常见的滤波方法,本身算法难度并不大,但是想当然的算法复杂度都是width*height*size的复杂度。下面我试着写了下一个height*width复杂度算法,...

【图像处理】快速均值滤波

​忙里偷闲,整理了一下之前看的材料和自己实现的代码,这次说说均值滤波的事儿。之前写过关于中值滤波的函数,传送门...
  • Kena_M
  • Kena_M
  • 2015年08月22日 16:13
  • 1992

均值滤波程序

  • 2017年02月17日 22:28
  • 547B
  • 下载

线性滤波:方框、均值、高斯

向浅墨学习。 本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/...

阿尔法均值滤波函数

  • 2015年11月18日 15:59
  • 344B
  • 下载

中值和均值滤波图像恢复处理

  • 2012年02月15日 12:28
  • 8KB
  • 下载

【opencv学习笔记1】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。...

非局部均值滤波代码

  • 2013年11月12日 10:01
  • 725KB
  • 下载

方框高斯均值滤波总集合

  • 2015年05月14日 16:17
  • 31.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速均值滤波
举报原因:
原因补充:

(最多只允许输入30个字)