The Convolution Theorem in 2D

10 visualizaciones (últimos 30 días)
Paz INBAR
Paz INBAR el 16 de Mayo de 2021
Respondida: Sulaymon Eshkabilov el 19 de Mayo de 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.

Respuestas (3)

Matt J
Matt J el 17 de Mayo de 2021
Editada: Matt J el 17 de Mayo de 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 el 17 de Mayo de 2021
Editada: Jonas el 17 de Mayo de 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 comentario
Paz INBAR
Paz INBAR el 17 de Mayo de 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).

Iniciar sesión para comentar.


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

Categorías

Más información sobre Images en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by