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

EP02_02 — 🔬 Subamostragem Espacial

2.12.2 EP02_02 🔬 Subamostragem Espacial

Nesta atividade, você deve implementar a redução da resolução espacial de uma imagem através do processo de subamostragem.

  • Leia dois inteiros L e C, representando as dimensões da matriz original.
  • Leia um valor inteiro \(f\) (\(f \ge 1\)), que representa o fator de amostragem.
  • Leia os valores inteiros da matriz original.
  • A nova imagem deve ser construída selecionando o pixel da posição \((f \cdot i, f \cdot j)\) da imagem original.
  • Imprima a matriz resultante com as novas dimensões.
  • Ver na Figura 2.13 uma simulação deste EP.

📌 Importante:

  • Dimensões Finais: A imagem amostrada terá dimensões \(\lceil L/f \rceil \times \lceil C/f \rceil\). No contexto de programação, isso equivale ao tamanho resultante de um fatiamento (slicing) com passo \(f\).
  • Implementação: Não utilize funções prontas de bibliotecas de processamento de imagens (como OpenCV ou PIL) para o redimensionamento. Implemente a lógica de seleção de pixels manualmente ou via fatiamento de matrizes.
  • Aliasing: Note que este processo pode causar o efeito de aliasing (serrilhamento), onde detalhes finos são perdidos ou padrões indesejados aparecem.

2.12.2.1 🧠 Discretização do Espaço

A subamostragem reduz a resolução espacial de uma imagem, selecionando apenas um pixel a cada \(f\) pixels em cada direção. É o processo inverso da interpolação:

Parâmetro Função Efeito
Fator \(f\) Salto de amostragem Define o intervalo de seleção. Um fator \(2\) reduz a largura e altura pela metade.
Resolução Densidade de pixels Diminui a quantidade total de informação espacial da imagem.
Aliasing Efeito colateral Surgimento de padrões em escada ou blocos devido à perda de detalhes finos.

2.12.2.2 📋 Tarefa (especificação para VPL)

Entrada:

A primeira linha contém L.

A segunda linha contém C.

A terceira linha contém o fator f.

As linhas seguintes contêm os elementos da matriz \(L \times C\).

Saída:

A matriz reduzida com as dimensões correspondentes ao fatiamento por f.

2.12.2.3 📌 Exemplos

Entrada Saída Observação
2
4
2
10 20 30 40
50 60 70 80
10 30 O fator 2 seleciona os pixels (0,0) e (0,2) da primeira linha. A segunda linha é ignorada.
🔽 Simulador EP02_02: Subamostragem Espacial de Imagem p'(i, j) = p(i·f, j·f)

Ajuste o fator de subamostragem (f) para observar a redução na dimensão espacial da matriz e a amostragem por salto dos pixels superiores esquerdos de cada bloco f × f.

1
f = 1 → Resolução Original (4×4)  |  f = 2 → Metade (2×2)  |  f = 3 ou 4 → Amostra Única (1×1)
Original (4×4)
Subamostrada (Tamanho Variável)
Fator f = 1 → mantém todos os pixels originais (4×4)
Figura 2.13: Simulador EP02_02: Subamostragem Espacial (Redução de Resolução por Salto f)
%%writefile EP02_02.py
# Código Python
Overwriting EP02_02.py
TestSuite("EP02_02.py").run()
✔️ EP02_02.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP02_02.cases

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