基本文本图像的倾斜校正Word格式文档下载.docx
- 文档编号:17916003
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:18
- 大小:777.52KB
基本文本图像的倾斜校正Word格式文档下载.docx
《基本文本图像的倾斜校正Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基本文本图像的倾斜校正Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
2编写程序并调试;
3撰写论文;
4准备课设答辩。
划
12月23日上午:
根据题目的分析,查找相关资料,掌握整体设计思路。
12月23日下午-25日:
确立思路,设计程序。
12月26日:
调试程序,撰写论文。
12月27日:
论文定稿,准备课设答辩。
考
资
料
1、数字图像处理学电子工业出版社贾永红2003
2、数字图像处理(Matlab版)电子工业出版社冈萨雷斯2006
3、其他数字图像处理和matlab编程方面的书籍及相关学习资料
指导教师签字
基层教学单位主任签字
摘要
数字信息时代人们更多地依赖图像这一媒介,而比较常用的文本图像的倾斜问题无疑图像应用的是一大障碍。
为了解决文本倾斜的自动校正功能,本文列举了四种倾斜校正的方法,涉及到基于文本图像边缘、矩形边缘的校正、基于文字向各方向投影的校正、基于投影实现特殊方向的文本校正、基于傅立叶频域分析的校正四种方法。
本文方法涵盖了图形图像边缘倾斜校正、表格的倾斜校正、打印及手写文本的倾斜校正、90度特殊角情况的文本校正、180度倒立文字的校正,适用面广。
通过实验验证以及与目前具有相关代表性的方法对比,论证了本文所采用的算法对带有表格、图像、手写体,以及各种语言的文本具有很好的校正效果,具有良好的有效性和可靠性。
关键词:
倾斜校正、文本、边缘、投影、傅里叶。
目录
一、引言6
二、算法综述6
三、各算法原理分析及实现代码:
6
四、各算法评价17
五、课程设计总结18
参考文献18
第一章引言
在现今数字信息化高速发展的大时代背景下,随着数码产品的拍照能力越来越出色,人们更多地将信息的存储和传输依靠在数字图像这一媒介上。
而文字的数字图像化——数字化图书库、pdf纸质电子书、文字扫描的发展,无疑对文本的转换技术提出了更高的要求。
谈到数字图像化文本,就不得不提到这一技术遇到的最大障碍之一:
输入文本图像的倾斜问题。
正基于这一普遍存在的问题,我们提出了文本、图像的倾斜校正这一课题。
第二章算法综述
论文的倾斜校正共涉及以下四种方法:
1)基于文本图像边缘、矩形边缘的倾斜校正。
2)基于文字向各方向投影的倾斜校正,90度以下都能用。
3)基于投影实现特殊方向的文本——垂直和倒立文本的校正。
4)基于傅立叶频域分析的文本、表格、图像的倾斜校正。
第三章各算法原理分析及实现代码
1)基于文本图像边缘、矩形边缘的倾斜校正
适用范围:
具有清晰边缘的图片、形状,倾斜角小于45度。
1.将图像转化为灰度图像。
使用MATLAB进行处理时,所读入的图像是RGB三维矩阵,在以后的处理中用到的是灰度图像和二值图像,因此,必须经过处理变成灰度图像。
2.用im2bw函数实现图像的二值化,变成只有0和1的图片。
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是图像的二值化。
灰度图像二值化处理是将图像上的点的灰度值置为0或1,本代码中选取的是自动二值i=im2bw(i,graythresh(i))。
3.
找文本图片的两个边缘角所在的点。
通过i,j循环扫描,找到第一个灰度值为1的点,也就是白点。
找上边界点:
从第一个点(0,0)开始,在每一行里逐列扫描,寻找第一列灰度值为1像素点即上边界的角所在点,(x1,y1),找到后立即停止寻找,跳出循环;
找左边界点:
从第一个点(0,0)开始,在每一列里逐行扫描,寻找第一列灰度值为1像素点即左边界的角所在点,(x2,y2),找到后立即停止寻找,跳出循环。
4.
两点式求斜率。
通过(x1,y1),(x2,y2)两点,用公式k=(y2-y1)/(x2-x1)求找到的边缘的斜率,用反正切atan函数求出倾斜角。
5.确定图像倾斜角。
通过倾斜角大于45度还是小于45度,确定图像是经过顺时针旋转还是逆时针旋转产生的倾斜
6.倾斜校正。
用imrotate函数实现倾斜校正。
7.代码部分
clc;
clear;
i=imread('
D:
\12.png'
);
%读入图片
V=i;
i_hight=size(i,1);
i_width=size(i,2);
i=rgb2gray(i);
%变灰度图片
i=im2bw(i,graythresh(i))%自动二值化
sign=1;
%循环找两个边缘点
fory=1:
i_hight
forx=1:
i_width
ifi(y,x)==1%在每一行里逐列扫描
sign=0;
x1=x;
y1=y;
break
end
end
forx=1:
i_width%在每一列里逐行扫描
fory=1:
ifi(y,x)==1
x2=x;
y2=y;
k=(y2-y1)/(x2-x1);
%求两点确定的边缘直线的斜率
theta=atan(k);
%求直线的倾斜角
a=theta*180/pi;
%弧度转危角度
if(abs(a)<
=45)%由倾角大小与45度的比较判断校正应该顺时针旋转还是逆时针旋转
imshow(V);
title('
校正前图像'
)%输出原图像
figure
A=imrotate(V,a);
%逆时针转a度
imshow(A);
校正后图像'
)
else
A=imrotate(V,a+90);
%顺时针转a+90度
)%输出校正图像
2)基于文字向各方向投影的倾斜校正,倾斜角绝对值在90度以下都能用。
文本,手写和打印的,表格均可,倾斜角绝对值在90度以下。
2.利用radon函数,沿着0度到180度,分别计算180个方向角的积分,找文本各方向投影最大的方向,该方向直线与水平线夹角即为文本中文字行的倾斜角。
3.用imrotate函数进行倾斜校正。
4.代码部分
clearall
closeall
bw=imread('
\1.png'
b=rgb2gray(bw);
figure,imshow(b);
title('
校正前灰度图像'
%================倾斜校正======================
b=edge(b);
theta=1:
180;
[R,xp]=radon(b,theta);
%theta表示角度从1取到179.这样,radon就得到了不同角度下的径向上的图像场强值,即R矩阵。
xp是对应的角度,跟theta一样。
[I,J]=find(R>
=max(max(R)));
%J记录了倾斜角
qingxiejiao=90-J;
bw=imrotate(bw,qingxiejiao,'
bilinear'
'
crop'
%qingxiejiao取值为正则逆时针旋转
figure,imshow(bw);
倾斜校正后图像'
%输出校正图像
3)基于投影实现特殊方向文本—垂直和倒立文本的校正。
1.适用范围:
仅适用于正负90度或180度倾斜的表格、文本,文字等排列比较整齐图片,打印、手写均可。
2.将图像转化为灰度图像。
3.向水平和垂直方向投影,找出投影大于一定阈值(经实验后取450)的方向即为行所在方向,进而识别倾斜角是90度还是180度。
4.imrotate函数倾斜校正。
每一个处理后同时输出两张旋转角相差180度的图片,解决可能出现的90文字倒立的问题(原创,前所未有)。
5.
代码部分:
\23.png'
imshow(i);
原图像'
bw=rgb2gray(i);
bw=im2bw(i,graythresh(bw))%自动二值化
[mt1,nt1]=size(bw);
Ty=find(sum(bw)>
=450==1);
%向横轴投影,投影点的灰度值累加,阈值取450,大于450的区域即为累加后的白色投影的位置
%b=length(Ty)
rat=length(Ty)/nt1;
if(rat>
=0.4)%白色投影长度占投影线长度的比例大于0.4即认为该投影方向为文字行方向
A=imrotate(i,270);
%图像校正
C=imrotate(i,90);
subplot(1,2,1);
imshow(A);
校正图像1'
subplot(1,2,2);
imshow(C);
校正图像2'
else%比例<
=0.4即认为该投影方向为文字行方向的垂直方向
A=imrotate(i,0);
C=imrotate(i,180);
4)基于傅立叶频域分析的文本、表格、图像的倾斜校正。
可用于表格、矩形及一些文字校正,文字手写打印均可,文本行最好有下划线识别率更高。
1.离散傅里叶变换fft2处理成频域图片。
2.
交换高低频位置fftshift。
3.将频域图片按所在象限分割,分别计算各象限中线的斜率,求四个倾斜角平均值。
4.通过原图矩阵乘以一个倾斜校正的矩阵实现图片旋转,达到倾斜校正目的。
5.代码部分
clc
clear
f=imread('
\31.jpg'
f=im2double(f);
%把图像数据类型转换为双精度浮点类型。
figure
(1),imshow(f,[])
1.输入图像'
F=fft2(f);
%fft2是2维离散傅立叶变换
%imshow(F)
Fc=fftshift(F);
%低频移到频域图的中间
%imshow(Fc)
S=log(1+abs(Fc));
%输入图像的频域图
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%↓%下面将频域图按所在象限分成四块,分别计算每个象限亮线的倾斜角
[m,n]=size(Fc);
M=floor(m/2)+1;
N=floor(n/2)+1;
%取原频域图的几何中心点。
floor为向下取整
S1=S(M-150:
M,N:
N+150);
%分别将频域图按所在象限等分成四块
[M,N]=size(S1);
%取出第一象限
S1(M-5:
M,1:
5)=0;
S5=S1;
%标出原频域图的几何中心点,方便查看
fork=1:
20
maximum=max(max(S1));
%maximum取最大值
[I1(k),J1(k)]=find(S1==maximum);
%最大值的位置坐标
S1(I1(k),J1(k))=0;
%最大值点变为原点
I1(k)=M-I1(k);
J1=J1'
;
I1=I1'
%转置
[row,col]=size(J1);
%矩阵大小
one=ones(row);
%ones是生成一个单位矩阵,赋值为1.矩阵中横着行的叫row.竖着的列叫做column。
H1=[J1,one(1:
row,1)];
%
p1=H1\I1;
angle
(1)=atan(p1
(1));
%atan是反正切函数
angle_degree
(1)=angle
(1)*180/pi;
S2=S(M-150:
M,N-150:
N);
[M,N]=size(S2);
S2(M-5:
M,N-5:
N)=0;
S6=S2;
maximum=max(max(S2));
[I2(k),J2(k)]=find(S2==maximum);
S2(I2(k),J2(k))=0;
I2(k)=M-I2(k);
J2(k)=N-J2(k);
J2=J2'
I2=I2'
[row,col]=size(J2);
H2=[J2,one(1:
p2=H2\I2;
angle
(2)=atan(p2
(1));
angle_degree
(2)=90-angle
(2)*180/pi;
%angle()是求相位角
S3=S(M:
M+150,N-150:
[M,N]=size(S3);
S3(1:
5,N-5:
S7=S3;
maximum=max(max(S3));
[I3(k),J3(k)]=find(S3==maximum);
S3(I3(k),J3(k))=0;
I3(k)=M-I3(k);
J3(k)=N-J3(k);
J3=J3'
I3=I3'
[row,col]=size(J3);
H3=[J3,one(1:
p3=H3\I3;
angle(3)=atan(p3
(1));
angle_degree(3)=-angle(3)*180/pi;
S4=S(M:
M+150,N:
[M,N]=size(S4);
S4(1:
5,1:
S8=S4;
maximum=max(max(S4));
[I4(k),J4(k)]=find(S4==maximum);
S4(I4(k),J4(k))=0;
I4(k)=M-I4(k);
J4(k)=N-J4(k);
J4=J4'
I4=I4'
[row,col]=size(J4);
%行和列
H4=[J4,one(1:
p4=H4\I4;
angle(4)=atan(p4
(1));
angle_degree(4)=90-angle(4)*180/pi;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%↓
%对四个象限的角度做处理,求平均值作为图像倾斜角
angle_degree=sum(angle_degree)/4%取四个象限的倾斜角的平均值
angle=angle_degree*pi/180;
%弧度转为角度
figure
(2),%输出四个象限的频域图
subplot(2,2,1),imshow(S6,[])
第二象限'
subplot(2,2,2),imshow(S5,[])
第一象限'
subplot(2,2,3),imshow(S7,[])
第三象限'
subplot(2,2,4),imshow(S8,[])
第四象限'
ifangle_degree>
=45%判断倾角情况
th=-pi/2+angle;
%角度大于等于45度时,该角度减去90度
th=angle;
%角度小于45度时,该角度不变
T=[cos(th)sin(th)0;
-sin(th)cos(th)0;
001];
%乘以一个3x3阶矩阵,表示旋转th角度
tform=maketform('
affine'
T);
%输入旋转角度的,变换坐标
g=imtransform(f,tform,'
FillValue'
1.0);
%图像空间变换,FillValue为填充因子值
figure(3),imshow(g,[])
2.倾斜校正后图像'
)%图7:
倾斜校正后图像
第四章各算法评价
1)基于文本图像边缘、矩形边缘的倾斜校正:
算法简单,运行速度快,但是要求背景颜色纯,干扰小。
能够校正深色背景下倾斜的照片、纸张、矩形等,局限是只能校正倾斜角小于45度的图形,倾斜校正后图像会变小,不清晰。
2)基于文字向各方向投影的倾斜校正:
计算量大,运行慢。
对图像背景要求低,抗干扰能力强,能够矫正存在明显平行线条的图像、表格、文字。
倾斜角绝对值在90度以下都能校正,角度适应性强。
3)基于投影实现特殊方向的文本——垂直和倒立文本的校正:
计算量小,速度快,但角度局限性大。
只适用于正负90度或180度倾斜的表格、文本以及文字等排列比较整齐的图片。
打印、手写版均可实现。
优点是通过算法同时输出两个相差180度的图像,能解决近似于90度特殊角倾斜和倒立文字的倾斜文本的校正。
4)基于傅立叶频域分析的文本、表格、图像的倾斜校正:
傅里叶算法计算量大,速度慢。
可用于表格、矩形及一些文字的校正,文字手写打印均可,文本行最好有下划线识别率更高。
第五章课程设计总结
数字图像处理是一门知识体系全面、实用性强的学科,符合数字化时代发展的大潮流。
而数字图像处理课程设计更是将我们与Matlab应用软件的距离拉到了最近。
通过完成指导教师指定课题,我在5天的时间里迅速提升了个人能力,学会了如何快速有效地分析问题、搜索相关资料、研究问题的解决方案、分析可行性,最终通过独立编解决问题,这样的收获都不是我们从日常的知识性学习中能得到的。
在《基本文本图像的倾斜校正》这一课题的指引下,我发现各种问题的解决方案都不是唯一的,要在学习实践的过程中充分比较各种方案的优劣,最终选取最快速有效的解决方案。
算法的不断提升,不仅是对个人知识储备和解决问题的能力的挑战,更是技术革新、社会进步不可或缺的重要因素。
本次课程设计的最大收获,当属学会了对Matlab应用软件的使用。
通过这款软件我可以实现诸多需要的功能,这不仅仅局限于数字图像处理领域。
而Matlab软件更使我深刻明白了工具于人类的巨大作用。
为期5天的独立课题,给我带来了许多意想不到的收获,而这些都会对我以后的工作和学习带来巨大作用,受益终生。
最后,感谢指导老师的耐心答疑。
在我的课题进入迷茫的时刻,老师总是能为我拨开云雾,指点迷津,正是在您的指引下,我才能披荆斩棘,最终顺利完成课程设计任务。
再此请允许我衷心对老师说一声,谢谢!
参考文献
燕山大学课程设计评审意见表
指导教师评语:
成绩:
2013年12月27日
答辩小组评语:
评阅人:
课程设计总成绩:
答辩小组成员签字:
赵彦涛程淑红王志斌童凯
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 文本 图像 倾斜 校正