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

EP01_08 — 🎨 Remapeamento por Faixa de Intensidade

1.17.8 EP01_08 🎨 Remapeamento por Faixa de Intensidade

Nesta atividade, você deve escrever um programa que aplique transformações lineares distintas a diferentes regiões de intensidade da imagem.

  • Leia dois inteiros L e C, representando as dimensões da matriz.
  • Leia os inteiros T (limiar), δ₁ (delta 1) e δ₂ (delta 2).
  • Leia os valores inteiros da matriz.
  • Para cada pixel \(p\), aplique a regra de remapeamento condicional:

\[\text{resultado} = \begin{cases} p + \delta_1 & \text{se } p < T \\ p + \delta_2 & \text{se } p \ge T \end{cases}\]

  • Imprima a matriz resultante com os novos valores de intensidade.

📌 Importante:

  • δ₁ é o offset aplicado aos pixels escuros (abaixo do limiar).
  • δ₂ é o offset aplicado aos pixels claros (maior ou igual ao limiar).
  • Os casos de teste garantem que o resultado estará sempre no intervalo válido de 0 a 255, portanto, não é necessário tratar saturação ou arredondamentos.
  • A saída deve manter a estrutura de matriz (L linhas e C colunas).

1.17.8.1 🧠 Transformação Condicional de Pixels

Em Processamento Digital de Imagens (PDI), frequentemente precisamos tratar regiões de forma independente. Esta técnica permite, por exemplo, clarear apenas as sombras de uma fotografia (aumentando os pixels escuros) sem estourar o brilho das áreas já claras, ou vice-versa.

Faixa de Intensidade Condição Operação
Pixels Escuros \(p < T\) \(p + \delta_1\)
Pixels Claros \(p \ge T\) \(p + \delta_2\)

1.17.8.2 📋 Tarefa (especificação para VPL)

Entrada:

A primeira linha contém os inteiros L e C.

A segunda linha contém os inteiros T, δ₁ e δ₂.

As linhas seguintes contêm os elementos da matriz.

Saída:

A matriz transformada com L linhas e C colunas, com valores separados por espaço.

1.17.8.3 📌 Exemplos

Entrada Saída Observação
2 4
128 60 -40
0 100 150 255
80 128 200 30
60 160 110 215
140 88 160 90
Pixels < 128 somam 60. Pixels ≥ 128 subtraem 40.
🎛️ Simulador EP01_08: Remapeamento por Faixa Condicional p < T → p + δ₁ | p ≥ T → p + δ₂

Ajuste o limiar de separação (T) e os deslocamentos de brilho (δ₁ e δ₂) para aplicar transformações de intensidade diferenciadas nas regiões escuras e claras da imagem.

128
+60
-40
Entrada Original (p)
Resultado Transformado
Regra ativa: p < 128 → p + (+60)  |  p ≥ 128 → p + (-40)
Figura 1.18: Simulador EP01_08: Remapeamento por Faixa Condicional (Brilho e Contraste por Limiar)
%%writefile EP01_08.cpp
// sua solução
Overwriting EP01_08.cpp
TestSuite("EP01_08.cpp").run()
✔️ EP01_08.cases já existe em casos/
📋 8 caso(s) carregado(s) de casos/EP01_08.cases

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