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 stringv2: 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 1DJanela 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.cpp// sua solução
Overwriting EP01_11.cpp
TestSuite("EP01_11.cpp").run()
✔️ EP01_11.cases já existe em casos/
📋 7 caso(s) carregado(s) de casos/EP01_11.cases
🔍 Testando C++: EP01_11.cpp
⚠️ EP01_11.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.