Na SecurityInfoWatch pojawiła się właśnie trzecia część artykułu pod tytułem Key considerations when selecting a video compression algorithm, czyli w wolnym tłumaczeniu Główne aspekty, na jakie trzeba zwrócić uwagę podczas wyboru algorytmu kompresji (trzy linki na na samym dole). Cykl rozpoczął się już w październiku, teraz dobiegł końca. Moim zdaniem warto się z nim zapoznać, gdyż pokazuje przeróżne rozważania, które powinny towarzyszyć planowaniu i projektowaniu systemu telewizji przemysłowej. Pokazuje jednocześnie, że do wielu zastosowań H.264 wcale nie będzie tak doskonałym wyborem, jak próbują to wmówić spece od marketingu.

Publikacja została napisana przez ludzi z IQinVision (Peter DeAngelis i Paul Bodell), jednakże to – jak sami zresztą podkreślają – nie wpływa w negatywny sposób na stronę merytoryczną, gdyż całość traktuje o dość uniwersalnych sprawach. Ja postaram się wyciągnąć esencję z tego tekstu i ją Wam przedstawić, choć niektóre porady w mojej opinii są nieco zbyt daleko idące, stąd też należy cały ten tekst traktować raczej jako ogólne wytyczne, a nie stalowe ramy. Zapraszam.


Całość została podzielona na 9 punktów, które to szeregują poszczególne warte rozważenia elementy:

  1. Rozdzielczość.
  2. Ilość klatek na sekundę.
  3. Warunki pogodowe.
  4. Warunki oświetleniowe.
  5. Ruch w kadrze.
  6. Prędkość poruszania się obiektów.
  7. Stabilność punktu kamerowego.
  8. Nagrywanie.
  9. Obraz na żywo.

Każdy z tych punktów może mieć ogromny wpływ na końcową konfigurację.

Rozdzielczość.

Generalna zasada mówi, że gdy najważniejszym celem nagrania jest jakość, to stosuje się MJPEG. Jeżeli zaś, z takich czy innych powodów wymogiem jest H.264, to należy ustawić mu bitrate na zmienny (VBR), nie powinno się bowiem dopuszczać do sytuacji, gdy jakość jest odgórnie cięta sztywnym parametrem (CBR). Dodatkowo sam projekt sieci w przypadku zastosowania tego tupu kompresji musi być dostosowany do ewentualnych drastycznych wzrostów zajętości pasma.

Ilość klatek na sekundę.

Zajętości pasma sieciowego oraz miejsca na dysku w przypadku kompresji MJPEG jest łatwa do oszacowania: w zasadzie wystarczy pomnożyć ilość klatek na sekundę przez średnią wielkość klatki. Wynika to oczywiście z zasady tego kodowania, czyli kompresji każdej klatki z osobna (kompresja wewnątrzklatkowa – intraframe compression). W przypadku H.264 nie ma tak słodko, bowiem ta kompresja działa na zupełnie innej zasadzie (kompresja międzyklatkowa – interframe compression). Algorytm musi interpretować zmiany między klatkami kluczowymi, a im mniejsza poklatkowość nagrania, tym większe różnice między tymi klatkami i tym większa degradacja jakości (zależna od zastosowanego profilu), szczególnie w scenach charakteryzujących się dużą zmiennością. Generalnie autorzy zalecają stosowanie tej formy kompresji przy nagraniach >15kl/s przy uwzględnieniu innych ważnych czynników. To może być jednak problem, bo na dzień dzisiejszy mało jest na rynku kamer o rozdzielczościach wyższych niż 1,3MPx zdolnych generować obraz o takiej poklatkowowści (2MPx IQeye, Arecont Vision i pewnie kilku innych, im wyżej, tym mniej tych produktów).

Warunki pogodowe.

