在TeX stackexchange上,我们一直在讨论如何在此问题的段落中检测“河流” 。
在这种情况下,河流是空白区域,是文本中单词间空格的意外对齐导致的。由于这可能会使读者分心,因此糟糕的河流被认为是不良印刷的征兆。带有河流的文本的一个示例是该河流,其中有两条河流沿对角线流动。
有兴趣自动检测这些河流,以便可以避免(可能是通过手动编辑文本)。Raphink在TeX级别上取得了一些进展(仅知道字形位置和边界框),但是我有信心,检测河流的最佳方法是进行某些图像处理(因为字形形状非常重要,TeX无法使用)。 。我尝试了多种方法从上述图像中提取河流,但是我提出的应用少量椭圆形模糊的简单想法似乎还不够好。我也试过Rad基于霍夫变换的过滤,但是我也没有。河流对于人眼/视网膜/大脑的特征检测电路非常明显,因此我认为可以将其转换为某种过滤操作,但我无法使其工作。有任何想法吗?
具体来说,我正在寻找一些操作来检测上图中的2条河流,但没有太多其他误报检测。
编辑: endolith问我为什么要采用基于图像处理的方法,因为在TeX中我们可以访问字形的位置,间距等,并且使用检查实际文本的算法可能更快,更可靠。我做事的原因是形状的字形可能会影响河流的明显程度,并且在文本级别上很难考虑这种形状(取决于字体,绑扎等)。有关字形形状如何重要的示例,请考虑以下两个示例,它们之间的区别在于,我用几乎相同宽度的其他字形替换了一些字形,以便进行基于文本的分析他们同样好/坏。但是请注意,第一个示例中的河流比第二个示例中的河流差很多。
ImageLines[]
从Mathematica使用,带有或不带有一些预处理。我猜想这在技术上是使用霍夫变换而不是拉顿变换。如果适当的预处理(我没有尝试过datageist建议的膨胀过滤器)和/或参数设置可以使这项工作奏效,我不会感到惊讶。