燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx

上传人:b****1 文档编号:3405848 上传时间:2023-05-05 格式:DOCX 页数:20 大小:749.02KB
下载 相关 举报
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第1页
第1页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第2页
第2页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第3页
第3页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第4页
第4页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第5页
第5页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第6页
第6页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第7页
第7页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第8页
第8页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第9页
第9页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第10页
第10页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第11页
第11页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第12页
第12页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第13页
第13页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第14页
第14页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第15页
第15页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第16页
第16页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第17页
第17页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第18页
第18页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第19页
第19页 / 共20页
燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx

《燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx》由会员分享,可在线阅读,更多相关《燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx(20页珍藏版)》请在冰点文库上搜索。

燕山大学图像处理课程设计 基本文本图像的倾斜校正.docx

燕山大学图像处理课程设计基本文本图像的倾斜校正

燕山大学

课程设计说明书

 

题目:

基本文本图像的倾斜校正

 

学院(系)电气工程学院

年级专业:

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度倒立文字的校正,适用面广。

通过实验验证以及与目前具有相关代表性的方法对比,论证了本文所采用的算法对带有表格、图像、手写体,以及各种语言的文本具有很好的校正效果,具有良好的有效性和可靠性。

 

关键词:

倾斜校正、文本、边缘、投影、傅里叶。

 

第一章引言

在现今数字信息化高速发展的大时代背景下,随着数码产品的拍照能力越来越出色,人们更多地将信息的存储和传输依靠在数字图像这一媒介上。

而文字的数字图像化——数字化图书库、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日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2