👆 Clique numa célula da Entrada Original para escurecer o píxel (−30) e clique com o botão direito para clarear (+30). Ajuste o limiar T para binarização.
4.9.1 EP04_01 🎚️ Limiarização Global por Limiar Fixo
Em scanners de documentos e em sistemas de leitura de código de barras, a primeira etapa do processamento é sempre separar o que é “objeto” (tinta, texto, barras) do que é “fundo” (papel, embalagem). A limiarização global faz exatamente isso: compara cada pixel a um único limiar \(T\) e decide, em tempo real, se ele pertence à classe clara ou à classe escura. É o operador de segmentação mais simples — e mesmo assim, está por trás de boa parte dos pipelines industriais de inspeção visual. Ver na Figura 4.30 uma simulação deste EP.
4.9.1.1 📋 Diretrizes de Implementação
- Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
- Limiar: Ler o inteiro \(T\) (limiar de decisão).
- Dados: Ler os valores inteiros da matriz original linha a linha.
- Mapeamento: Para cada pixel \(p\), calcular o novo valor pela equação:
\[ p' = \begin{cases} 255, & \text{se } p > T \\ 0, & \text{se } p \le T \end{cases} \] 5. Saída: Exibir a matriz binarizada com dimensões \(L \times C\).
4.9.1.2 📌 Restrições Computacionais
- Binarização: A saída contém apenas os valores \(0\) ou \(255\).
- Comparação estrita: O critério usa \(> T\) (pixels iguais a \(T\) tornam-se fundo).
- Tipo: O resultado final deve ser inteiro.
- Observação: Este EP segue a convenção da OpenCV (
cv2.THRESL_BINARY): apenas pixels com valor maior que \(T\) tornam-se brancos (255); pixels com valor igual a \(T\) permanecem pretos (0).
4.9.1.3 🧠 Fundamentação Teórica
| Parâmetro | Tipo | Impacto Visual |
|---|---|---|
| \(T\) pequeno | Inteiro | A maioria dos pixels torna-se branca |
| \(T\) grande | Inteiro | A maioria dos pixels torna-se preta |
| \(T\) bem escolhido | Inteiro | Separa nitidamente objeto e fundo |
4.9.1.4 📦 Especificação de Entrada e Saída (VPL)
Entrada:
- Linha 1: Inteiro \(L\).
- Linha 2: Inteiro \(C\).
- Linha 3: Inteiro \(T\).
- Linhas seguintes: Elementos inteiros da matriz original.
Saída:
- Matriz binarizada em \(L\) linhas e \(C\) colunas, valores \(0\) ou \(255\) separados por espaço.
4.9.1.5 📌 Exemplos
| Entrada | Saída | Observação |
|---|---|---|
| 2 4 100 0 99 100 180 255 30 120 80 |
0 0 0 255 255 0 255 0 |
\(T=100\): apenas pixels com valor maior que 100 tornam-se brancos; por isso, 99 e 100 tornam-se pretos. |
| 1 3 0 0 50 255 |
0 255 255 | \(T=0\): apenas pixels com valor estritamente maior que 0 tornam-se brancos. |
🎚️ Simulador EP04_01: Limiarização Global
p' = (p > T) ? 255 : 0
128
Entrada Original (Clicável)
Resultado Binarizado (p')
Fórmula aplicada: (p > 128) ? 255 : 0
%%writefile EP04_01.py
# Código PythonWriting EP04_01.py
TestSuite("EP04_01.py").run()✔️ EP04_01.cases já existe em casos/
📋 7 caso(s) carregado(s) de casos/EP04_01.cases
🔍 Testando Python: EP04_01.py
⚠️ EP04_01.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.