最近一直在做版面分析,其中文本行检测方面,许多文章涉及到了Anigauss也就是各向异性高斯滤波。
顾名思义,简单的理解就是参数不同的二维高斯滤波。
在文章Fast Anisotropic Gauss Filtering中阐明了Anisotropic Gauss Filter可以分解成想,y两个方向不同的一维高斯滤波,其中x,y不必垂直。
下面我们来看一下分解过程。
一个简单的各向同性二维高斯卷积滤波一般如下式
当x,y方向缩放比例不同时我们便得到了各向异性二维高斯滤波如图
当然也可以做其他方向的滤波,我们设旋转角度为θ如图,则旋转后坐标与x,y坐标关系为
因此可以得到一个通用的表达式
其中u轴为θ方向,v轴为垂直于θ方向。
根据傅里叶变换我们知道,空域卷积等于频域相乘
所以如果一个线性滤波的傅里叶变换可以写成两个分别关于Wx,Wy方程相乘的形式,那么在空域他可以写成两个子项的卷积
因此我们可以将 的傅里叶变换写成如下形式:
(7)
也就是
然而我们只对x,y感兴趣,因此我们将分解为
(10)
然后我们可以得到a11,a12,a13的表达式
再一次明确我们的目标是将各向异性高斯滤波分解成一个x方向与一个延方向的一维滤波。
便于分解,我们(10)式写成所有与Wy无关和Wy有关的相加形式
并放入(10)式后得到
根据指数的性质也可写为
然后做傅里叶逆变换后得到
第一项表示x方向的滤波
第二项表示滤波
其中,
至此分解完成:
文中作者应用了recursive filter去做了实现,具体需要参考源代码anigauss.c
具体效果如图