Bilateral Filtering双边滤波

1.Introduction

双边滤波属于局部滤波的一种,本质是利用局部纹理的相似性,对依赖距离的权重滤波器(Gaussian,mean Filtering)等进行再加权,典型的模型如:

           

图像示例即:

                        

一个简单的matlab版本双边滤波demo如下,此处定义距离加权因子为:

                                                                                    w=\frac{1}{|distance|+1}

clc;
clear all;
close all;

image=imread('src1.bmp');
image=double(image);

%1.normal gaussian filtering
lpf=fspecial('gaussian',5,3);
dst=imfilter(image,lpf,'replicate');

%2.simple bilateral Filtering demo
[row,col]=size(image);
dst1=image;
fz=5;
for i=3:row-2
    for j=3:col-2
        src_block=image(i-2:i+2,j-2:j+2);
        dw=1./(1+abs(src_block-image(i,j)));
        w=dw.*lpf;
        w=w./sum(abs(w(:)));
        dst1(i,j)=sum(sum(w.*src_block));
    end
end

%display result
figure,subplot(2,2,1),imshow(image,[]);title('src');
hold on,subplot(2,2,2),imshow(dst,[]);title('dst-gaussian');
hold on,subplot(2,2,3),imshow(dst1,[]);title('dst1-bilateral');
hold on,subplot(2,2,4),imshow(dst-dst1,[]);title('diff=dst-dst1');

效果图如下:

通过diff图像,很明显双边滤波能很好的保留图像边缘,而平坦区域得到一定程度的平滑。

2.加速的双边滤波

由于无法进行行列分离且依赖局部信息定义卷积核,理想的双边滤波较为耗时,Kunal Narayan Chaudhury等在论文《Fast O(1) bilateral filtering using trigonometric range kernels》提出,基于升余弦Raised cosines函数来逼近高斯函数,利用一些特性把值域函数分解为一系列函数的叠加,以此,可以分解两步:(1)计算分解图像;(2)对分解进行空域高斯滤波(此处可以利用傅立叶变换在频域求解,对于尺寸为M的图像,单次计算时间复杂度O\left ( M^{2} log_{2}\left ( M \right ))\right ),继而normalization。

具体方法如:

实现代码如:

clc;
clear all;
close all;

image=imread('src1.bmp');
image=double(image);

%1.init
deltaSpatial=0.4;
deltaRange=0.5;
T=max(image(:));
gamma=pi/(2*T);
rho=gamma*deltaRange;
N=3;
f=image;

%2.auxlliary image
for n=0:N
    temp=gamma*(2*n-N)*f;
    b(:,:,n+1)=exp(1i*temp/(rho*sqrt(N)));
    g(:,:,n+1)=b(:,:,n+1).*f;
    c=factorial(N)/(factorial(n)*factorial(N-n));
    d(:,:,n+1)=c*exp(-1i*temp/(rho*sqrt(N)))/(2.^N);
end

%3.gaussian filtering
size=15;
lpf=fspecial('gaussian',size,deltaSpatial);
for n=0:N
    b(:,:,n+1)=imfilter(b(:,:,n+1),lpf,'replicate');
    g(:,:,n+1)=imfilter(g(:,:,n+1),lpf,'replicate');
end

%4.display result
result=abs(sum(d.*g,3)./sum(d.*b,3));

figure,subplot(1,3,1),imshow(f,[]);title('src');
hold on,subplot(1,3,2),imshow(result,[]);title('dst');
hold on,subplot(1,3,3),imshow(f-result,[]);title('diff');

 

双边滤波在图像处理领域有广泛的应用场景,以下是一些常见的应用场景: 1. 图像去噪:双边滤波能够有效地去除图像中的各种类型的噪声,包括高斯噪声、椒盐噪声等。它能够平滑图像,同时保持图像的细节和边缘信息,使得去噪后的图像更加清晰和自然。 2. 图像增强:双边滤波可以用于增强图像的细节和纹理信息。通过调整滤波器参数,可以使得图像中的细节更加突出,纹理更加清晰。这对于图像增强、图像重建等任务非常有用。 3. 边缘保护:传统的线性滤波器在平滑图像时会模糊边缘,导致图像失真。而双边滤波能够通过考虑像素间的相似性来保持边缘信息,从而避免了这种问题。这使得它在边缘保护和边缘增强等任务中得到广泛应用。 4. 图像分割:双边滤波可以用于图像分割任务。通过对图像进行双边滤波处理,可以使得图像中不同区域的边界更加清晰,从而更容易进行图像分割和目标提取。 5. 视频处理:双边滤波也可以应用于视频处理任务。它可以对视频序列中的每一帧进行滤波处理,以去除噪声和平滑图像。这对于视频压缩、视频增强和视频分析等应用非常重要。 总的来说,双边滤波在图像处理中的应用非常广泛,涵盖了图像去噪、图像增强、边缘保护、图像分割、视频处理等多个领域。它能够平滑图像的同时保留细节和边缘信息,提高图像质量和处理效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值