Anisotropic gauss filter
最近一直在做版面分析,其中文本行检测方面,许多文章涉及到了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
具体效果如图

Anisotropic gauss filter的更多相关文章
- 二维高斯滤波器(gauss filter)的实现
我们以一个二维矩阵表示二元高斯滤波器,显然此二维矩阵的具体形式仅于其形状(shape)有关: def gauss_filter(kernel_shape): 为实现二维高斯滤波器,需要首先定义二元高斯 ...
- opencl gauss filter优化(三)
1.根据前两次的最终结果: 使用普通buffer,Horizontal 5ms, Vertical 17 ms 使用image buffer:Horizontal 9.4ms, Vertical 6. ...
- opencl gauss filter优化(二)
1.buffer使用image的方式:Horizontal 与 Vertical 算法一样, 共需30ms,wait time 19ms. const sampler_t sampler = CLK_ ...
- opencl gauss filter优化(一)
Platform: LG G3, Adreno 330 ,img size 3264x2448 C code neon GPU 300 60 29 单位:ms 1. 目前按如下行列分解的方式最快29m ...
- Texture Filter中的Bilinear、Trilinear以及Anistropic Filtering
1. 为什么在纹理采样时需要texture filter(纹理过滤)?我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture ...
- 各项异性滤波简单介绍Anisotropic Filtering(AF)
本文主要整理简绍来自互联网的各项异性滤波的知识. 原文链接:http://www.linuxgraphics.cn/graphics/using_anisotropic_texture_filteri ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- anisotropy texture filtering
http://www.extremetech.com/computing/51994-the-naked-truth-about-anisotropic-filtering 1. 为什么在纹理采样时需 ...
- 【学习笔记】Learning OpenCV3——Ch8 working with video
Reading Video with the cv::VideoCapture Object 对象创建的三种方法: // 1. Input filename cv::VideoCapture::Vid ...
随机推荐
- uva 10020 Minimal coverage
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load.
出现以上问题,只是说明stackoverflow前端库用到google的API来,所以stackoverflow躺枪.查阅后,是因为调用jquery的问题. 详情请看: 解决方案有好几种: 1.将ht ...
- Nginx缓存解决方案:SRCache
前些天帮别人优化PHP程序,搞得灰头土脸,最后黔驴技穷开启了FastCGI Cache,算是勉强应付过去了吧.不过FastCGI Cache不支持分布式缓存,当服务器很多的时候,冗余的浪费将非常严重, ...
- Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, ...
- JAVA的四种引用,强弱软虚用到的场景
1.强引用 最常用的引用类型,如Object object = new Object(),只要强引用存在,GC必定 不回收,即使当前内存空间不足,jAVA虚拟机宁愿抛出OutofMemoryError ...
- zookeeper[1] (转)ZooKeeper Programmer's Guide(zookeeper编程向导)---中文
原文:http://www.cnblogs.com/Xrinehart/p/3512509.html 本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实 ...
- 日期函数(SqlServer)
1.常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233') (1)DATENAME ( datepart ,date ) 返回表示指定日期的指定日期部分的字符 ...
- Python NTLK资料
1.Creating a new corpus with NLTK http://stackoverflow.com/questions/4951751/creating-a-new-corpus-w ...
- MYSQL存储过程和函数学习笔记
学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...
- github atom创建自己的语法高亮
使用atom一段时间了,有些插件还不是很成熟.比如项目中使用protobuf,早就有人写了语法高亮(https://github.com/podgib/atom-protobuf),但是效果不是很好. ...