EP06_04 — 🟡 Estimador de Inclinação por Mediana Angular ( Deskew )
6.14.4 EP06_04 🟡 Estimador de Inclinação por Mediana Angular (Deskew)
Após a detecção de bordas e a aplicação da Transformada de Hough, obtém-se um conjunto de retas candidatas à orientação predominante do documento. Cada reta fornece uma estimativa do ângulo de inclinação, calculada por
Entretanto, nem todas as retas correspondem às linhas do documento: algumas resultam de ruídos, sombras ou outros elementos da imagem. Neste exercício, você implementará a etapa de estimação robusta do ângulo de inclinação, filtrando os valores plausíveis e calculando sua mediana.
6.14.4.1 📋 Diretrizes de Implementação
Quantidade: Ler o inteiro \(M\), correspondente ao número de ângulos estimados.
Ângulos: Ler os \(M\) valores reais, em graus.
Filtragem: Manter apenas os ângulos que satisfaçam estritamente\(-45 < \text{ângulo} < 45\).
Ausência de candidatos: Se nenhum ângulo permanecer após a filtragem, imprimir exatamente SEM_CORRECAO.
Mediana: Caso existam ângulos válidos:
se a quantidade for ímpar, a mediana é o elemento central da sequência ordenada;
se for par, a mediana é a média aritmética dos dois elementos centrais.
Saída: Imprimir a mediana arredondada para duas casas decimais (arredondamento padrão, round half away from zero, , com np.floor(img + 0.5)).
6.14.4.2 📌 Restrições Computacionais
Intervalo aberto: ângulos iguais a \(-45\) ou \(45\) não devem ser considerados.
Precisão: calcular a mediana utilizando os valores originais; o arredondamento deve ser realizado apenas na saída.
Caso vazio: se não houver ângulos válidos, nenhuma mediana deve ser calculada.
6.14.4.3 🧠 Fundamentação Teórica
Situação
Resultado
Maioria dos ângulos concentrada em torno da inclinação real
A mediana aproxima a orientação do documento.
Poucos ângulos discrepantes (outliers)
A mediana sofre pouca influência desses valores.
Ângulos fora do intervalo \((-45^\circ,45^\circ)\)
São descartados antes do cálculo.
Nenhum ângulo válido
Não é aplicada correção (SEM_CORRECAO).
A mediana é utilizada por ser mais robusta que a média na presença de poucos valores discrepantes, produzindo uma estimativa mais estável da inclinação predominante do documento.
6.14.4.4 📦 Especificação de Entrada e Saída (VPL)
Entrada:
Linha 1: Inteiro \(M\).
Linha 2: \(M\) números reais, correspondentes aos ângulos em graus.
Saída:
Uma única linha contendo o ângulo estimado, com duas casas decimais, ou a palavra SEM_CORRECAO caso nenhum ângulo seja válido.
6.14.4.5 📌 Exemplos
Entrada
Saída
Observação
5
-50 -10.5 2.3 2.3 47
2.30
Apenas os ângulos no intervalo \((-45,45)\) são considerados; a mediana é \(2{,}3\).
4
-46 50 45 -45
SEM_CORRECAO
Nenhum ângulo pertence ao intervalo aberto \((-45,45)\).
🎮 Simulador EP06_04: Estimador de Inclinação por Mediana Angular (Deskew)mediana(-45° < θ < 45°)
Arraste o ângulo do ruído extra para dentro ou fora do intervalo [-45°, +45°] e veja como a mediana permanece estável.
Amostras de Ângulos (Verde = Dentro da Faixa, Vermelho = Ruído Descartado)
–
Figura 6.24: Simulador EP06_04: Estimador de Inclinação por Mediana Angular
%%writefile EP06_04.py# Código Python
Writing EP06_04.py
TestSuite("EP06_04.py").run()
✔️ EP06_04.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP06_04.cases
🔍 Testando Python: EP06_04.py
⚠️ EP06_04.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.