ImageResize
Funkcja Mathematica obsługuje wiele metod ponownego próbkowania .
Nie znając tego obszaru, poza najbliższym sąsiadem, dwuliniowym, dwukwadratowym i bicubicznym (co wynika z nazwy), jestem zagubiony.
Czy możesz wskazać mi jakieś źródło, które wyjaśni podstawowe (matematyczne) różnice między tymi metodami, a w szczególności zwróci uwagę na różnice praktyczne (np. Pokazując przykładowe obrazy, w których wybór metody naprawdę ma znaczenie i wprowadza zauważalne różnice)?
Nie mam tła do przetwarzania sygnałów, więc wolałbym „delikatne” i zwięzłe wprowadzenie :-)
Skopiuję tutaj listę ImageResize
metod dla tych „leniwych”, aby kliknąć link:
Ponowne próbkowanie „najbliższego” najbliższego sąsiada
„Dwuliniowa” interpolacja dwuliniowa
„Dwukwadratowa” dwukwadratowa interpolacja splajnu
Dwububna interpolacja splajnu
Ponowne próbkowanie Gaussa „Gaussa”
Metoda interpolacji wielowymiarowej „Lanczos” Lanczos
Interpolacja kosinusowa „cosinus”
Interpolacja Hamminga z podniesionym cosinusem „Hamminga”
„Hann” podniósł cosinus interpolacja Hann
Uogólniony cosinus „Blackman” uogólniony na trzy terminy
Interpolacja trójkątnego okna „Bartlett”
„Connes” poprawił interpolację Welcha
Kwadratyczna interpolacja „Welch” Welch
Kawałkowa interpolacja sześcienna „Parzen”
Zmodyfikowana interpolacja Bessela „zerowego”
źródło
Odpowiedzi:
Biorąc pod uwagę obraz z liczbami całkowitymi , interpolację tego obrazu w dowolnym dowolnym punkcie można zapisać jakoja( m , n ) m , n m′, n′
Wynik jest nadal jedynie przybliżeniem do prawdziwego podstawowego obrazu ciągłego a wszystko, co robią różne funkcje interpolacji, to zminimalizowanie błędu aproksymacji przy różnych ograniczeniach i celach.ja~ ja( x , y)
W przetwarzaniu sygnału chciałbyś, aby funkcja interpolująca była idealnym filtrem dolnoprzepustowym. Jednak jego odpowiedź częstotliwościowa wymaga nieskończonego wsparcia i jest użyteczna tylko dla sygnałów o ograniczonym paśmie. Większość obrazów nie jest ograniczona pasmem, a przy przetwarzaniu obrazów należy wziąć pod uwagę inne czynniki (takie jak to, jak oko interpretuje obrazy. To, co jest matematycznie optymalne, może nie być atrakcyjne wizualnie). Wybór funkcji interpolacji, podobnie jak funkcji okna , zależy w dużym stopniu od konkretnego konkretnego problemu. Nie słyszałem o Connesie, Welchu i Parzenu (być może są one specyficzne dla domeny), ale pozostałe powinny być 2-D odpowiednikami funkcji matematycznych dla okna 1-D podanego w linku do Wikipedii powyżej.fa( m , n )
Podobnie jak w przypadku funkcji okna dla sygnałów czasowych, łatwo jest zrozumieć, co robi jądro interpolujące obraz, patrząc na jego odpowiedź częstotliwościową. Z mojej odpowiedzi na temat funkcji okna :
Dotyczy to w zasadzie jąder interpolacyjnych. Wybór jest w zasadzie kompromisem między filtrowaniem częstotliwości (tłumienie linii bocznych), lokalizacją przestrzenną (szerokość płata głównego) i redukowaniem innych efektów, takich jak dzwonienie (efekt Gibbs), aliasing, rozmycie itp. Na przykład jądro z oscylacjami takimi ponieważ jądro sinc i jądro Lanczos4 wprowadzą na obrazie „dzwonienie” , podczas gdy ponowne próbkowanie Gaussa nie wprowadzi dzwonienia.
Oto uproszczony przykład w Mathematica, który pozwala zobaczyć efekty różnych funkcji interpolacji:
Tutajja( x , y) ja( m , n ) ja( m , n ) ja~( m′, n′)
true
reprezentuje obraz, który uważam za dyskretny odpowiednik „dokładnego” obrazu , i reprezentuje obraz w mniejszej skali (nie wiemy jak to zrobić Otrzymano). Będziemy interpolować przez 4x, aby dać który ma taki sam rozmiar jak oryginał. Poniżej pokazuję wyniki tej interpolacji i porównanie z prawdziwym obrazem:small
Możesz przekonać się, że różne funkcje interpolacji mają różne efekty. Najbliższe i kilka innych ma bardzo zgrubne cechy i zasadniczo można zobaczyć postrzępione linie (patrz obraz w pełnym rozmiarze, a nie wyświetlanie siatki). Bicubic, biquadratic i Parzen przezwyciężyły to, ale wprowadziły wiele rozmycia. Ze wszystkich jąder Lanczos wydaje się (wizualnie) najbardziej atrakcyjny i najlepiej sprawdza się w całej masie.
Spróbuję rozwinąć tę odpowiedź i podać bardziej intuicyjne przykłady pokazujące różnice, kiedy będę miał czas. Możesz przeczytać ten dość łatwy i pouczający artykuł, który znalazłem w Internecie (ostrzeżenie PDF).
źródło