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

EP03_02 — 🔀 Alpha Blending de Duas Imagens

3.12.2 EP03_02 🔀 Alpha Blending de Duas Imagens

Em medicina nuclear, imagens de diferentes modalidades (tomografia computadorizada e ressonância magnética) são fundidas para auxiliar no diagnóstico. A mistura ponderada (alpha blending) é a operação fundamental desse processo, permitindo ao radiologista controlar interativamente o peso de cada modalidade na imagem exibida.

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

3.12.2.1 📋 Diretrizes de Implementação

  1. Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
  2. Parâmetro: Ler o valor real \(\alpha \in [0, 1]\).
  3. Dados: Ler os valores inteiros da matriz \(f_1\) (imagem 1) e em seguida da matriz \(f_2\) (imagem 2).
  4. Mapeamento: Para cada posição \((i, j)\), calcular:

\[g(i,j) = \text{clip}\left(\text{round}\left(\alpha \cdot f_1(i,j) + (1-\alpha) \cdot f_2(i,j)\right)\right)\]

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

3.12.2.2 📌 Restrições Computacionais

  • Arredondamento: Aplicar round antes da conversão para inteiro.
  • Saturação: Confinar ao intervalo \([0, 255]\) com \(\text{clip}(x) = \max(0, \min(255, x))\).
  • Operação em float: Realize a operação em ponto flutuante antes de arredondar.

3.12.2.3 🧠 Fundamentação Teórica

Valor de \(\alpha\) Resultado
\(\alpha = 1.0\) Apenas \(f_1\)
\(\alpha = 0.5\) Média aritmética de \(f_1\) e \(f_2\)
\(\alpha = 0.0\) Apenas \(f_2\)

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

Entrada:

  • Linha 1: Inteiro \(L\).
  • Linha 2: Inteiro \(C\).
  • Linha 3: Real \(\alpha\).
  • Linhas seguintes: Elementos de \(f_1\) (\(L\) linhas com \(C\) valores cada).
  • Linhas seguintes: Elementos de \(f_2\) (\(L\) linhas com \(C\) valores cada).

Saída:

  • Matriz resultante \(L \times C\).

3.12.2.5 📌 Exemplos

Entrada Saída Observação
1
3
0.5
0 100 200
100 200 50
50 150 125 Média entre as duas imagens
1
3
1.0
10 20 30
90 80 70
10 20 30 Apenas \(f_1\) (alpha=1)
🔀 Simulador EP03_02: Alpha Blending de Duas Imagens g = α·f1 + (1−α)·f2

Ajuste o parâmetro de transparência α para observar a combinação linear ponderada pixel a pixel entre as imagens f1 e f2.

0.50
α = 0.00 → Apenas f2  |  α = 0.50 → Média Ponderada Igual  |  α = 1.00 → Apenas f1
Imagem f1
Imagem f2
Resultado g
Fórmula: clip(round(0.50 · f1 + 0.50 · f2))
Figura 3.27: Simulador EP03_02: Alpha Blending de Duas Imagens (g = α·f1 + (1−α)·f2)
%%writefile EP03_02.cpp
// sua solução
Overwriting EP03_02.cpp
TestSuite("EP03_02.cpp").run()
✔️ EP03_02.cases já existe em casos/
📋 6 caso(s) carregado(s) de casos/EP03_02.cases

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