Como parte de uma tarefa de casa, estamos implementando o filtro inverso. Degrade uma imagem e depois recupere com um filtro inverso.
Convolo a imagem no domínio espacial com um filtro de caixa 5x5. FFT o filtro, FFT a imagem degradada e, em seguida, divido a imagem degradada pelo filtro. FFT inverso o resultado em uma imagem e recebo lixo.
Se eu FFT a imagem, FFT o filtro, multiplique os dois, divida o resultado pelo filtro da FFT, obviamente chego muito perto da imagem original. ((X * Y) / Y ~ == X)
Eu tenho uma idéia de que a matemática não é tão simples quanto "espacialmente convoluida == multiplicação FFT".
Qual é a maneira correta de usar o filtro inverso? Eu tenho o kernel exato usado degradar a imagem. Não estou adicionando nenhum ruído.
O livro de Bovik, The Essential Guide to Image Processing, é quase completamente desprezível do filtro inverso. Gonzalez & Woods é um pouco mais esperançoso, mas pula quase imediatamente para o Filtro Wiener.
Tenho uma pergunta semelhante no stackoverflow.com /programming/7930803/inverse-filter-of-spatially-convolved-versus-frequency-convolved-image
(Essas perguntas também devem ser marcadas como [lição de casa], mas a tag ainda não existe e eu não tenho o representante para criá-la.)
EDITAR. Para algumas das ótimas sugestões abaixo. @ dipan-mehta Antes de FFT, estou preenchendo o kernel de convolução com o mesmo tamanho da imagem. Estou colocando o kernel no canto superior esquerdo. Eu ifft (ifftshift ()), em seguida, salvo em uma imagem e recebo um bom resultado. Eu fiz o ifft (ifftshift ()) no kernel e na imagem. Bons (ish) resultados. (As imagens estão na minha /programming/7930803/inverse-filter-of-spatially-convolved-versus-frequency-convolved-image question.)
@ jason-r provavelmente está correto. Não entendo a matemática da convolução subjacente + transformar. "Deconvolução" era uma nova palavra para mim. Ainda tem muito a aprender. Obrigado pela ajuda!
Minha solução para a tarefa de casa é fazer tudo no domínio da frequência. Eu falei com o professor. Eu estava fazendo a tarefa mais difícil do que o necessário. Ela queria que adicionássemos ruído e experimentássemos o filtro inverso, o filtro Wiener e o filtro de mínimos quadrados restritos. O objetivo do exercício era ver como os filtros lidavam com o ruído.