Gabor Filters对中文字图片的特征提取
来源:互联网 发布:长沙自考网络报名 编辑:程序博客网 时间:2024/04/30 00:48
中文字ocr是个比较讨厌的事情,主要是因为中文字繁多,光简体字就有6000多个以上,虽然其中大部分简体字是不常用的。对于这么一个这么大的,种类繁多的数据集,在分类的时候真心头疼,看了很多paper后,发现现在的state of the art是基于gabor filters,通过这个过滤器,对一个中文字的不同角度的比划进行过滤,然后在每个subregion里的每个角度的比划进行统计之后生成一个histogram,和bag of words一样,histogram可以用来对每个字进行分类或者用来寻找最近邻。
gabor filters 是个复杂的东西,网上的方程各种各样的,数学不好的小白就很难明白。在网上找了好多现成的函数之后,最后找到一个能用的matlab函数:
function gb=gabor_fn(rows,cols,sigma,theta,lambda,psi,gamma) sigma_x = sigma; sigma_y = sigma/gamma; % Bounding box nstds = 3; xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta))); xmax = ceil(max(1,xmax)); ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta))); ymax = ceil(max(1,ymax)); xmin = -xmax; ymin = -ymax; [x,y] = meshgrid(xmin:xmax,ymin:ymax); %[x,y] = meshgrid(-rows/2:rows/2-1,-cols/2:cols/2-1); % Rotation x_theta=x*cos(theta)+y*sin(theta); y_theta=-x*sin(theta)+y*cos(theta); gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);
rows和cols是图片的大小, sigma是gauss的那个sigma,越大的话周围的pixels影响越大,theta要提取的比划的角度,lambda这个貌似是什么的长度(不明白啊),psi这里没用,gamma生成y_sigma。
通过改变theta这个角度值可以获得不同角度比划的信息。
I = imread('~/Desktop/11.png')J = rgb2gray(I);K = imresize(J,[64,64])gb=gabor_fn(64,64,1.2,theta,5,0,1)
这里的theta分别是pi/2, pi/4, pi和 3*pi/4 这个四个值,他们可以分别抓取中文字比划的那8个方向。下面就是这个函数能产生的效果
冲上面的图就能看出这个过滤器的威力,过滤图片之后,我们可以对每个图片其中某个的区域的点阵进行统计,这样生成一个histogram,通过histogram可以有效的对每个字进行区分。
在我的试验中,我用了16个1616大小的方格作为第一次层histogram数组,然后在它的上面又叠加了9个1616的数组,总共是一个长(16+9)*4 = 100的数组。这么长的数组以后还的进行pca或者lda什么。实验在进行中。。。
转自:http://kkx.github.io/blog/2012/06/28/gabor-filtersdui-zhong-wen-zi-tu-pian-de-te-zheng-ti-qu/
- Gabor Filters对中文字图片的特征提取
- 基于opencv的Gabor特征提取
- 基于opencv的Gabor特征提取
- Gabor滤波器的特征提取C++实现
- Gabor特征提取
- Gabor特征提取 保留版
- Gabor滤波器与特征提取
- Gabor实现图像特征提取
- MatConvNet对自己的图片分两类及提取图片特征
- 基于OpenCV的Gabor变换及特征提取
- Gabor滤波进行目标图像纹理特征的提取
- 基于OpenCV的Gabor变换及特征提取
- 提取图片中文字的方法
- CVPR读书笔记[5]:Gabor特征提取之Gabor核的实现
- Gabor滤波器:Gabor Filters
- Gabor滤波--Gabor Filters
- CVPR读书笔记[4]:Gabor特征提取之Gabor核
- 提取分块图片的特征
- input遇到的问题
- 使用操作符时常犯的错误
- sturts2 标签截取字符串
- 魔兽自动开始脚本雏形
- Struts2标签 %{ } %{# }的区别
- Gabor Filters对中文字图片的特征提取
- [matlab]mathworks上的cody challenge题解及一些常用函数的总结(1)
- 利用Java生成静态HMTL页面
- 类型转换操作符(casting operator)
- 计算机视觉、机器学习相关领域论文和源代码大集合
- 泄露你的JavaScript技术很烂的五个表现
- IT公司笔试题算法部分
- a story of Caching
- asp.net 导入Excel记录到数据库中