Convolution theorem. Fourier transform.
1 次查看(过去 30 天)
显示 更早的评论
Hey ppl,
I have a question about convolution and Fourier transform. I have Final picture and initial picture. I know that the final picture results as convolution between the initial and something else, i.e. final picture=initial picture(*)X. All we know that F{final picture}=F{initial picture}F{X}=>F{X}=F{final picture}/F{initial picture}; then X=F{X}^(-1). Pretty easy but I got a blank picture after that manipulations. Take a look part of my code:
FFT_picture=fft2(picture); %?
FFT_hole=fft2(hole); %?
FFT_X=FFT_picture./FFT_hole;
X=ifft2(FFT_X);
what I do wrong?
I've attached two files. The first one is the initial picture and the second one is the final picture.
Thank you.
1 个评论
Matt J
2014-12-6
I've attached two files. The first one is the initial picture and the second one is the final picture.
If you attach "picture" and "hole" in a .mat file instead, it will be easier for people to repeat your test.
回答(1 个)
Matt J
2014-12-6
编辑:Matt J
2014-12-6
Your procedure won't work if FFT_hole has some pixels containing zero (or nearly zero). If that happens then your calculation of FFT_X will have a divide-by-zero situation and give NaNs and/or Infs in those pixels. Passing that through ifft2() will just yield junk.
You might want to look at deconvreg() instead.
2 个评论
Matt J
2014-12-7
You're using it wrong somehow. It's an Image Processing Toolbox function. It's specifically meant for image deconvolution. There is an example in its documentation.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!