Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fftw problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.02.2006, 11:41 Uhr
~lordy
Gast


Hi,

ein problem bei der verwendung der fftw library für fouriertransformationen.
ich habe ein bild mit der größe nx*ny*nz im real space und einen filter nx*ny*nz im fourierspace. wenn ich nun mein bild in den fourierspace transformiere (funktion rfftwnd_one_real_to_complex) dann ändert sich die dimension des bildes laut fftw doku auf nx*ny*(nz/2+1) (auf grund von redudanzen im fourier space). nun möchte ich aber das bild mit dem filter (einer wedge) multiplizieren, was aber aufgrund des größenunterschiedes nicht möglich ist

beispiel:
image in realspace 32*32*32 with fouriertransform 32*32*17
wedge filter im fourierspace erzeugt: 32*32*32

in matlab ergibt sich dieses größenänderung nicht und mit folgendem aufruf funktioniert das ganze problemlos (funktion wedge zeugt einen filter mit der größe des original images und z.b 30 grad)
[matlab_code]
wedgedImage = real(ifourier(fourier(image).*fftshift(wedge(size( image), 30)));
[/matlab_code]

wie bekomme ich dies nun unter C mit der fftw zum laufen?
lordy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.02.2006, 12:33 Uhr
ao

(Operator)



Zitat von ~lordy:

Code:
wedgedImage = real(ifourier(fourier(image).*fftshift(wedge(size( image), 30)));



Da fehlt irgendwo eine schließende Klammer. Korrigier mal den Ausdruck, damit man sieht, was du wirklich rechnen willst.

ao

Dieser Post wurde am 23.02.2006 um 12:34 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.02.2006, 14:04 Uhr
~lordy
Gast



Zitat von ao:
[quote ~lordy]
Code:
wedgedImage = real(ifourier(fourier(image).*fftshift(wedge(size( image), 30)));



Da fehlt irgendwo eine schließende Klammer. Korrigier mal den Ausdruck, damit man sieht, was du wirklich rechnen willst.

ao[/quote]

ja ok sorry hinten fehlt eine klammer:

Code:
wedgedImage  = real(ifourier(fourier(image).*fftshift(wedge(size( image), 30))));

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.02.2006, 16:18 Uhr
ao

(Operator)



Zitat von ~lordy:
in matlab ergibt sich dieses größenänderung nicht

Das heißt, das Ergebnis von fourier(image) ist genauso groß wie image? Dann würde ich mal vermuten, der Algorithmus in fourier ist ein anderer als in rfftwnd_one_real_to_complex. Vielleicht gibts ja noch andere Möglichkeiten, und du findest noch einen passenden Algorithmus. Ist da vielleicht noch irgendwas mit komplex- oder reellwertigen Einstellungen möglich?

Vielleicht liest ja auch jemand mit, bei dem Nachrichtentechnik nicht so lange her ist wie bei mir ...

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.02.2006, 18:08 Uhr
~lordy
Gast



Zitat von ao:

Das heißt, das Ergebnis von fourier(image) ist genauso groß wie image? Dann würde ich mal vermuten, der Algorithmus in fourier ist ein anderer als in rfftwnd_one_real_to_complex.



genau das war das problem. habs mittlerweile gelöst, aber auf jeden fall trotzdem danke für dein bemühen.
falls es jemanden intessiert: um zu optimieren schneidet die fftw lib daten weg die redundant sind, was einem schnitt bei nx/2+1 entspricht aber eine umsortierung der daten zuvor um z-y-x erfordert. da ich also "zu viel" daten habe, ist die lösung den filter zuerst zu rotieren, dann umzusortieren und danach nach x zu bisectieren. mit diesem ergebnis lässt sich die konvulation dann durchführen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: