[C++] FFT na bitmapie

0

Witam.
Muszę wyświetlić wykres widma fragmentu pliku bmp (np. początkowe 1000 sampli) za pomocą szybkiej transformacji Fouriera. Czy są jakieś biblioteki do tego może? Ma ktoś jakieś sugestie? Proszę o pomoc. Pozdrawiam

0

http://www.alglib.net/

to jest proste w obsłudze, 3 linijki kodu + dorzucenie źródeł do projektu

0

BASS ma dwuwymiarowe FFT? a jeśli tak, to PO CO w bibliotece do dźwięku?

0

W alglib jest tylko jednowymiarowa fft. A jak załadować próbki do tablicy? Wiem jak odczytać informację z nagłówka. Ale gdzie są zapisane pixele i w jakiej formie?

0

BASS chyba tez ma tylko jednowymiarową

0

w alglib 1d: (using namespace alglib)
real_1d_array wejscie;
complex_1d_array wyjscie;
double tab[4] = {...};
wejscie.setcontent(4, tab);
fftr1d(wejscie,wyjscie);

wyjscie uzywasz jak zwyklej tablicy, z tym ze elementy sa strukturami typu alglib::complex ktora posiada pola double x,y;

0

Mam tablice 1000 na 3. W niej 1000 pixeli w postaci RGB. Potrzebuję wyświetlić wykres widma. Która biblioteka da radę?

0

to co to jest, jedna linia pikseli?

widmo dwuwymiarowego obrazka jest dwuwymiarowe. to nie to samo co widmo każdej z linii czy z kolumn z osobna.

co do RGB - to raczej należy bitmapę rozdzielić na trzy osobne kanały R, G i B i traktować je oddzielnie.

w przypadku 1D (czy też 3 x 1D) można teoretycznie użyć dowolnej biblioteki, tylko że biblioteki wyspecjalizowane w dźwięku będą ci to przeliczać na herce i decybele, co niekoniecznie będzie miało sens.

w przypadku 2D (albo 3 x 2D) robi się transformację kolejno liniami (czyli można użyć funkcji do jednowymiarowego FFT), a potem na takim pośrednim obrazku znowu kolejno kolumnami. można też najpierw kolumny a potem linie.

0

Ok czyli mam trzy tablice (R,G,B) 100x10. Robię najpierw na każdym wierszu transformacje a potem na każdej kolumnie. I tak z trzema tablicami. Po wszystkim mam je połączyć ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0