Skip to main content

滤波

快速统计均值方差

统计影像的均值和方差时,常规做法是先循环一遍计算均值,再循环一遍计算方差,但通过推导方差计算公式,可以简化上述操作,缩短统计耗时。

float mean = 0, std = 0;
for(int i=0; i < arr_size; i++){
mean += arr[i];
std += arr[i] * arr[i];
}
mean /= valid_num;
std = sqrtf(std / (valid_num-1) - valid_num / (valid_num-1) * mean * mean);

均值、方差的公式

xˉ=1nxiStd=1n1(xixˉ)2=1n1(xi2nxˉ2)\begin{aligned} \bar{x} =& \frac{1}{n}\sum x_i \\ Std =& \sqrt{\frac{1}{n-1}\sum {(x_i - \bar{x})}^2} \\ =& \sqrt{\frac{1}{n-1}(\sum{{x_i}^2}-n{\bar{x}}^2)} \end{aligned}

方差的推导过程,

Std2=1n1(xixˉ)2=1n1(xi22xˉxi+xˉ2)=1n1(xi22xˉxi+nxˉ2)=1n1(xi22nxˉ2+nxˉ2)=1n1(xi2nxˉ2)Std=1n1(xi2nxˉ2)\begin{aligned} &{Std}^2&=& \frac{1}{n-1}\sum {(x_i - \bar{x})}^2 \\ & &=& \frac{1}{n-1}\sum ({x_i}^2 - 2\bar{x}\cdot x_i+{\bar{x}}^2) \\ & &=& \frac{1}{n-1}(\sum {x_i}^2 - 2 \bar{x} \cdot \sum x_i + n {\bar{x}}^2) \\ & &=& \frac{1}{n-1}(\sum {x_i}^2 - 2 n {\bar{x}}^2 + n {\bar{x}}^2) \\ & &=& \frac{1}{n-1}(\sum {x_i}^2 - n {\bar{x}}^2) \\ \\ \Rarr & Std &=& \sqrt{\frac{1}{n-1}(\sum{{x_i}^2}-n{\bar{x}}^2)} \end{aligned}

Rolling Guidance Filter

process

Qi Zhang, Xiaoyong Shen, Li Xu, and Jiaya Jia, ‘Rolling Guidance Filter’, ECCV 2014, pp. 812–830, 2014.

Step1: Small Structure Removal

J1(p)=1KpqN(p)exp(pq22σs2)I(q)J_1(p)=\frac{1}{K_p}\displaystyle\sum_{q\in N(p)}\exp \bigg(-\frac{ {\|p-q\|}^2} {2\sigma_s^2}\bigg)I(q) Kp=qN(p)exp(pq22σs2)K_p=\displaystyle\sum_{q\in N(p)}{\exp \big(-\frac{ {\|p-q\|}^2} {2\sigma_s^2}\big)}

其中, pp是待求点, qqpp周围的所有点的集合, II是原图像, σs2\sigma_s^2是标准偏差( standard deviation)自己设定。通过这一步可以消除尺度小于 σs2\sigma_s^2的结构。

(This filter completely removes structures whose scale is smaller than σs2\sigma_s^2 as claimed in the scale space theory. It is implemented efficiently by separating kernels in perpendicular directions. Approximation by box filter is also feasible.)

Step2: Edge Recovery

Jt+1(p)=1KpqN(p)exp(pq22σs2Jt(p)Jt(q)22σr2)I(q)J_{t+1}(p)=\frac{1}{K_p}\displaystyle\sum_{q\in N(p)}\exp \bigg(-\frac{ {\|p-q\|}^2}{2\sigma_s^2}-\frac{ {\|J_t(p)-J_t(q)\|}^2}{2\sigma_r^2}\bigg)I(q) Kp=qN(p)exp(pq22σs2Jt(p)Jt(q)22σr2)K_p=\displaystyle\sum_{q\in N(p)}\exp \bigg(-\frac{ {\|p-q\|}^2}{2\sigma_s^2}-\frac{ {\|J_t(p)-J_t(q)\|}^2}{2\sigma_r^2}\bigg)

其中,pp是待求点,qqpp周围的所有点的集合, t=1,2,,nt=1,2,…,nII是原图像, σs2\sigma_s^2σr2\sigma_r^2分别控制时间权重和距离权重。

σs2\sigma_s^2 and σr2\sigma_r^2 control the spatial and range weights respectively

goldstein

经典的频谱滤波

R. M. Goldstein and C. L. Werner, ‘Radar interferogram filtering for geophysical applications’, Geophysical Research Letters, vol. 25, no. 21, pp. 4035–4038, 1998, doi: 10.1029/1998GL900033

公式

H(u,v)=S{Z(u,v)}αZ(u,v)H(u,v) = {S\{ \lvert Z(u,v)\rvert \}}^\alpha \cdot Z(u,v)

派生方法

优化方向主要有两种,一是优化平滑算子s{}s\{\cdot\},另一则是优化滤波系数α{\cdot}^{\alpha}

滤波系数

baran滤波,使用相干图作为滤波系数

zhao滤波,使用伪相干图作为滤波系数

平滑算子

某个软件,使用bessi0函数生成二维矩阵,在时域点乘后通过FFT转换到频域(时域点乘等于频域卷积),使用频域功率谱计算得到系数,将系数附加到频域后在通过IFFT转换回时域,完成滤波操作。

当然,老老实实写个均值滤波算子在频域做卷积运算,也是可以的,但效果确实不如上述方法。