PDI+VC · Exercício de Programação

EP01_07 — ⚫ Limiarização Manual: Imagem Binária

1.17.7 EP01_07 ⚫ Limiarização Manual: Imagem Binária

Nesta atividade, você deve escrever um programa que realize a segmentação de uma imagem através da limiarização (thresholding).

  • Leia dois inteiros L e C, representando as dimensões da matriz.
  • Leia um inteiro T, que será o valor do limiar (corte).
  • Leia os valores inteiros da matriz.
  • Para cada pixel \(p\), aplique a seguinte regra de binarização:

\[\text{resultado} = \begin{cases} 255 & \text{se } p > T \\ 0 & \text{se } p \le T \end{cases}\]

  • Imprima a matriz resultante contendo apenas os valores 0 ou 255.

📌 Importante:

  • Preste atenção ao operador: o pixel só vira branco (255) se for estritamente maior que \(T\).
  • A saída deve manter a estrutura de matriz (L linhas e C colunas).
  • Ver um simulador interativo para esta questão na Figura 1.17 (ajuste o slider de \(T\) para observar como os objetos são isolados do fundo).

1.17.7.1 🧠 O que é Segmentação?

A limiarização é o método mais simples de separar objetos de interesse do fundo da imagem. Ao transformar tons de cinza em preto e branco puro, criamos um mapa binário que facilita a contagem de objetos ou a identificação de formas:

Valor do Pixel (\(p\)) Condição Resultado Final
Escuro (\(p \le T\)) Fundo/Ruído 0 (Preto)
Claro (\(p > T\)) Objeto/Destaque 255 (Branco)

1.17.7.2 📋 Tarefa (especificação para VPL)

Entrada:

A primeira linha contém o inteiro L.

A segunda linha contém o inteiro C.

A terceira linha contém o inteiro T (limiar).

As linhas seguintes contêm os elementos da matriz.

Saída:

A matriz binarizada (0 ou 255) com L linhas e C colunas.

1.17.7.3 📌 Exemplos

Entrada Saída Observação
2
4
128
0 100 128 200
50 129 255 64
0 0 0 255
0 255 255 0
Note que o valor 128 virou 0 (pois \(128 \le 128\))
🎛️ Simulador EP01_07: Limiarização Interativa de Imagem Binário: 0 ou 255
128
Entrada (Tons de Cinza)
Saída (Máscara Binária)
Pixels com intensidade maior que 128 (p > 128) tornam-se brancos (255); caso contrário, tornam-se pretos (0).
Figura 1.17: Simulador EP01_07: Limiarização Global Interativa (Binarização p > T)
%%writefile EP01_07.cpp
// sua solução
Overwriting EP01_07.cpp
TestSuite("EP01_07.cpp").run()
✔️ EP01_07.cases já existe em casos/
📋 7 caso(s) carregado(s) de casos/EP01_07.cases

🔍 Testando C++: EP01_07.cpp
⚠️ EP01_07.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.