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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

燕山大学
课程设计说明书题目:基本文本图像的倾斜校正
学院(系)电气工程学院
年级专业: 11级仪表三班
学号: ************* 学生姓名: ****** 指导教师:王志斌林洪彬
教师职称:副教授副教授
燕山大学课程设计(论文)任务书
摘要
数字信息时代人们更多地依赖图像这一媒介,而比较常用的文本图像的倾斜问题无疑图像应用的是一大障碍。

为了解决文本倾斜的自动校正功能,本文列举了四种倾斜校正的方法,涉及到基于文本图像边缘、矩形边缘的校正、基于文字向各方向投影的校正、基于投影实现特殊方向的文本校正、基于傅立叶频域分析的校正四种方法。

本文方法涵盖了图形图像边缘倾斜校正、表格的倾斜校正、打印及手写文本的倾斜校正、90度特殊角情况的文本校正、180度倒立文字的校正,适用面广。

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

关键词:倾斜校正、文本、边缘、投影、傅里叶。

目录
一、引言 (5)
二、算法综述 (5)
三、各算法原理分析及实现代码: (5)
四、各算法评价 (16)
五、课程设计总结 (17)
参考文献 (17)
第一章引言
在现今数字信息化高速发展的大时代背景下,随着数码产品的拍照能力越来越出色,人们更多地将信息的存储和传输依靠在数字图像这一媒介上。

而文字的数字图像化——数字化图书库、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; %循环找两个边缘点
for y=1:i_hight
for x=1:i_width
if i(y,x)==1 %在每一行里逐列扫描
sign=0;
x1=x;
y1=y;
break
end
end
end
for x=1:i_width %在每一列里逐行扫描
for y=1:i_hight
if i(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.代码部分
clear all
close all
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; %标出原频域图的几何中心点,方便查看
for k = 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;
for k = 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;
for k = 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;
for k = 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('第四象限')
if angle_degree >= 45 %判断倾角情况
th = -pi/2 + angle; %角度大于等于45度时,该角度减去90度
else
th = angle; %角度小于45度时,该角度不变
end
T = [cos(th) sin(th) 0;-sin(th) cos(th) 0;0 0 1]; %乘以一个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编程方面的书籍及相关学习资料
燕山大学课程设计评审意见表。

相关文档
最新文档