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!