燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx
《燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx》由会员分享,可在线阅读,更多相关《燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx(18页珍藏版)》请在冰豆网上搜索。
燕山大学图像处理课程设计基本文本图像的倾斜校正
燕山大学
课程设计说明书
题目:
基本文本图像的倾斜校正
学院(系)电气工程学院
年级专业:
11级仪表三班
学号:
*************
学生姓名:
******
指导教师:
王志斌林洪彬
教师职称:
副教授副教授
燕山大学课程设计(论文)任务书
院(系):
基本文本图像的倾斜校正基层教学单位:
自动化仪表系
学号
******
学生姓名
***
专业(班级)
11级仪表三班
设计题目
28基本文本图像的倾斜校正
设
计
技
术
参
数
根据图像处理的知识,确定图像的倾斜角度,并予以校正,需要对所给图像都要进行倾斜校正。
设
计
要
求
设计确定图像中倾斜角度的方法,可实现图像中物体的倾斜校正,要求对文本图像、及其他有明显倾斜的正方形、矩形可实现倾斜校正。
设计中应具有自己的设计思想、设计体会。
工
作
量
1查找相关资料;
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
end
forx=1:
i_width%在每一列里逐行扫描
fory=1:
i_hight
ifi(y,x)==1
sign=0;
x2=x;
y2=y;
break
end
end
end
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);
title('校正后图像')
else
imshow(V);
title('校正前图像')%输出原图像
figure
A=imrotate(V,a+90);%顺时针转a+90度
imshow(A);
title('校正后图像')%输出校正图像
end
2)基于文字向各方向投影的倾斜校正,倾斜角绝对值在90度以下都能用。
适用范围:
文本,手写和打印的,表格均可,倾斜角绝对值在90度以下。
1.将图像转化为灰度图像。
2.利用radon函数,沿着0度到180度,分别计算180个方向角的积分,找文本各方向投影最大的方向,该方向直线与水平线夹角即为文本中文字行的倾斜角。
3.用imrotate函数进行倾斜校正。
4.代码部分
clearall
closeall
bw=imread('D:
\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);
title('倾斜校正后图像');%输出校正图像
3)基于投影实现特殊方向文本—垂直和倒立文本的校正。
1.适用范围:
仅适用于正负90度或180度倾斜的表格、文本,文字等排列比较整齐图片,打印、手写均可。
2.将图像转化为灰度图像。
3.向水平和垂直方向投影,找出投影大于一定阈值(经实验后取450)的方向即为行所在方向,进而识别倾斜角是90度还是180度。
4.imrotate函数倾斜校正。
每一个处理后同时输出两张旋转角相差180度的图片,解决可能出现的90文字倒立的问题(原创,前所未有)。
5.
代码部分:
i=imread('D:
\23.png');
imshow(i);
title('原图像');
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);title('校正图像1');
subplot(1,2,2);imshow(C);title('校正图像2');
else%比例<=0.4即认为该投影方向为文字行方向的垂直方向
A=imrotate(i,0);%图像校正
C=imrotate(i,180);%图像校正
subplot(1,2,1);imshow(A);title('校正图像1');
subplot(1,2,2);imshow(C);title('校正图像2');
end
4)基于傅立叶频域分析的文本、表格、图像的倾斜校正。
适用范围:
可用于表格、矩形及一些文字校正,文字手写打印均可,文本行最好有下划线识别率更高。
1.离散傅里叶变换fft2处理成频域图片。
2.
交换高低频位置fftshift。
3.将频域图片按所在象限分割,分别计算各象限中线的斜率,求四个倾斜角平均值。
4.通过原图矩阵乘以一个倾斜校正的矩阵实现图片旋转,达到倾斜校正目的。
5.代码部分
clc
clear
f=imread('D:
\31.jpg');
f=im2double(f);%把图像数据类型转换为双精度浮点类型。
figure
(1),imshow(f,[])
title('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);
end
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;
[m,n]=size(Fc);
M=floor(m/2)+1;N=floor(n/2)+1;
S2=S(M-150:
M,N-150:
N);
[M,N]=size(S2);
S2(M-5:
M,N-5:
N)=0;S6=S2;
fork=1:
20
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);
end
J2=J2';I2=I2';
[row,col]=size(J2);
one=ones(row);
H2=[J2,one(1:
row,1)];
p2=H2\I2;
angle
(2)=atan(p2
(1));%atan是反正切函数
angle_degree
(2)=90-angle
(2)*180/pi;%angle()是求相位角
[m,n]=size(Fc);
M=floor(m/2)+1;N=floor(n/2)+1;
S3=S(M:
M+150,N-150:
N);
[M,N]=size(S3);
S3(1:
5,N-5:
N)=0;S7=S3;
fork=1:
20
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);
end
J3=J3';I3=I3';
[row,col]=size(J3);
one=ones(row);
H3=[J3,one(1:
row,1)];
p3=H3\I3;
angle(3)=atan(p3
(1));
angle_degree(3)=-angle(3)*180/pi;%angle()是求相位角
[m,n]=size(Fc);
M=floor(m/2)+1;N=floor(n/2)+1;
S4=S(M:
M+150,N:
N+150);
[M,N]=size(S4);
S4(1:
5,1:
5)=0;S8=S4;
fork=1:
20
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);%
end
J4=J4';I4=I4';
[row,col]=size(J4);%行和列
one=ones(row);
H4=[J4,one(1:
row,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,[])
title('第二象限')
subplot(2,2,2),imshow(S5,[])
title('第一象限')
subplot(2,2,3),imshow(S7,[])
title('第三象限')
subplot(2,2,4),imshow(S8,[])
title('第四象限')
ifangle_degree>=45%判断倾角情况
th=-pi/2+angle;%角度大于等于45度时,该角度减去90度
else
th=angle;%角度小于45度时,该角度不变
end
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,[])
title('2.倾斜校正后图像')%图7:
倾斜校正后图像
第四章各算法评价
1)基于文本图像边缘、矩形边缘的倾斜校正:
算法简单,运行速度快,但是要求背景颜色纯,干扰小。
能够校正深色背景下倾斜的照片、纸张、矩形等,局限是只能校正倾斜角小于45度的图形,倾斜校正后图像会变小,不清晰。
2)基于文字向各方向投影的倾斜校正:
计算量大,运行慢。
对图像背景要求低,抗干扰能力强,能够矫正存在明显平行线条的图像、表格、文字。
倾斜角绝对值在90度以下都能校正,角度适应性强。
3)基于投影实现特殊方向的文本——垂直和倒立文本的校正:
计算量小,速度快,但角度局限性大。
只适用于正负90度或180度倾斜的表格、文本以及文字等排列比较整齐的图片。
打印、手写版均可实现。
优点是通过算法同时输出两个相差180度的图像,能解决近似于90度特殊角倾斜和倒立文字的倾斜文本的校正。
4)基于傅立叶频域分析的文本、表格、图像的倾斜校正:
傅里叶算法计算量大,速度慢。
可用于表格、矩形及一些文字的校正,文字手写打印均可,文本行最好有下划线识别率更高。
第五章课程设计总结
数字图像处理是一门知识体系全面、实用性强的学科,符合数字化时代发展的大潮流。
而数字图像处理课程设计更是将我们与Matlab应用软件的距离拉到了最近。
通过完成指导教师指定课题,我在5天的时间里迅速提升了个人能力,学会了如何快速有效地分析问题、搜索相关资料、研究问题的解决方案、分析可行性,最终通过独立编解决问题,这样的收获都不是我们从日常的知识性学习中能得到的。
在《基本文本图像的倾斜校正》这一课题的指引下,我发现各种问题的解决方案都不是唯一的,要在学习实践的过程中充分比较各种方案的优劣,最终选取最快速有效的解决方案。
算法的不断提升,不仅是对个人知识储备和解决问题的能力的挑战,更是技术革新、社会进步不可或缺的重要因素。
本次课程设计的最大收获,当属学会了对Matlab应用软件的使用。
通过这款软件我可以实现诸多需要的功能,这不仅仅局限于数字图像处理领域。
而Matlab软件更使我深刻明白了工具于人类的巨大作用。
为期5天的独立课题,给我带来了许多意想不到的收获,而这些都会对我以后的工作和学习带来巨大作用,受益终生。
最后,感谢指导老师的耐心答疑。
在我的课题进入迷茫的时刻,老师总是能为我拨开云雾,指点迷津,正是在您的指引下,我才能披荆斩棘,最终顺利完成课程设计任务。
再此请允许我衷心对老师说一声,谢谢!
参考文献
1、数字图像处理学电子工业出版社贾永红2003
2、数字图像处理(Matlab版)电子工业出版社冈萨雷斯2006
3、其他数字图像处理和matlab编程方面的书籍及相关学习资料
燕山大学课程设计评审意见表
指导教师评语:
成绩:
指导教师:
2013年12月27日
答辩小组评语:
成绩:
评阅人:
2013年12月27日
课程设计总成绩:
答辩小组成员签字:
赵彦涛程淑红王志斌童凯
2013年12月27日