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

EP03_03 — 🎭 Inversão de Imagem (Negativo Fotográfico)

3.12.3 EP03_03 🎭 Inversão de Imagem (Negativo Fotográfico)

Em radiologia, as imagens de raio-X são tradicionalmente visualizadas em negativo: ossos aparecem em preto sobre fundo branco. A operação de negativo fotográfico é aplicada rotineiramente em PACS (Picture Archiving and Communication Systems) para facilitar a detecção de fraturas e densidades ósseas.

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

3.12.3.1 📋 Diretrizes de Implementação

  1. Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
  2. Dados: Ler os valores inteiros da matriz original.
  3. Mapeamento: Para cada pixel \(p\), calcular o negativo:

\[p' = 255 - p\]

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

3.12.3.2 📌 Restrições Computacionais

  • Sem clipping necessário: O resultado de \(255 - p\) com \(p \in [0, 255]\) é sempre \(\in [0, 255]\).
  • Tipo inteiro: Saída deve ser valores inteiros.
  • Equivalência lógica: A operação é idêntica ao NOT bit a bit (mm.bnot) em imagens de 8 bits.

3.12.3.3 🧠 Fundamentação Teórica

Pixel Original \(p\) Pixel Negativo \(p'\) Observação
0 (preto) 255 (branco) Inversão total
128 (cinza médio) 127 (cinza médio) Valor central
255 (branco) 0 (preto) Inversão total

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

Entrada:

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

Saída:

  • Matriz negativa em \(L\) linhas e \(C\) colunas.

3.12.3.5 📌 Exemplos

Entrada Saída Observação
1
4
0 128 200 255
255 127 55 0 Inversão de cada pixel
2
2
10 20
30 40
245 235
225 215
Matriz 2x2 invertida
🎭 Simulador EP03_03: Negativo Fotográfico (Inversão) p' = 255 − p

Observe a inversão complementar de intensidade: tons escuros tornam-se claros e tons claros tornam-se escuros subtraindo cada píxel do valor máximo de 255.

Entrada Original (p)
Negativo (p' = 255 − p)
 
Fórmula aplicada: p' = 255 − p
Figura 3.28: Simulador EP03_03: Inversão de Imagem — Negativo Fotográfico (p’ = 255 − p)
%%writefile EP03_03.py
# Código Python
Writing EP03_03.py
TestSuite("EP03_03.py").run()
✔️ EP03_03.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP03_03.cases

🔍 Testando Python: EP03_03.py
⚠️ EP03_03.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.