H.264 czy MJPEG?

Odpowiedź na pytanie zawarte w tytule artykułu tylko pozornie jest oczywista, bowiem głębsze zapoznanie się z całością zagadnienia związanego z kompresją obrazu pozwoli dostrzec pewne specyficzne niuanse charakterystyczne dla cyfrowych systemów monitoringu CCTV IP. Pierwszym krokiem jest choćby pobieżne zapoznanie się z metodami kompresji obrazu wykorzystywanymi przez oba wspomniane algorytmy, a następnie dokonanie analizy na podstawie roboczych parametrów planowanego przez siebie systemu monitoringu. Nie będziemy tutaj wgłębiać się w szczegóły techniczne, bowiem z pewnością potencjalnych użytkowników lub instalatorów systemów monitorujących będą bardziej interesować zagadnienia praktyczne – którymi więc zajmiemy się w pierwszej kolejności, ograniczając się jedynie do ogólnego scharakteryzowania metod kompresji obrazu stosowanych w algorytmach MJPEG oraz H.264.

Algorytm MJPEG pracuje na zasadzie kompresji każdej klatki obrazu z osobna. Ta cecha powoduje niższy stopień kompresji danych niż dla sporej liczby konkurencyjnych algorytmów oraz daje w efekcie nieco niższą jakość wynikowego obrazu. Zasadniczą natomiast zaletą takiej metody kompresji jest przewidywalny rozmiar każdej z klatek i co się z tym wiąże, rozmiar strumienia danych skompresowanego sygnału wideo.

Algorytm H.264 z kolei opiera się na analizie całego strumienia wideo i wychwytywania różnic pomiędzy poszczególnymi klatkami. Teoretycznie sposób ten daje znaczącą przewagę nad konkurencyjnymi algorytmami w postaci dobrej jakości i wysokiego stopnia kompresji danych. W praktyce jednak mogą pojawić się sytuacje, w których kompresja międzyklatkowa okaże się mniej wydajna od kompresji poklatkowej. W niniejszym artykule przedstawimy więc większość typowych scenariuszy, w których lepiej sprawdzi się kompresja metodą MJPEG:

  • Stabilność kamery – kamera narażona na drgania, wywołane wibracjami stelaża mocującego, wiatrem, uderzeniami kropel deszczu, czy pochodzącymi z innych źródeł, będzie generować obraz, którego poszczególne klatki będą wyraźnie różnić się od siebie. Kolejne obrazy będą inaczej wykadrowanie (nawet minimalna odchyłka ma istotne znaczenie), mogą być rozmazane wskutek poruszenia samej kamery lub elektronika urządzenia może nie nadążyć z ustawieniem prawidłowej głębi ostrości. Przy takich czynnikach zewnętrznych i takim typie rejestrowanego obrazu bardzo prawdopodobnym jest uzyskanie sygnału wideo skompresowanego algorytmem H.264 o rozmiarze przekraczającym analogiczny sygnał zakodowany metodą MJPEG. Powodem będzie wspomniana uprzednio metoda kodowania samego obrazu – przy kompresji MJPEG każda klatka będzie miała mniej więcej znany rozmiar, niezależnie od ujęcia, jakie się na niej znajdzie, natomiast obraz skompresowany algorytmem H.264 będzie polegał głównie na różnicach między kolejnymi klatkami – które to różnice będą w tej sytuacji bardzo znaczące.

Podsumowując rozważania – jeśli kamera umiejscowiona jest na niestabilnym z różnych powodów uchwycie, należy rozważyć zastosowanie kompresji algorytmem MJPEG, a przynajmniej przeprowadzić testy porównawcze dwóch lub więcej metod kompresji.

  • Ruch w kadrze – punkt ten w zasadzie jest zbliżony do poprzedniego, jednak tutaj rozpatrujemy sytuację, gdy kamera jest stabilna, natomiast obraz przez nią rejestrowany ulega wyraźnym zmianom na przestrzeni kolejnych klatek. Typowym scenariuszem jest tutaj obecność w kadrze poruszającego się na wietrze drzewa, filmowanie ruchu ulicznego wraz z przechodzącymi pieszymi, korytarze szkolne, stadiony sportowe, duże sklepy itp.

Mocno zmieniające się poszczególne klatki stanowią spore wyzwanie dla algorytmu H.264 i w tej sytuacji należy również rozważyć opłacalność zastosowania teoretycznie mniej wydajnej kompresji MJPEG.

  • Szybkość poruszania się obiektów w kadrze – jest to kolejny parametr, który może mieć istotne znaczenie na stopień kompresji wynikowego sygnału wideo. Typowym scenariuszem dla tego zagadnienia jest monitoring ruchliwej ulicy lub autostrady. Pomiędzy pojedynczymi klatkami zmiana położenia samochodów będzie na tyle duża, że może stanowić element wpływający na zmniejszenie stopnia kompresji algorytmu H.264.
  • Zmienne warunki oświetleniowe – jest to bardzo często lekceważony parametr, który jednak może mieć kluczowe znaczenie przy określaniu wydajności poszczególnych metod kompresji. Wystarczy bowiem przez chwilę się zastanowić – rejestrowanie obrazu przy ciągle zmieniających się warunkach oświetlenia (hala fabryczna z urządzeniami spawalniczymi lub obrabiarkami, ulica miejska, korytarz oświetlony jarzeniówkami, które często mają tendencję do migotania itp.) daje w efekcie ujęcia, które mogą się znacznie różnić pomiędzy poszczególnymi klatkami, w wyniku czego stopień kompresji takiego sygnału algorytmem H.264 może być bardzo niski.

Podsumowując powyższe rozważania należy wyraźnie podkreślić, że algorytm H.264 jest na dzień dzisiejszy zdecydowanie najlepszym i najwydajniejszym sposobem kompresji sygnału wideo, jednak metoda jego działania ma pewne słabe punkty. Z tego też powodu algorytm ten nie sprawdzi się w każdej możliwej sytuacji, czego należy być świadomym, aby uniknąć ewentualnych rozczarowań lub znacznie niższej od szacowanej wydajności całego cyfrowego systemu monitoringu CCTV IP.

Ten wpis został opublikowany w kategorii Ogólne. Dodaj zakładkę do bezpośredniego odnośnika.

Jedna odpowiedź na „H.264 czy MJPEG?

  1. Robert pisze:

    Witam

    Ciekawy artykuł dla osób rozpoczynających zabawę z kamerami 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *