OPencv-nek tényleg hibás néhány függvénye? Vagy én rontok el valamit?

 ( emberk | 2010. március 23., kedd - 12:54 )

Szaisztok!
Némi nemű számolgatás és átalakítás után a következő kimenetet kapom, az mindegy hogy ez mi, a lényeg hogy van egy cvCartToPolar nevű függvény a link alatti leírás alapján működik. Az intenziás kimenettel nincs is gond, tökéletes:

A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Viszont a fáziskép az valami okból kifolyólag minden második pontban (ha jól látom mindíg ott ahol x+y páratlan) valami egzotikus értéket ad. Találkoztatok hasonló problémával? Itt a kép:

A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

A másik problémám a fourier transzformációval van. Elvileg egy homogén átlaggal kitöltött háttér esetén (a homogén háttér tuti jó) a függvényt (kis képet amiből ezek készültek) majdnem bárhol lehelyezhetek a háttérben (a nagy szürke képben) az fourier transzformációt ez semmiben nem kellene hogy befojásolja, csak fáziseltolást kellene, hogy eredményezzen (ami látványban annyit jelent hogy a fázishatárok maradnak, csak pl ahol világos most ott sötétebb lesz és viszont), de ha nem középre teszem a képet akkor teljesen értelmezhetetlen fázisképet kapok. Ránézésre hasonlít az iménti fázisképre, csak teljesen helytelen, és még pöttyösebb. Egyedül akkor kapok nem pöttyös, de teljesen hibás fázisképet, amikor a 0,0 pozicióba teszem a mintafüggvényt (kis kép), de akkor totál káosz a fázis.

Előre is köszönöm.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Egy up. De tényleg úgy tünik, hogy az opencv lesz a ludas.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Közben kommentálom magamat. A cvCartToPolar az jó, gyakorlatilag megíertam előlről a sajátomat, és pont ugyanez történik. A hiba a cvDFT-ben van. Valami abban nem kóser. Pedig a használata nem egy fenemód bonyolult dolog. Majd még folytatom, hátha valaki más is szív ezzel.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Melyik OpenCV-t használod?
Én pl a PCA-ban találtam egy hibát ami csak bizonyos esetekben jött elő, és látom hogy azért akadnak hibák benne itt-ott, és csak az SVN-ben vannak javítva egyelőre...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Még csak most vettem észre hogy erre a topicomra is érkezett válas. a 2.0.0 verzió. Szóval azt mondod próbáljak egy svn-t? Ám legyen :)

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Épp most váltanak OpenMP-ről Intel TBB-re, úgyhogy a fordítás nem biztos, hogy zökkenőmentes, de 2.1-es binárisok azt hiszem vannak fent.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Uhh pont ez is érdekel. Az egyik problémámról azt hiszem pont veled leveleztem, ami azóta meg is lett oldva, de van egy nagyon fonos másik rész is, miszerint az cvDFT-t (lényegében egy-két hatalmas kép fourier transzformációja a leg időigényesebb, ez a kritikus keresztmerszet) valahogy több szálra kellene bontani, mert így csak egy magot terhelek. Én is az OpenMP-t találtam hirtelen mint lehetőséget a megoldásra, ez ügyben tudsz valami jó dokumentációt, howto-t stb. Erre úgyis később kerül még sor.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Igen, velem.

Ahogy nézem az cvDFT nem többszálú.
Arról azért lebeszélnélek, hogy újraírd többszálúra.
Én most hirtelen ezt találtam: http://www.fftw.org/
Itt van valami parallel támogatás, (sima thread vagy OpenMP), egyébként is agyonoptimalizált (SSE), ennél jobbat nem hiszem, hogy tudnál írni...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Én is azon agyalok most, hogy hanyagolom az opencv fft-jét eléggé gáz. Az általa számoltatott fft igen csak hibás (az amplitúdóval nincs gond az stabil és jó, de a belőle származtatott fázis inkább csak amolyan analóg tv-zaja). Teljesen használhatatlan. Egyáltalán nem egyezik a valósággal. Ez az fftw tud képfázist számolni?

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Fogalmam nincs, sose használtam. Igazából az OpenCV-set sem.
Életemben egyszer láttam DFT-t, amikor beadandó feladatnak megírtam MMIX-re.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Fölraktam a legújabb 2.1.0-s opencv-t de a fáziskép ugyanolyan vacak. :( Szóval fftw3. megpróbálom. Ha tudsz valami mintát, hogy hogy lehet ezzel 2 dimenziós komplex tömb fourier transzformációját megcsinálni, azt nagyon megköszönném. Mert ezermillió dolgot találtam hogy képet mint komplexet, komplex sort, de komplex képt nem.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.