The Convolution Theorem in 2D

10 visualizzazioni (ultimi 30 giorni)
Paz INBAR
Paz INBAR il 16 Mag 2021
Hello,
I have two images A and B with different size.
I want to show that:
fft2(conv2(A,B))
is equal to
fft2(A).*fft2(B)
but I get different outputs.
what is the problem?
Thanks.

Risposte (3)

Matt J
Matt J il 17 Mag 2021
Modificato: Matt J il 17 Mag 2021
The problem is that you need to zero-pad,
A=rand(10); B=rand(10);
szA=size(A);
szB=size(B);
szFull=szA+szB-1;
result1 = fftn(A,szFull).*fftn(B,szFull);
result2= fftn(conv2(A,B,'full'));
difference=norm(result1-result2,'inf')
difference = 1.0735e-12

Jonas
Jonas il 17 Mag 2021
Modificato: Jonas il 17 Mag 2021
i suggest you have a look onto file exchange, there is an example called 2d convolution theorem
https://de.mathworks.com/matlabcentral/fileexchange/60897-2d-convolution-theorem
  1 Commento
Paz INBAR
Paz INBAR il 17 Mag 2021
Thank you for your answer.
I ran this file but I got different images in R ( I*M ) and in R ( ifft(F X W) ) , according to names of the images in this file.
(which are the both sides of the convolution theoren).

Accedi per commentare.


Sulaymon Eshkabilov
Sulaymon Eshkabilov il 19 Mag 2021
Note that the sizes of A and B must match. In your inserted image array, sizes of A and B must have differed.

Categorie

Scopri di più su Images in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by