在jpeg / bmp / pdf图像中搜索直线,圆和文本

时间:2013-11-04 09:47:02

标签: c++ image algorithm qt parsing

我想创建一个图像解析器,它将读取具有以下内容的图像:
1.直线
2.圈子
3.弧形 4.文字

我愿意为任何类型的图片格式(jpeg,bmp或PDF格式)提供解决方案。

我见过QImage文档。它应该为我提供像素数据,我可以以2D矩阵的形式存储。目前我将假设只有两种颜色黑色和白色。白色表示空像素,黑色表示绘制的像素。

所以我会有一个像

这样的稀疏矩阵
0 1 1 1 0 0 0
0 0 0 0 0 0 1
0 1 1 0 0 0 1
1 0 0 1 0 0 1
1 0 0 1 0 0 0
0 1 1 0 0 0 0

现在我想解码这个矩阵并搜索元素。搜索水平和垂直线很容易,因为对于每个元素,我只能扫描其相邻的行元素和列元素。

如何搜索其他元素(有角度的线条,圆圈,圆弧和可能的文字)?

对于文本,我读到QImage有text()函数,但我不知道它的输入文件是什么类型的。

我可以考虑其他图书馆吗? 请注意,我只是希望能够阅读图片,不需要进行处理。

我还有其他方法可以做到这一点吗?还是我太野心了?

由于

3 个答案:

答案 0 :(得分:1)

解决这个问题的一个有趣方法是使用机器学习系统,例如神经网络和遗传算法。特别是神经网络在模式匹配方面非常擅长,并且经常被看作用于手写识别等任务。

如果您搜索它,有很多相关信息。 Here's一篇这样的文章,是对NN的介绍。

如果您的输入图像总是黑白的,我认为调整代码示例以使其工作不会太困难。

答案 1 :(得分:1)

我建议 Viola-Jones object detection algorithm

虽然这种方法通常是在人脸检测上实施的,但original article讨论了一般物体检测,例如文字,圆圈和线条。

答案 2 :(得分:1)

查看OpenCV库。

它提供了大多数用于图像检测和视觉的标准算法,其实现的代码质量一般都很高。

请注意,这通常是一个非常困难的问题,因此在获得满意的解决方案之前,您可能需要进行大量的研究。