1.2 研究现状
1.3 论文工作及安排
表格图片检测算法对大量图片的处理主要是通过对它们进行循环检测来实现的,即需要依次对每张图片进行相应的操作。检测算法中的主要操作则包括图像预处理、表格定位和表格区域提取。表格检测的基本工作流程如图1.1所示。
图1.1 表格检测基本工作流程图
本文所做的工作主要包括:
a)对开发平台和开发工具等进行介绍。此部分包括在正文第2章的第1节中;
b)根据课题进行需求分析,给出算法的总体设计过程和流程图。此部分包括在正文第2章的第2节中;
c)利用Visual C++等软件工具进行程序的开发,给出设计原理、相关流程图和详细设计过程。此部分包括在正文第2章的第3节、第4节和第5节中;
d)从网购网站上选取大量的相关图片,对算法整体的性能进行测试,分析结果得出结论。此部分包括在正文第3章中。
2 算法设计
2.1 开发平台及开发工具介绍
设计中使用到的算法语言为C++,具体开发工具为Visual C++ 6.0。此外,在图像处理方面利用到了课题组提供的一个函数库vilib。
C++与C语言具有一定的相似性,它是以C语言为基础的一种通用编程语言。C++与C语言的最大不同在于前者引入了面向对象的概念,而这可以更加方便快捷地进行应用程序的开发,尤其是在人机交互方面。其支持多种编程的规范格式,如过程化的、泛型的以及独特的面向对象编程。C++的编程领域广泛,程序设计环境也较为简单,且本身语言简洁,运行高效,而面向对象的程序设计方法可以使设计过程的思路更加清楚有条理,便于调试,扩充性较强,因此这种设计方法常被用于系统、引擎开发等应用领域。在本次设计中,本人使用了C++软件进行表格检测算法研究的算法编写、调试和运行工作。
本设计中使用到的算法开发软件是Microsoft Visual C++ 6.0,简称VC6.0。这是由微软公司设计研发的一款实用工具,其本质是一个集成的开发环境。这款软件的工作原理通俗简单得概括来说,就是将“高级语言”翻译为“机器语言”,完成设计人员与计算机之间的交流。这样计算机就可以通过这个“翻译”理解设计者下达的指令并根据指令执行相应的具体操作。Visual C++功能强大,且具有可视性,使用起来清晰直观。目前,很多相关人士在进行程序设计时都会最先采用Visual C++,而6.0版本则是推出以来使用最多的一种版本。
2.2 程序流程
本课题要求基于给定的若干图像,能够检测出其中哪些图像含表格,给出检测结果,即该图是否含有表格;并且能够自动定位出表格的位置,将表格区域提取出来以备查看。为满足上述要求,可将程序设计任务需求归纳为下述几条:
a)文件夹遍历
1)能够查找指定目录及子目录;
2)读入目标文件夹中的图片,获取图片信息;
3)可重复进行读图操作。
b)图像预处理
1)间隔估算;
2)图像二值化;
3)构造连通区域;
4)图片过滤。
c)检查表格
通过设定的指标进行判断,确定图片是否含有表格。
d)提取表格图像
1)水平方向投影切割;
2)垂直方向投影切割;
3)可重复进行提取(一张图上的表格数可大于1)