function [Outimag] = meanfilter(imag,height,weight,filterheight,filterweight)
addH = (filterheight - 1)/2;
addW = (filterweight - 1)/2;
length = filterheight * filterweight;
Outimag = zeros(height,weight);
newheight = height + filterheight-1;
newweight = weight + filterweight-1;
Tempimag = zeros(newheight,newweight);
%%中间部分的填充
for i=addH+1:height+addH
for j=addW+1:weight+addW
Tempimag(i,j) = imag(i-addH,j-addW);
end
end
%%左右部分填充
for i=addH+1:addH+height
for j=1:addW
temp = 2*(addW -j + 1)-1;
Tempimag(i,j) = Tempimag(i,j+temp);
Tempimag(i,newweight-j+1) = Tempimag(i,newweight-j+1-temp);
end
end
%%%上下部分填充
for i=1:addH
for j=1:weight+addW+1
Tempimag(i,j) = Tempimag(i +(2*(addH -i + 1) - 1),j);
Tempimag(newweight-i+1,j) = Tempimag(newweight-i,j);
end
end
%%%由积分图来进行均值滤波
for i=1:height
for j=1:weight
Outimag(i,j) = fix((Tempimag(i,j)+Tempimag(i,j+1)+Tempimag(i,j+2)...
+Tempimag(i+1,j+1)+Tempimag(i+1,j+2)+Tempimag(i+1,j)...
+Tempimag(i+2,j)+Tempimag(i+2,j+1)+Tempimag(i+2,j+2))/length);
end
end
end