В рамках обмена стеками TeX мы обсуждали, как обнаружить «реки» в параграфах этого вопроса .
В этом контексте реки - это полосы пустого пространства, возникающие в результате случайного выравнивания межсловных пространств в тексте. Поскольку это может отвлекать читателя, плохие реки считаются признаком плохой типографии. Пример текста с реками - тот, где есть две реки, текущие по диагонали.
Существует заинтересованность в автоматическом обнаружении этих рек, чтобы их можно было избежать (возможно, путем ручного редактирования текста). Raphink добивается некоторого прогресса на уровне TeX (который знает только положения глифов и ограничивающие рамки), но я уверен, что лучший способ обнаружить реки - это некоторая обработка изображений (поскольку формы глифов очень важны и недоступны для TeX) , Я пробовал различные способы извлечения рек из приведенного выше изображения, но моя простая идея применения небольшого количества эллипсоидального размытия не кажется достаточно хорошей. Я также попробовал немного РадонаХоть фильтрация на основе преобразования, но я тоже никуда не попал. Реки очень хорошо видны для схем обнаружения признаков человеческого глаза / сетчатки / мозга, и я думаю, что это может быть преобразовано в какую-то операцию фильтрации, но я не могу заставить ее работать. Есть идеи?
В частности, я ищу какую-то операцию, которая обнаружит 2 реки на изображении выше, но не будет иметь слишком много других ложных положительных обнаружений.
РЕДАКТИРОВАТЬ: endolith спросил, почему я придерживаюсь подхода, основанного на обработке изображений, учитывая, что в TeX у нас есть доступ к позициям глифов, промежуткам и т. Д., И может быть намного быстрее и надежнее использовать алгоритм, который проверяет фактический текст. Моя причина сделать что-то другое, потому что формаиз глифов может повлиять на то, насколько заметна река, и на уровне текста очень трудно рассмотреть эту форму (которая зависит от шрифта, лигатуры и т. д.). Для примера того, как форма глифов может быть важна, рассмотрим следующие два примера, где различие между ними состоит в том, что я заменил несколько глифов на другие почти такой же ширины, чтобы анализ на основе текста мог рассмотреть их одинаково хорошо / плохо. Обратите внимание, однако, что реки в первом примере намного хуже, чем во втором.
ImageLines[]
от Mathematica, с и без предварительной обработки. Я предполагаю, что это технически использует преобразование Хафа, а не Радона. Я не удивлюсь, если правильная предварительная обработка (я не пробовал предложенный datageist фильтр расширения) и / или настройки параметров могут сделать эту работу.