EP05_01 — 🟢 Filtro Passa-Baixa Ideal por Distância no Espectro
5.13.1 EP05_01 🟢 Filtro Passa-Baixa Ideal por Distância no Espectro
Em um scanner de documentos antigo, o sensor capta papel amassado e textura de fibra junto com o texto — ruído de alta frequência que “polui” o espectro nas bordas. O técnico de manutenção não tem acesso à imagem original, apenas ao espectro de magnitude já calculado pelo software do scanner. Seu trabalho é simples e cirúrgico: manter apenas o círculo central de baixas frequências (a estrutura global do documento) e apagar tudo que estiver fora do raio \(D_0\), eliminando a textura fina sem nem precisar tocar na imagem espacial.
Este é o Filtro Passa-Baixa Ideal (LPFI): a operação espectral mais direta do capítulo, mas também a que melhor revela a anatomia de um espectro centrado.
5.13.1.1 📋 Diretrizes de Implementação
Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas) do espectro de magnitude — já fornecido centrado (equivalente à saída de np.fft.fftshift).
Frequência de corte: Ler o inteiro \(D_0\).
Dados: Ler os valores inteiros da matriz de magnitude, linha a linha.
Centro do espectro: Calcular \((c_y, c_x) = (L \mathbin{//} 2,\; C \mathbin{//} 2)\).
Distância: Para cada posição \((u,v)\), calcular \[
D(u,v) = \sqrt{(u-c_y)^2 + (v-c_x)^2}
\]
Ajuste D₀ e observe quais posições do espectro 5×5 sobrevivem ao filtro.
Espectro Original (Magnitude)
Resultado Filtrado
–
Figura 5.32: Simulador EP05_01: Filtro Passa-Baixa Ideal no Espectro
%%writefile EP05_01.cpp// sua solução
Overwriting EP05_01.cpp
TestSuite("EP05_01.cpp").run()
✔️ EP05_01.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP05_01.cases
🔍 Testando C++: EP05_01.cpp
⚠️ EP05_01.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.