自然图像都存在噪声,噪声和边缘在局部方差方面表现相似,一般的滤波器无法区分噪声和边缘,于是对其统一处理,因此很多情况下,滤波的同时,边缘也被处理模糊掉了。保边滤波器(Edge Preserving Filter)是指在滤波过程中能够有效的保留图像中的边缘信息的一类滤波器。

常见的保边滤波器有如下几种:双边滤波(Bilateral filter)、引导滤波(GuidedFilter)、加权最小二乘法滤波器(WLS)、非均匀局部滤波器(NLM)、双指数边缘平滑滤波器(BiExponentialEPF)、选择性模糊和表面滤波。

Bilateral Filter

Bilateral的意思是:Affecting or undertaken by two sides equally,表示由双方(边)平等共同决定。

双边滤波器中地位平等的双边即是指滤波器的最终结果由像素值(值域)和像素位置(空域)共同决定。

空域的滤波器,就是采用的高斯滤波器,权重由像素点到中心的距离决定,形式为:

而值域的滤波器,权重由对应窗内像素和值域中心两个像素值决定,两个像素,值相差越小,那么约不可能是边缘,那么越应该进行平滑处理,也就是应该提高其在滤波器中的权值,像素值相差越大则越有可能是边缘(类似空域中距离较远),应该尽量保留。

双边滤波器就是由上述两个滤波器共同决定,最终形式为:

每个位置的权重由空间位置和像素值共同决定,这就是双边滤波。

双边滤波可以很简答的实现(除此之外还有快速双边滤波,解决双边滤波计算效率的问题):

function [ tonedMap ] = navieBilateral( radMap,dw,rw,dsigma,rsigma)
%   NAVIEBILATERAL Summary of this function goes here
%   Detailed explanation goes here
%   radmap为照度图像,dw和dr分别为空域和值域的滤波器大小
%   dsigma和rsigma分别为空域和值域的高斯sigma因子
%   首先生成空域的高斯滤波器权重因子
[x,y] = meshgrid(-dw:dw,-dw:dw);
g1 = exp(-(x.^2+y.^2)/(2*dsigma^2));  

%   对图像进行对称扩张,保证在图像的边缘仍然可以进行处理   
pw = max(dw,rw);
padradMap = padarray(radMap,[pw pw],'symmetric');
dim = size(padradMap);
tonedMap = zeros(dim(1)-pw,dim(2)-pw);

for i= pw+1:dim(1)-pw
    for j=pw+1:dim(2)-pw
        I = padradMap(i-rw:i+rw,j-rw:j+rw);             %取相应图像块
        g2 = exp(-(I-padradMap(i,j)).^2/(2*rsigma^2));  %值域滤波因子生成
        w = g1(:).*g2(:);                               %生成双边因子
        tonedMap(i-pw,j-pw) = sum(w.*I(:))/sum(w);      
    end
end

end

 

GuidedFilter

引导滤波,顾名思义,就是给一副引导图像,滤波核由引导图像和原图共同决定。引导图像来告诉滤波器哪里是平坦区,哪里是边缘。

因为自然图像中噪声一般周围的像素梯度变化较大,而且以其为中心,向四周的梯度大体相似。而边缘出现了梯度的阶跃,而且梯度最大的方向在边缘的法线方向,其它远离法线的方向上梯度逐渐变小。对引导滤波来说,从下图中可以看出,引导滤波的输入为两个,一个是真实输入,另一个是引导图像,输出q是这二者的产物。

 

q=aI+b

这里的a和b不是固定的,对于噪声,a~=0 b=miu ,倾向于均值滤波,对于边缘 a~=1 b=0,倾向于保留边缘,那么设计上如何判断噪声呢?通过输入的指导图像可以进行判定,根据判定公式

在同一边是(Ii-miu)(Ij-miu)为正,权重高,不同边时权重低:

 

挖坑,有空填

WLS

 

NLM

 

BiExponenitialEPF

 

Local Laplace Filter

 

选择性模糊

保边滤波之选择性模糊

表面滤波

保边滤波之SurfaceBlur

1 对 “保边滤波”的想法;

  1. 这是哪位大神在普度众生了。。。
    挖的坑可不可以早点填呢

发表评论

邮箱地址不会被公开。 必填项已用*标注