基本文本图像的倾斜校正
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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度