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

EP03_01 — ➕ Adição Saturada de Constante

3.12.1 EP03_01 ➕ Adição Saturada de Constante

Em sistemas de vigilância por vídeo, câmeras em ambientes com iluminação variável produzem imagens subexpostas. O ajuste de brilho por adição saturada de uma constante é a operação mais simples para correção imediata, sendo aplicada em tempo real nos chips de câmeras embarcadas e em pipelines de pré-processamento de robôs móveis.

Ver na Figura 3.26 uma simulação deste EP.

3.12.1.1 📋 Diretrizes de Implementação

  1. Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
  2. Constante: Ler o inteiro \(k\) (valor a ser somado).
  3. Dados: Ler os valores inteiros da matriz original linha a linha.
  4. Mapeamento: Para cada pixel \(p\), calcular o novo valor pela equação:

\[p' = \text{clip}(p + k)\]

  1. Saída: Exibir a matriz resultante com dimensões \(L \times C\).

3.12.1.2 📌 Restrições Computacionais

  • Saturação (Clipping): Os valores devem ser confinados ao intervalo \([0, 255]\): \[\text{clip}(x) = \max(0, \min(255, x))\]
  • Tipo: O resultado final deve ser inteiro (sem casas decimais).
  • \(k\) pode ser negativo: valores negativos escurecem a imagem; positivos clareiam.

3.12.1.3 🧠 Fundamentação Teórica

Parâmetro Tipo Impacto Visual
\(k > 0\) Inteiro Clareia a imagem; pixels próximos de 255 saturam em branco
\(k < 0\) Inteiro Escurece a imagem; pixels próximos de 0 saturam em preto
\(k = 0\) Inteiro Imagem inalterada

3.12.1.4 📦 Especificação de Entrada e Saída (VPL)

Entrada:

  • Linha 1: Inteiro \(L\).
  • Linha 2: Inteiro \(C\).
  • Linha 3: Inteiro \(k\).
  • Linhas seguintes: Elementos inteiros da matriz original.

Saída:

  • Matriz transformada em \(L\) linhas e \(C\) colunas, valores inteiros separados por espaço.

3.12.1.5 📌 Exemplos

Entrada Saída Observação
2
3
50
0 100 200
210 240 255
50 150 250
255 255 255
Saturação em 255 nos pixels altos
1
4
-30
0 20 200 255
0 0 170 225 Saturação em 0 nos pixels baixos
➕ Simulador EP03_01: Adição Saturada de Constante p' = clip(p + k)

Ajuste o valor da constante k para observar o deslocamento de brilho da imagem e o truncamento por saturação no intervalo [0, 255].

0
Entrada Original (p)
Resultado Transformado (p')
Fórmula aplicada: clip(p + (0))
Figura 3.26: Simulador EP03_01: Adição Saturada de Constante (p’ = clip(p + k))
%%writefile EP03_01.cpp
// sua solução
Overwriting EP03_01.cpp
TestSuite("EP03_01.cpp").run()
✔️ EP03_01.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP03_01.cases

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