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.
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.