Jakie są praktycznie istotne różnice między różnymi metodami próbkowania obrazu?

22

ImageResizeFunkcja 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ę ImageResizemetod 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”

Szabolcs
źródło
1
Pytanie wydaje mi się zbyt ogólne. Dobrym pomysłem byłoby podzielenie go na określone metody i zadawanie konkretnych pytań dotyczących metod, z którymi masz problemy.
mirror2image 25.11.11
Nieco styczna do Twojego pytania, można znaleźć ten obrazek porównania upsampling interesujący: general-cathexis.com/interpolation/index.html
Mr.Wizard
Chciałbym zwrócić uwagę, że wszystkie metody, które napisałeś, są niezmiennikiem przestrzeni. Myślę, że bardziej nowoczesne metody upsamplingu to Edge Aware, podobnie jak Space Variant.
Royi,
Oto przedostatnia transformacja. Nazywa się to transformacją PB i przekształca obraz poprzez dwubiegunowe przewidywanie wartości zgodnie z prawdopodobieństwem tego, co ma się wydarzyć po treningu na wielu innych obrazach. Oto jak wygląda [wynik] [1]. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Odpowiedzi:

12

Biorąc pod uwagę obraz z liczbami całkowitymi , interpolację tego obrazu w dowolnym dowolnym punkcie można zapisać jakoja(m,n)m,nm,n

ja~(m,n)=m=m-w+1m+w n=n-w+1n+wja(m,n) fa(m-m,n-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 :

Dwa podstawowe czynniki opisujące funkcję okna to:

  1. Szerokość głównego płata (tj. Przy jakim przedziale częstotliwości jest moc połową mocy maksymalnej odpowiedzi)
  2. Tłumienie płatów bocznych (tj. Jak daleko w dół znajdują się płaty boczne od płata głównego). To mówi o wycieku widmowym w oknie.

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:

true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic", 
   "Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman", 
   "Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];

Tutaj truereprezentuje 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:ja(x,y)smallja(m,n)ja(m,n)ja~(m,n)

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

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).

Lorem Ipsum
źródło
Czy to notacja infix, którą widzę!?! : ->
Mr.Wizard
@ Mr.Wizard Powiedziałem, że poddam się uczciwej próbie :)
Lorem Ipsum