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

EP01_11 — 📈 Análise de Vizinhança: Filtro de Máximo 1D

1.17.11 EP01_11 📈 Análise de Vizinhança: Filtro de Máximo 1D

Nesta atividade, você deve implementar um filtro morfológico simples de máximo operando em um sinal unidimensional (vetor).

  • Leia um inteiro n, representando o tamanho do vetor.
  • Leia os n elementos inteiros que compõem o vetor original v1.
  • Crie um novo vetor v2, onde cada posição \(i\) é o resultado da comparação entre o elemento atual e seus vizinhos imediatos:

\[v2[i] = \max(v1[i-1],\; v1[i],\; v1[i+1])\]

📌 Importante:

  • Bordas: Nas extremidades do vetor (índices \(0\) e \(n-1\)), a vizinhança possui apenas dois elementos (o próprio e o único vizinho disponível). No índice \(0\), compare apenas \(v1[0]\) e \(v1[1]\). No último índice, compare apenas \(v1[n-2]\) e \(v1[n-1]\).
  • Saída: Imprima o cabeçalho “v2:” seguido pelos valores do vetor resultante, um por linha.
  • Ver um simulador interativo para esta questão na Figura 1.21 (passe o mouse sobre os resultados para visualizar a janela de vizinhança utilizada no cálculo).

1.17.11.1 🧠 Por que analisar vizinhos?

Em processamento de imagens, o valor de um pixel raramente é isolado; ele depende do contexto ao seu redor. O Filtro de Máximo é a base da operação de Dilatação em morfologia matemática, servindo para:

Função Efeito Visual
Realce Expande estruturas brilhantes e “engorda” objetos claros.
Remoção de Ruído Elimina pequenos pontos pretos (ruído de “sal e pimenta” escuro).
Preenchimento Fecha pequenos buracos ou lacunas em formas binárias.

1.17.11.2 📋 Tarefa (especificação para VPL)

Entrada:

Um inteiro n.

Nas linhas seguintes, os n elementos inteiros do vetor.

Saída:

A string v2: na primeira linha.

Nas linhas seguintes, cada elemento de v2 (um por linha).

1.17.11.3 📌 Exemplos

Entrada Saída Observação
5
10
20
5
30
15
v2:
20
20
30
30
30
No índice 1: max(10, 20, 5) = 20
📈 Simulador EP01_11: Filtro de Máximo Local 1D Janela 1x3

Clique nos elementos de v1 (Entrada) para gerar novos valores individuais ou passe o mouse sobre as células de v2 (Resultado) para inspecionar a janela local de vizinhança.

Vetor v1 (Entrada)
⬇️
Vetor v2 (Resultado do Máximo)
Passe o cursor do mouse sobre uma célula do vetor v2 para analisar a janela de máximo local.
Figura 1.21: Simulador EP01_11: Filtro de Máximo Local 1D (Vizinhança 1x3 com Condição de Borda)
%%writefile EP01_11.py
# sua solução
Writing EP01_11.py
TestSuite("EP01_11.py").run()
✔️ EP01_11.cases já existe em casos/
📋 7 caso(s) carregado(s) de casos/EP01_11.cases

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