我有55000张图片文件(JPG和TIFF格式),这些图片来自一本书。
每页的结构如下:
一些文字
---(水平线)---
一个数字
一些文字
---(水平线)---
另一个号码
一些文字
任何给定页面上都可以有0到4条水平线。
我需要找到数字的位置,就在水平线的下方。
但是,数字严格遵循,从第一页开始,所以为了找到数字,我不需要读它:我只能检测水平线的存在,这应该更容易并且比尝试OCR页面检测数字更安全。
算法基本上是:
for each image
count horizontal lines
print image name, number of horizontal lines
next image
问题是:什么是最好的图像库/语言来做“计算水平线”部分?
答案 0 :(得分:7)
检测行的最简单方法可能是使用 Hough transform 中的 OpenCV (其中包含多种语言的包装)。
OpenCV Hough变换将检测图像中的所有线并返回它们的角度和开始/停止坐标。你应该只保留角度接近水平且长度足够的那些。
O'Reilly的学习OpenCV explains in detail the function's input and output(第156页)。
答案 1 :(得分:0)
如果您有良好的对比度,请尝试运行连接的组件并分析结果。它可以替代通过Hough查找线条,并在结构化元素稍微弯曲或线条算法拾取您不希望它拾取的线条时覆盖案例。
连接组件是一种超快速的两种光栅扫描算法,它会为您提供一个遮罩,其中所有连接的元素都标有不同的标签并进行说明。您可以丢弃任何短(根据宽高比)。总的来说,这可能更通用,更快,但可能比运行Hough变换更复杂。另一方面,Hough变换对于对比度伪像甚至线条中的意外间隙将更容易被容忍。 OpenCV具有findContours()函数,可以为您查找组件。
答案 2 :(得分:-2)