Największy wpływ na obraz generowany przez kamerę mają deszcz, śnieg, zmienne warunki oświetleniowe i wiatr. Elektronika kamery każde z powyższych traktować będzie jako ruch i automatycznie starać się będzie możliwie wiernie odwzorować te zmiany. W przypadku kompresji MJPEG wpływ tych czynników ma znikomy wpływ na jakość, podobnie wzrost zajętości pasma nie będzie duży, jesteśmy w stanie przewidzieć zapotrzebowanie kamery. Trzeba jednak pamiętać, że H.264, gdy opadów nie będzie, wykaże się znacznie większą oszczędnością pasma jak i miejsca na dysku. Za to w czasie załamania pogody interpretacja sceny będzie równoważna z jej całkowitą zmianą i obciążenie wzrośnie drastycznie. Nadmienić należy, iż połączenie pionowego ruchu opadów oraz poziomego np. intruza stanowi dość trudne wyzwanie do kodeków i w takim przypadku przy zastosowaniu H.264 mogą pojawić się dość znaczne straty w jakości. Jeden z płynących tu wniosków jest taki, że projekt sieci komputerowej musi być dobrze przemyślany, aby ta mogła obsłużyć ruch nawet przy najgorszym scenariuszu.

Warunki oświetleniowe.

Przy stabilnych warunkach oświetleniowych H.264 radzi sobie świetnie, ograniczając użyte pasmo. Kiedy jednak warunki są zmienne (np. ze względu na chmury), sytuacja będzie zbliżona do tej z punktu poprzedniego, czyli wzrost zapotrzebowania na pasmo i przestrzeń dyskową. Przy spadku poziomu oświetlenia (zapadający zmrok) wzrośnie ilość szumu w sygnale, do tego będzie on wraz z całością sygnału wzmacniany. Takie warunki również nie służą wydajnej kompresji. Naturalnie również w przypadku MJPEG zauważalne będzie zwiększenie pasma, jednak kompresje międzyklatowe są znacznie bardziej podatne na takie zakłócenia i H.264 nie jest tu wyjątkiem. Autorzy polecają w takich sytuacjach zmniejszenie stopnia wyostrzania obrazu zastrzegając jednak, że z kolei w dzień utracimy nieco ostrości. Coś za coś.

Ruch w kadrze.

Ilość ruchu w scenie jest jednym z najważniejszych aspektów jakie należy brać pod uwagę podczas wyboru algorytmu kompresji. W przypadku H.264, im więcej rzeczy dzieje się w kadrze, tym trudniej o wydajną kompresję, na MJPEG nie wpływa to znacząco. Typowe warunki jak np. drzewo kołysane wiatrem, potrafią drastycznie wpływać na efektywność kompresji i obciążenie pasma sieciowego w przypadku kompresji międzyklatkowych. Podobnie do wspomnianych drzew interpretowany będzie np. korytarz szkolny, gdzie podczas przerwy w zasadzie nic się nie dzieje, natomiast podczas alarmu pożarowego zmienność sceny będzie bliska 100%, co dla H.264 stanowi spore wyzwanie. Naturalnie znów należy tu pamiętać o tym, aby sieć wytrzymała taki skrajny scenariusz. Autorzy artykułu polecają stosować ten rodzaj kompresji w scenach, gdzie zmienność wynosi co najwyżej 20%.

Prędkość poruszania się obiektów.

Im szybciej obiekt się porusza, tym większy dystans przebywa, a im większy dystans przebywa, tym bardziej będą się różnić kolejna klatki. A im większe różnice między klatkami, tym gorsze warunki dla H.264. Szybko poruszające się obiekty to duże wyzwanie dla kompresji międzyklatkowych, dodatkowe utrudnienie stanowić tu będą niskie poklatkowości oraz użycie niższych profili kompresji. Dla MJPEG takie warunki nie stanowią problemu. Wybór profilu kodowania w takich warunkach ma kluczowe znaczenie, poklatkowość zaś powinna być dobierana dokładnie pod dane zastosowanie.

Stabilność punktu kamerowego.

