Mam obraz, który chcę przekształcić do domeny częstotliwości za pomocą FFT, wydaje się, że brakuje w tym bibliotek dla Javy, ale znalazłem dwa. Jednym z nich jest JTransforms, a drugi jest mniej znany i nie ma nazwy.JTransforms FFT na obrazku
Z mniej znanych jednej 2D może mieć tylko długość dolinach potęgi dwójki, ale miał prosty w użyciu metod jak FastFourierTransform.fastFT(real, imaginary, true);
z prawdziwym bycie tablica 2D podwaja pełnymi każdych wartości pikseli i część urojona jest 2D tablica o takim samym rozmiarze pełnym zer. Wartość logiczna zależy od transformacji do przodu lub do tyłu. To miało dla mnie sens i zadziałało, z wyjątkiem mocy dwóch wymagań, które zrujnowały jakąkolwiek transformację, którą zrobiłem (początkowo dodałem czarną przestrzeń wokół obrazu, aby dopasować ją do najbliższej potęgi dwóch), z czym walczę, pracuję nad tym, jak używać równoważnych metod dla JTransforms i doceniłby wszelkie wskazówki w tym zakresie. Powiem, co robię obecnie.
Wierzę, że odpowiednią klasą byłaby DoubleFFT_2D
, jej konstruktor pobiera liczbę wierszy i kolumn, które zakładam, że będą szerokości i wysokości mojego obrazu. Ponieważ mój obraz nie ma części urojonych, myślę, że mogę użyć doubleFFT.realForwardFull(real);
, który traktuje części wyobrażone jako zero i przekazuje rzeczywistą tablicę 2D pełną pikseli. Niestety to w ogóle nie działa. JavaDoc mówi: the input array must be of size rows*2*columns, with only the first rows*columns elements filled with real data
. Nie widzę jednak, jak to jest związane z moim wizerunkiem i co powinienem zrobić, aby spełnić ten wymóg.
Przepraszam za długie i złe wyjaśnienie, jeśli potrzebne są dodatkowe informacje, chętnie go przedstawię.
JTransforms Biblioteka i Docs można znaleźć tutaj: https://sites.google.com/site/piotrwendykier/software/jtransforms
Faktycznie, wydaje się, że (nowsze) docs są obecnie online w github : http://wendykierp.github.io/JTransforms/apidocs/ –