Który algorytm zmiany rozmiaru wybierać filmy?

21

Używam VirtualDub do kodowania z tymi ustawieniami . algorytmy zmiany rozmiaru

Nagrywam jednak swoje rzeczy w rozdzielczości 1920 x 1080 i zmieniam rozmiar na 1280 x 720. Teraz pytanie: jaki algorytm powinienem wybrać, podejmując decyzję o zrównoważonej jakości kontra o rozmiarze pliku?

Zawsze chodziłem z Lanczosem, ponieważ to właśnie zostało wstępnie skonfigurowane. Te opisy w ogóle mi nie pomagają w moim pytaniu.

Grumpy ol 'Bear
źródło

Odpowiedzi:

25

TL; DR

Podczas próbkowania: użyj filtrowania Lanczos lub Spline.

Podczas próbkowania: użyj filtrowania Bicubic lub Lanczos.

Są one oparte na materiałach, które czytałem przez lata i na podstawie tego, co widziałem w branży. Zalecenia mogą się różnić w zależności od typu treści i obszaru zastosowania.

Dlaczego to ma znaczenie?

Można argumentować, że filtry zmiany rozmiaru nie mają aż tak dużego znaczenia, gdy zmniejszamy skalę wideo. Co ważniejsze, mają one wpływ na jakość podczas skalowania, ponieważ musisz generować dane tam, gdzie ich nie ma.

Wszystkie te filtry mają niewielki wpływ na rozmiar pliku. Dlatego nie powinieneś martwić się o ogromne różnice.

Faktem jest, jak zawsze podczas kodowania wideo, że wynik w dużej mierze zależy od materiału źródłowego. Nie zawsze możesz przewidzieć wynik, ale po prostu sprawdź, co będzie dla Ciebie najlepsze.

Różne algorytmy

Jako przykład, oto interpolacja dwuububowa vs. dwuliniowa :

     wprowadź opis zdjęcia tutaj

Widzisz, że interpolacja bicubic powoduje gładsze krawędzie? To bardzo ogólne stwierdzenie ... ale można znaleźć przegląd algorytmów skalowania obrazu tutaj .

  • Interpolacja dwuliniowa wykorzystuje środowisko piksela 2x2, a następnie przyjmuje średnią tych pikseli do interpolacji nowej wartości. To nie jest najlepszy algorytm, ale raczej szybki.

  • Interpolacja dwuububowa wykorzystuje środowisko 4x4 piksela, ważąc najwyższe piksele wewnętrzne, a następnie przyjmuje średnią do interpolacji nowej wartości. Według mnie jest najbardziej popularny.

  • Uśrednianie obszaru wykorzystuje odwzorowanie pikseli źródłowych i docelowych, uśredniając piksele źródłowe w odniesieniu do ułamka pokrytych pikseli docelowych. Zgodnie z tą stroną powinno to przynieść lepsze wyniki przy próbkowaniu w dół.

  • Interpolacja splajnu i cynku korzysta z wielomianów wyższego rzędu i dlatego jest trudniejsza do obliczenia niż interpolacja dwuubnowa. Nie sądzę, aby ogólny wzrost czasu przetwarzania był wart ich wykorzystania.

  • Ponowne próbkowanie Lanczosa obejmuje również filtr cynkowy. Jest droższy pod względem obliczeniowym, ale zwykle opisywany jako bardzo wysokiej jakości i może być stosowany do próbkowania w górę i w dół.

  • Filtry hqx oraz 2xSaI są używane do skalowania pikseli (np. emulatorów gier). Nie sądzę, żeby istniał dobry powód, aby używać ich w filmie.

Porównanie Jeffa Atwooda

Okazuje się, że Jeff Atwood dokonał porównania algorytmów interpolacji obrazu . Jego podstawową zasadą było stosowanie interpolacji dwuububowej do próbkowania w dół i interpolacji dwuliniowej podczas próbkowania w górę. To powiedziawszy, nie jest to zwykle zalecane do kodowania wideo - a niektórzy komentatorzy mają wątpliwości co do wiedzy Atwood w tej dziedzinie.

Wspomniał jednak również, że…

Redukcja obrazów jest całkowicie bezpieczną i racjonalną operacją. Po prostu zmniejszasz precyzję i rozdzielczość, odrzucając informacje. Spraw, aby obraz był tak mały, jak chcesz, i masz całkowitą wierność - w granicach dozwolonej liczby pikseli. Otrzymasz dobre wyniki bez względu na wybrany algorytm. (Cóż, chyba że wybierzesz algorytmy NAVE Pixel Resize lub Nearest Neighbor).

Inne przykłady

Oto kilka innych przykładów algorytmów interpolacji obrazu , w tym te, o których wspomniałem powyżej.

Znalazłem także dokumenty (reguły scen) ze sceny kodowania wideo, które wyraźnie zakazują filtrowania bicubic dla próbkowania w dół. Zamiast tego popierają ponowne próbkowanie Lanczosa, Spline lub „Blackmana”.

slhck
źródło
Zawsze używałem „precyzyjnego bicubic A = 100”. Podczas ponownej instalacji zaktualizowanego programu Lanczos był domyślny, wielu osobom się podobało. Tak długo zostawiłem. W końcu zacząłem oglądać później zakodowane rzeczy Lanczosa i pomyślałem, że to nie jest tak dobre, kolejny zestaw kodów, zmieniłem z powrotem na bicubic. Kompresowałem też kompresję, myślę, że Lanczos mógł wydawać się lepszy, gdybym tak bardzo nie próbował zmniejszyć całkowitego rozmiaru danych.
Psycogeek
2
FWIW Nie uważałbym Jeffa Atwooda za eksperta w przetwarzaniu obrazów, aw tym artykule nie bada on niczego poza dwuliniowym, najbliższym sąsiadem lub (jednym szczególnym wariantem) bicubic. Większość ludzi zgodziłaby się z jego zaleceniem używania dwuliniowego, gdy powiększenie jest złe.
thomasrutter
1
@thomasrutter Thanks. Zgadzam się z tobą - kiedy to pisałem, prawdopodobnie nie wiedziałem tyle o przetwarzaniu obrazu, jak teraz. Myślę, że usunę odniesienie do tego artykułu i znajdę inne źródło.
slhck,
9

Znalazłem dobry obraz, który dokumentuje niektóre z nich.

wprowadź opis zdjęcia tutaj

Pełna wersja tutaj .

Ogólnie rzecz biorąc, chcesz uzyskać łagodny efekt wyostrzania podczas przekształcania większego obrazu w mniejszy oraz łagodny efekt rozmycia podczas przekształcania mniejszego obrazu w większy. Domyślny zestaw filtrów MadVR to Lanczos do skalowania w górę i bicubic do skalowania w dół.

Jeff Atwood
źródło
2

Konwertujesz oryginalne piksele 3x3 na docelowe piksele 2x2.

Jeśli chcesz zachować ostre linie, wybierz Lanczos lub coś, co wykorzystuje więcej otaczających pikseli, aby nie zamazywać ostrych linii (np. Futro lub odbicia)

W przeciwnym razie wystarczyłaby średnia powierzchni itp. (Także dwuliniowa / trójliniowa).

ZaB
źródło