На тексах обміну статтею TeX ми обговорювали, як виявити "річки" в параграфах цього питання .
У цьому контексті річки - це смуги білого простору, які виникають внаслідок випадкового вирівнювання міжмовних просторів у тексті. Оскільки це може бути досить відволікає читача, погані річки вважаються симптомом поганої типографії. Прикладом тексту з річками є ця, де дві річки течуть по діагоналі.
Існує інтерес до автоматичного виявлення цих річок, щоб уникнути їх (можливо, шляхом ручного редагування тексту). Raphink досягає певного прогресу на рівні TeX (який знає лише положення гліфів та обмежувальні поля), але я впевнений, що найкращий спосіб виявити річки - це деяка обробка зображень (оскільки форми глифів дуже важливі і не доступні TeX) . Я спробував різні способи видобути річки з наведеного зображення, але моя проста ідея застосувати невелику кількість еліпсоїдальних розмиття здається недостатньо хорошою. Я також спробував якийсь РадонХотка фільтрація на основі трансформації, але з ними я ніде не потрапив. Річки дуже добре помітні в ланцюгах виявлення функцій людського ока / сітківки / мозку, і я якось думаю, що це може бути переведено на якусь фільтрувальну операцію, але я не в змозі змусити її працювати. Якісь ідеї?
Щоб бути конкретним, я шукаю деяку операцію, яка виявить дві річки на наведеному вище зображенні, але не матиме занадто багато інших помилкових позитивних виявлень.
EDIT: ендоліт запитав, чому я дотримуюся підходу на основі обробки зображень, враховуючи, що в TeX ми маємо доступ до гліфних позицій, проміжків тощо, і, можливо, набагато швидше і надійніше використовувати алгоритм, який вивчає фактичний текст. Моя причина робити інший спосіб - це формаз гліфів може вплинути на те, наскільки річ помітна, і на рівні тексту дуже важко розглянути цю форму (яка залежить від шрифту, лігатури тощо). Для прикладу того, як форма гліфів може бути важливою, розглянемо наступні два приклади, де різниця між ними полягає в тому, що я замінив кілька гліфів на інші майже однакової ширини, щоб текстовий аналіз міг би врахувати вони однаково хороші / погані. Однак зауважте, що річки в першому прикладі значно гірші, ніж у другому.
ImageLines[]
з Mathematica, з попередньою обробкою і без неї. Я думаю, це технічно використовує перетворення Хафа, а не Радона. Я не буду здивований, якщо правильна попередня обробка (я не спробував запропонований фільтром розширення datageist) та / або параметри параметрів зможуть зробити цю роботу.