检测图像像素的列或行是不是为线

Posted

技术标签:

【中文标题】检测图像像素的列或行是不是为线【英文标题】:Detect if an Image Pixel's Column or Row is a Line检测图像像素的列或行是否为线 【发布时间】:2014-09-28 20:02:18 【问题描述】:

我正在尝试检测扫描文档的边框,因为它有助于提高我的 OCR 提取率。边界被认为是边缘噪音,所以我必须摆脱它们。边框通常在图像中具有最高的密度。

我检查了图像中的每一列像素,并且密度最高的列可能是边框,当且仅当它是一条线。这就是我的问题出现的地方。我不知道如何检测像素列是否为线。

任何帮助将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

您使用霍夫线变换,但它会为您需要进行 OCR 的数据提供线。

根据您的问题,我能想到的最简单的解决方案就是这个。 由于它的边界,您可以根据宽度和高度的一些阈值来减少搜索空间。 例如,如果您的图像是 'wx h' 并且您的搜索空间宽度 's' 您的搜索空间将是 '0 to s' 'ws to w ' '0 到 s' 'hs 到 h'

【讨论】:

如何获取s/搜索空间的值? 这取决于图像。如果您可以编辑问题并放置图像,那将很有帮助。如果每个图像的边框或多或少都是固定的,则可以硬编码“s”的值。此外,如果您的边框连接良好,您可以根据 CCL 标签移除边框。【参考方案2】:

Opencv中有一个基于霍夫变换的线检测算法:Tutorial on Hough transform

这将检测图像中存在的线条,您只需查看您检测为边框的像素是否属于检测到的线条之一。

【讨论】:

以上是关于检测图像像素的列或行是不是为线的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA - 确定数组 UDF 的列或行目标

text Bg图像列或行移动插件

学会注意错误

检测灰度图像的某些像素

如何访问二进制 Mat 图像中的像素值?

图像的亚像素边缘检测 MATLAB代码