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 ImagemBiná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.