Próbuję ocenić jakość kilku metod interpolacji obrazu dla aplikacji, która wymaga generowania obrazów z przesunięciem subpikseli. Pomyślałem, że mogę porównać wyniki przesunięcia subpiksela za pomocą wszystkich tych wariantów interpolacji z jakimś idealnie przesuniętym obrazem, ale prawdopodobnie nie jest możliwe uzyskanie go (jaka byłaby wtedy potrzeba interpolacji?).
Myślałem o zastosowaniu przesunięcia DFT + w dziedzinie częstotliwości i nie jestem pewien, jak to naprawdę działa w porównaniu do jawnej interpolacji obrazu (za pomocą dwuliniowej, dwububowej itp.). Jestem pewien, że nie może wygenerować idealnie przesuniętego obrazu , ale nie mogę położyć na tym palca. Czy przesuwanie podpikseli z DFT jest równoważne stosowaniu interpolacji, a jeśli tak, to który? Jaki jest błąd wartości pikseli w obrazach uzyskanych tą metodą? Dzięki!
EDYCJA: Po przemyśleniu sprawy doszedłem do wniosku, że FFT jest przybliżeniem (a tym bardziej DFT) pierwotnej funkcji pod względem harmonicznych (funkcji sinusoidalnych), że sprowadzałoby się to do pewnego rodzaju interpolacji trygonometrycznej. Pamiętam formułę „interpolacji szeregów Fouriera” dla danych dyskretnych, która była interpolacją trygonometryczną, ale nie jestem pewien, czy jest ona połączona.
źródło
Odpowiedzi:
DFT / FFT, plus dodane wypełnienie zerami w dziedzinie częstotliwości, a następnie dłuższy IDFT / IFFT, zwraca punkty interpolowane. Punkty te będą interpolowane przy użyciu okresowego jądra Sinc, które jest idealną interpolacją dla oryginalnych danych, które są ściśle ograniczone do pasma poniżej połowy oryginalnej częstotliwości próbkowania. Dane będą jednak traktowane tak, jakby były owinięte kołowo, co może powodować dziwne wyniki na krawędziach niektórych zdjęć. Przed interpolacją możesz więc wypełnić krawędzie oryginalnego źródła ładnym wypełnieniem lub kolorem.
Jeśli próbkujesz 2-krotnie (zero-pad FFT, aby podwoić długość przed IFFT), możesz wykonać przesunięcie o pół piksela za pomocą interpolowanych punktów. 3X dla trzeciego przesunięcia pikseli itp. W celu przesunięcia możesz wyrzucić oryginalne punkty plus wszelkie nadwyżki interpolowanych punktów, aby uzyskać pożądany rozmiar.
źródło
Istnieje kilka kluczowych informacji potrzebnych do zrozumienia, w jaki sposób DFT umożliwia przesunięcie obrazu.
Po pierwsze, teoria Fouriera: Prawdopodobnie łatwiej jest najpierw spojrzeć na przypadek ciągły (tj. Analogowy). Wyobraź sobie, że masz jakąś funkcję, nazwij to g (t). Dla uproszczenia załóżmy, że g (t) jest analogowym nagraniem audio, więc jest to jednowymiarowa funkcja, która jest ciągła i reprezentuje chwilowe ciśnienie w funkcji czasu.
Teraz g (t) to jeden ze sposobów reprezentowania naszego nagrania audio. Kolejnym jest G (f). G (f) jest transformatą Fouriera g (t). Zatem G (f) == FT (g (t)). G (f) ma wszystkie te same informacje co g (t), ale reprezentuje tę informację w dziedzinie częstotliwości zamiast dziedziny czasu. Jest kilka drobiazgowych szczegółów na temat Transformacji Fouriera, o których nie wspomnę.
Możesz pomyśleć o G (f) jako o „rozkładzie częstotliwości” zawartym w g (t). Tak więc, jeśli g (t) jest falą sinusoidalną (tj. Czystym tonem), to G (f) będzie wszędzie zerowe, z wyjątkiem częstotliwości tego tonu. Prawdopodobnie warto wspomnieć, że G (f) jest ogólnie funkcją złożoną - to znaczy, że zwraca liczby zespolone, o których można myśleć, że mają rzeczywisty i wymyślony składnik lub wielkość i fazę.
Jedna mała dygresja tutaj: Ponieważ g (t) jest ciągłe (zarówno w dziedzinie, jak i zakresie), G (f) jest również ciągłe. Jak więc G (f) może być zerowe wszędzie oprócz częstotliwości tonowej? Cóż, FT (sin (wt)) = . Gdzie to funkcja delta Diraca .δδ(w) δ
Ok, więc teraz mamy ciągłe FT pod pasem.
Oto drugi wgląd: Dyskretna transformata Fouriera dotyczy transformaty Fouriera, podobnie jak próbkowany sygnał jest analogiczny. W tym przypadku „dyskretny” odnosi się do kwantyzacji dziedziny funkcji (czas lub częstotliwość), a nie jej zakresu. (Próbkowany sygnał cyfrowy otrzymywany z karty dźwiękowej jest kwantyzowany zarówno w dziedzinie, jak i zakresie).
Cyfrowy strumień bajtów otrzymany z karty dźwiękowej zawiera „próbki” oryginalnego ciągłego (analogowego) sygnału z mikrofonu. Jeśli weźmiemy DFT naszego próbkowanego g (t), nadal otrzymujemy G (f). Pamiętaj, że G (f) to po prostu inny sposób przedstawienia informacji zawartych w g (t). Jeśli zastosowaliśmy się do teorii Nyquista , próbkowany sygnał g (t) zawiera całą „inteligencję” pierwotnego sygnału ciągłego, więc nasza dyskretna G (f) musi zawierać wszystkie informacje z naszego oryginalnego sygnału ciągłego. W nawiasach G (f) jest nadal funkcją złożoną.
To tutaj pojawia się magia przesunięcia subpikseli, ale w tym przypadku napiszę o przesunięciu sygnału audio w czasie o mniej niż próbkę, ponieważ jest to ta sama rzecz.
Oznacza to, że możemy przesunąć nagranie audio w czasie (o dowolną kwotę, w tym ułamek czasu próbkowania), po prostu modyfikując fazę G (t). W rzeczywistości to stwierdzenie jest może nieco zbyt swobodne. W przypadku niekwantowanego, próbkowanego sygnału fazę można dowolnie dostosować (jest to część powodu, dla którego wcześniej rozróżniałem kwantyzację domeny i zakresu). Jednak w przypadku kwantowanego próbkowanego sygnału (na przykład naszego bajtowego strumienia audio) rozmiar kroku kwantyzacji (tj. Liczba bitów) określa rozdzielczość, z jaką możemy regulować fazę. Kiedy odwrócimy transformatę Fouriera G (f) (lub DIFT, dla tego próbkowanego sygnału), nowy zestaw próbek g '(t) = DIFT (G (F)) zostanie przesunięty w czasie o wybraną wartość.
Zastosowanie tego do pikseli oznacza po prostu użycie 2-wymiarowej FT zamiast 1-wymiarowej FT omówionej tutaj.
źródło