如何最好地在照片中检测发票/收据/纸张的角落?这将用于后续透视校正,OCR之前。
我当前的方法是:
RGB > Gray > Canny边缘检测,带有阈值处理 > 膨胀(1) > 删除小对象(6) > 清除边框对象 > 基于凸包面积选择最大的对象。> [未实现角检测]
我不禁想到,一定有更加健壮的“智能”/统计方法来处理这种类型的分割。我没有很多训练样例,但我可以凑齐100张图像。
更广泛的背景:
我正在使用Matlab进行原型设计,并计划在OpenCV和Tesseract-OCR上实现该系统。这是我需要解决的一系列图像处理问题中的第一个。所以我想自己开发解决方案,并重新熟悉图像处理算法。
以下是我希望算法处理的一些示例图像: 如果您愿意接受挑战,则可在http://madteckhead.com/tmp中查看大型图像。
(来源:madteckhead.com)
(来源: madteckhead.com)
(来源: madteckhead.com)
(来源: madteckhead.com)
在最佳情况下,这将给出:
(来源: madteckhead.com)
(来源:madteckhead.com)
(来源:madteckhead.com)
然而,它在其他情况下很容易失败:
(来源:madteckhead.com)
(来源:madteckhead.com)
(来源: madteckhead.com)
编辑:霍夫变换进展
问:哪种算法可以将霍夫线聚类以找到角点? 根据答案的建议,我能够使用霍夫变换、选择线条并过滤它们。我的当前方法相当粗糙。我假设发票始终与图像少于15度不对齐。如果是这种情况,我得到了合理的线条结果(见下文)。但我不确定适合聚类线条(或投票)以推断角落的合适算法。霍夫线不连续。在嘈杂的图像中,可能会有平行线,因此需要某种形式或距离来自线起点的指标。有什么想法吗?
(来源: madteckhead.com)