Drgająca (wiatr) czy poruszająca się (głowica obrotowa) kamera to najgorszy możliwy scenariusz dla kompresji międzyklatkowych – cała scena zmienia się bez przerwy i w każdej klatce jest inna. W takim przypadku autorzy zalecają użycie kompresji wewnątrzklatkowej, bez względu na poprzednie rozważania.

Nagrywanie.

Częstym wymaganiem użytkowym, jakie stawia się systemom CCTV jest zmiana parametrów nagrywania w chwili np. detekcji ruchu (zwiększenie poklatkowości czy zmniejszenie kompresji). Najlepiej jest dokonywać takich modyfikacji już w kamerze, gdyż może ona operować na nieskompresowanym strumieniu, w przeciwieństwie do serwera, który to cały obraz musi najpierw zdekodować (duże obciążenie, szczególnie przy większej ilości kanałów).

Warto więc sprawdzić, czy oprogramowanie do wykonania takich tych czynności korzysta z własnych algorytmów. Jeśli tak, to konieczne jest zapewnienie odpowiednio wydajnego serwera. Dodatkowo, w przypadku H.264, generalną zasadą brzmi „im więcej klatek, tym lepsza jakość”. Warto rzucić okiem na karty katalogowe kamer, gdyż wielu producentów oferuje urządzenia generujące w wyższych rozdzielczościach maksymalnie 10kl/s.

Obraz na żywo.

Wyświetlanie obrazu kodowanego H.264 jest dużo bardziej zasobożerne niż w przypadku MJPEG, stąd i tu trzeba pamiętać o odpowiednim komputerze. Ze względu na większą złożoność obliczeniową mogą się też pojawiać opóźnienia – lagi. W video nagranym nie ma to znaczenia, w obrazie na żywo – może mieć, zaś podczas używania kamer PTZ – może mieć znaczenie krytyczne.

Podsumowanie.

To w zasadzie tyle. W ostatniej części cyklu autorzy wstawili bardzo obrazową tabelkę systematyzującą wszelkie wypisane wyżej zależności. Warto rzucić okiem. Cykl zwraca uwagę, że pojecie H.264 jest bardzo rozległe, ma wiele twarzy – profili, i z pewnością nie jest lekiem na całe zło.

Na koniec każdego z artykułów zaserwowane małe podsumowanie, które tutaj przytoczę w formie zbiorczej:

  • Wybierz H.264, gdy ważniejsza jest oszczędność pasma niż jakość obrazu czy przewidywalny rozmiar archiwum i zajętość pasma.
  • Wybierz H.264, gdy zamierzasz nagrywać z poklatkowością >15kl/s oraz inne warunki wskazują na ten wybór.
  • Wybierz MJPEG, jeśli wymagasz nienagannej jakości oraz przewidywalnego obciążenia sieci oraz wielkości archiwum.
  • Gdy używasz H.264, weź pod uwagę wszelkie czynniki związane z pogodą czy oświetleniem.
  • Jeżeli w scenie zmienia się mniej niż 20% obrazu – wybierz H.264.
  • Jeśli chcesz rejestrować szybkoporuszające się obiekty, zapewnij odpowiednią poklatkowość przy H.264 albo użyj MJPEG.
  • Jeśli kamera będzie się ruszać (bo słup drga, jest to głowica obrotowa, albo urządzenie znajduje się na samochodzie) – wybierz MJPEG.
  • Wszystko zależy od wymagań i otoczenia. To instalacja wyznacza zastosowane rozwiązania, a te nie są uniwersalne.
  • Główna korzyścią ze stosowania H.264 jest ograniczenie pasma i zajętości miejsca na dysku w określonych, raczej dobrych warunkach.
  • Aby uzyskać maksymalną jakość przy H.264, autorzy zalecają używanie profilu głównego i zmiennego bitrate’u.
  • Sieć musi być zdolna do przyjęcia ruchu jak w najgorszym scenariuszu (włącznie z chwilowymi skokami), zaś serwery muszą udźwignąć wymagania stawiane im przez H.264.

Odnośniki do artykułów:
Część pierwsza
Część druga
Część trzecia

Może zainteresują Cię również poniższe wpisy: