我有 55 000 个图像文件(JPG 和 TIFF 格式),它们是书中的图片。

每个页面的结构是这样的:

一些文字

---(水平线)---

一个号码

一些文字

---(水平线)---

另一个号码

一些文字

任何给定页面上可以有 0 到 4 条水平线。

我需要找到水平线下方的数字是多少。

但是,数字严格彼此遵循,从第一页的一个开始,因此为了找到该数字,我不需要阅读它:我可以检测水平线的存在,这应该比尝试 OCR 页面来检测数字更容易、更安全。

该算法基本上是:

for each image
  count horizontal lines
  print image name, number of horizontal lines
  next image

问题是:执行“计算水平线”部分的最佳图像库/语言是什么?

有帮助吗?

解决方案

检测线路的最简单方法可能是使用 霍夫变换开放式计算机视觉 (它有许多语言的包装器)。

OpenCV 霍​​夫变换将检测图像中的所有线条并返回它们的角度和开始/停止坐标。您应该只保留角度接近水平且长度足够的那些。

O'Reilly 的学习 OpenCV 详细解释了函数的输入和输出 (第 156 页)。

其他提示

如果你有良好的对比度,尝试运行连接组件和分析结果。它可以是另一种寻找通过霍夫线和覆盖的情况下,当你的结构化元素都有点弯曲或者线算法拿起你不希望它拿起线。

连接的部件是一个超级快速的两个光栅扫描算法和给你的掩模具有所有连接的元件在它标有不同的标签和占。您可以放弃任何东西短(在纵横比计算)。总体而言,这可能是比较一般,速度较快,但可能有点比跑步Hough变换更多地参与。霍夫另一方面变换将成为对比度伪像甚至在线偶然空缺更耐受。 OpenCV的功能findContours()是找到组件为您服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top