Na troca de pilha TeX, discutimos como detectar "rios" nos parágrafos desta pergunta .
Nesse contexto, rios são faixas de espaço em branco que resultam do alinhamento acidental de espaços entre palavras no texto. Como isso pode ser bastante perturbador para um leitor, rios ruins são considerados um sintoma de tipografia ruim. Um exemplo de texto com rios é este, onde existem dois rios fluindo na diagonal.
Há interesse em detectar esses rios automaticamente, para que possam ser evitados (provavelmente pela edição manual do texto). O Raphink está fazendo algum progresso no nível TeX (que apenas conhece as posições dos glifos e as caixas delimitadoras), mas sinto-me confiante de que a melhor maneira de detectar rios é com algum processamento de imagem (já que as formas dos glifos são muito importantes e não estão disponíveis para o TeX) . Eu tentei várias maneiras de extrair os rios da imagem acima, mas minha ideia simples de aplicar uma pequena quantidade de desfoque elipsoidal não parece ser boa o suficiente. Eu também tentei alguns RadonFiltragem baseada em transformação, mas também não cheguei a lugar nenhum. Os rios são muito visíveis aos circuitos de detecção de características do olho humano / retina / cérebro e, de alguma forma, acho que isso poderia ser traduzido para algum tipo de operação de filtragem, mas não consigo fazê-lo funcionar. Alguma ideia?
Para ser específico, estou procurando alguma operação que detecte os 2 rios na imagem acima, mas não tenha muitas outras detecções de falsos positivos.
EDIT: endolith perguntou por que estou adotando uma abordagem baseada no processamento de imagens, uma vez que no TeX temos acesso às posições de glifos, espaçamentos etc., e pode ser muito mais rápido e confiável usar um algoritmo que examina o texto real. Minha razão para fazer as coisas de outra maneira é que a formaUm dos glifos pode afetar o grau de visibilidade de um rio e, no nível do texto, é muito difícil considerar essa forma (que depende da fonte, da ligadura etc.). Para um exemplo de como a forma dos glifos pode ser importante, considere os dois exemplos a seguir, onde a diferença entre eles é que substituí alguns glifos por outros quase da mesma largura, para que uma análise baseada em texto considere eles igualmente bons / ruins. Note, no entanto, que os rios no primeiro exemplo são muito piores que no segundo.
ImageLines[]
no Mathematica, com e sem algum pré-processamento. Eu acho que isso é tecnicamente usando uma transformação Hough ao invés de Radon. Não ficarei surpreso se o pré-processamento adequado (não tentei o filtro de dilatação sugerido pelo datagrama) e / ou as configurações de parâmetros puderem fazer esse trabalho.