matlab自带函数实现高斯滤波(gauss filter)快速算法

将高斯核分为水平方向和垂直方向,先后对图像进行卷积处理,可提高处理速度。

function output=gaussFilter(I,sigma)
output=I;
ksize=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma 
window = fspecial('gaussian', [1,ksize], sigma); %使用1行ksize列的高斯核对图像先进行x方向卷积,再进行y方向卷积
for i = 1:size(I,3)
    ret = imfilter(I(:,:,i),window,'replicate');
    ret = imfilter(ret,window','replicate');
    output(:,:,i) = ret;
end 
end
下面是一般算法

function output=gaussFilter(I,sigma)

output = I.*0; 
window=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma  
H=fspecial('gaussian', window, sigma);

for c=1:size(I,3)
    output(:,:,c)=imfilter(I(:,:,c),H,'replicate');
end

end

matlab自带函数实现高斯滤波(gauss filter)快速算法_第1张图片

matlab自带函数实现高斯滤波(gauss filter)快速算法_第2张图片



你可能感兴趣的:(滤波算法)