图像分析和检测未分析区域
Posted
技术标签:
【中文标题】图像分析和检测未分析区域【英文标题】:image analysis and detecting unanalyzed areas 【发布时间】:2012-04-25 17:06:12 【问题描述】:所以这里有一个问题和疑问:
我正在分析 html5 Canvas 上的文档页面并检测某些特征,例如框、标签、文本块、图像、表格等。因为 Canvas 的像素读/写速度很慢,并且图像需要很高- res 以获得良好的精度,例如:1500 x 2500,我无法分析每个像素,更不用说多次通过了。
我的算法会进行一些随机像素戳,并进行一些最小分析,以查找是否有可用的边界框进行进一步处理以及需要完成的处理类型;某些部分可能会发送到服务器,例如 OCR。
随后的每一次随机戳都会检查越来越多的成功找到的边界框,然后戳到其他地方,直到进入未知水域。该技术非常简单和有效,但这会导致大量额外的随机戳,并且在没有大量戳数(1% 的区域)的情况下无法提供一致的结果,即使这样它也会间歇性地遗漏一些部分。
最好实现一些空间分析算法,它可以告诉我未戳区域在所有边界框之外的位置,这样我就可以将我的 x/y 随机坐标选择限制在那里。它应该会显着提高功效和速度。
完整分析的文档页面的典型框数为
公共领域/wiki 中是否存在任何算法可以在 javascript 中相当快地做到这一点?
【问题讨论】:
Canvas 对于像素读/写并不慢,因为您只需处理通过 getImageData 获得的数据。 1500 * 2500 = 375 万像素 * 4 个子像素 = 1500 万个元素 CanvasPixelArray。我很想看看你如何在 js 中“快速”地迭代整个事情。对我来说,“快速”意味着在 【参考方案1】:我希望可能会有所帮助的一些想法。一个广泛的想法,它仍然需要一些工作!
假设没有边界框重叠并且一次只能找到一个。
以下将变成文档的递归过程“检查”,当文档太小而无法继续时,该过程会停止。
检查(文件)
如果(文档是根文档)
在文档中查找边界框
将文档水平拆分为 4 个新文档
为每个新文档检查(新文档)
其他
在文档中查找边界框
if(边界框完全在文档内)
将文档水平拆分为 4 个新文档
为每个新文档检查(新文档)
否则
将父文档垂直分成4份
使用找到的关于边界框位置的信息
检查(适当的垂直文档)
为每个其他垂直文档检查(文档)
以下是一个 pdf 文件来帮助说明这个想法。
Bounding Boxes
【讨论】:
事实上,这是个好主意。感谢您的详细图纸。我看到的这种方法的问题是,您如何知道一个分段文档边缘的文本块是被截断还是整个?文本块本身并没有真正的“界限”......你必须依靠一些最小的空白到边缘,这很好。另一个问题是表单字段可以像砖块一样交错排列,并且当它们位于页面边缘时,它们通常不是 100% 封闭在边界线中,因此很难检测到。我会考虑一下,谢谢。 @leeonia 更多想法。假设您有一个文档 D,其边缘 xl,xr,yt,yb 且 xl以上是关于图像分析和检测未分析区域的主要内容,如果未能解决你的问题,请参考以下文章