算法思想:
几何均值滤波器扩大图像进行边缘处理,除了滤波计算部分,几何均值滤波是将滤波器获得的数据累乘,将累乘结果求1/(n*m)次方的值,将最终结果存储到新的矩阵中,最后裁剪为原图的大小。
function gavgf = gavgfil(I,n)
%几何均值滤波器
%I为原图,n为滤波器的大小
[r,c]=size(I); %图像的行和列
dI=double(I);
dt=n-1; %边缘需要扩充的距离
f=zeros(r+dt,c+dt); %对边缘进行0值处理,根据滤波器的大小把图像扩大
fi=zeros(r+dt,c+dt);
for i=1:r
for j=1:c
f((i+dt/2),(j+dt/2))=dI(i,j);
end
end
for i=1+dt/2:r+dt/2 %对中心元素进行均质化
for j=1+dt/2:c+dt/2
w=f((i-dt/2):(i+dt/2),(j-dt/2):(j+dt/2)); %滤波器选中元素
mulw=1;
for k=1:n*n
mulw=mulw*w(k);
end
fi(i,j)=mulw.^(1/(n*n)); %将与模板运算后的各元素的均值赋给模板中心位置的元素
end
end
gavgf=zeros(r,c); %裁剪
for i=1:r
for j=1:c
gavgf(i,j)=fi(i+dt/2,j+dt/2); %将扩大的图像转变为原图大小
end
end
End