Video informacijos suspaudimas naudojant H.264

http://www.jbmm.fr/wp-content/uploads/2011/07/h.264.jpg

Ciklų apie informacijos suspaudimą finalas – įrašas apie populiariausią bei efektyviausia H.264 kodeką. Spaudžiant vaizdo informaciją sutaupoma didelis kiekis informacijos. Imant ekstremalų pavyzdį vienas nesuspaustas 1920×1080 kadras spalvą koduojant 24 bitais užima apie 6 MB. Esant 30 kadrų per sekundę viena sekundė sveria – 180 MB. Valanda 632 GB. Naudojant H.264 tą valandą galima sutalpinti į 2 GB ir mažai kas pajaustų kokybės praradimą ypač jei tas video yra kokia diskusijų laida su kalbančiomis galvomis.

Kadrų tipai

http://www.streaminglearningcenter.com/content_images/1/AdobeH264_Figure%205.gif

Kadangi video suspaudime skirtingai nuo nuotraukų yra svarbu perteklinės informacijos pašalinimas laike tad pradžioje pateikiu H.264 kardų tipus.

  • I- tai intra arba raktinis kadras,kuris yra atstatomas nepriklausomai nuo kitų kadrų.
  • P –(predictive) kadras kuris yra atstatomas iš prieš tai buvusių kadrų
  • B – (bi-predictive) kadras atstatomas iš prieš tai buvusių ir busimų kadrų.

I kadras gali būti dedamas ir kas 0,2 s ir kas 10 s. Taip pat gudrus kodekai sugeba jį dėti ne tik visad tuo pačiu dažniu, bet ir esant reikalui, kai tarkime visiškai pasikeičia scena ir I kadras netenka prasmės.

Kaip atrodo įvairių video kadrų eiliškumas. Stulpelio aukštis atitinka kadro dydį. I kadras – raudonas/rudas, I – mėlynas, B- žalias

image

Automobilio registratoriaus įrašas, I kadras eina giežtai kas 0,2 sekundės.

image

Samsung Galaxy S3 panašus vaizdas, I kadrai eina griežtai kas 1 sekundę.

image

Youtube 1080p, I kadras eina kas 2 sekundes, tačiau jis atsiranda ir pasikeitus scenai.

image

Lietuviška DVB-T, I kadras dedamas kas 1 sekundę arba pasikeitus scenai, ir čia jau atsiranda B kadrai.

image

Serialų, filmų rip’uose I kadrai išnaudojami labai efektyviai, jie dedami tik ten kur keičiasi scena. Tiesa to neįmanoma pritaikyti tiesioginėse transliacijose, nes jeigu tarp I kadrų yra 10 sekundžių, įjungus transliaciją gali tekti net 10 sekundžių nematyti nieko, kol laukiama I kadro, štai viena priežastis kodėl skaitmeniniai kanalai televizoriuje persijungia lėtai.

Kadrų numatymas

Elementariausias būdas sutaupyti informaciją yra perduoti tik vaizdo skirtumą tarp kadro.

The.Big.Bang.Theory.S06E11.720p.HDTV.X264-DIMENSION.mkv_snapshot_00.05_[2012.12.14_11.44.38]The.Big.Bang.Theory.S06E11.720p.HDTV.X264-DIMENSION.mkv_snapshot_00.05_[2012.12.14_11.44.47]

The.Big.Bang.Theory.S06E11.720p.HDTV.X264-DIMENSION.mkv_snapshot_00.05_[2012.12.14_11.44.38]11

Tačiau jei yra daug judesio, ir dar kamera juda tas skirtumas yra ne toks ir mažas.

eismas

Todėl naudojamas judesio kompensavimas.

http://www-sipl.technion.ac.il/UploadedFiles/BlockBasedMotionEstimation.jpg

Kadras suskirstomas į tarkime 16×16 pikselių dydžio blokus.  Kiekvienam blokui ieškoma artimiausio atitikmens atraminiame kadre. Radus išsaugomas judesio vektorius. Šis drauge su skirtumu(liekana) tarp einamo ir atraminio bloko perduodamas kodavimui. Žemiau pateiktas video kadras kuriame atvaizduoti blokai bei judesio vektoriai – raudonos linijos. Kaip matote blokų dydžiai nėra visi vienodi, yra ir smulkesni tikslesniam judesio sekimui.

image

Nuotraukoje taip pat galima matyti, kad automobilio judesio vektoriai yra panašūs, tad ir tai naudojantis sutaupoma informacijos vienus vektorius išreiškiant kitais.

Visas I kadras bei numatomo kadro liekana toliau yra apdorojami panašiai kaip ir JPEG formate, atliekama DCT, kvantavimas, tik atliekant suspaudimą be kokybės praradimo naudojamas CABAC kodavimas. Taip pat naudojamas yra spalvų komponenčių raiškos sumažinimas.

H.264 standartas aprašo 21 profilį, kuris skiriasi metodais naudojamais video apdorojimui.

Pora klausimų apie H.264 kurie galbūt kils.

Kuo skiriasi H.264/AVC nuo x264?

H.264/AVC yra standartas aprašantis video suspaudimą, tuo tarpu x264 yra nemokamas kodekas suspaudimui atlikti.

Ką reiškia tas žymėjimas i arba p prie video raiškos, pvz.: 1080i, 720p?

  • i – interlaced pakaitinis vaizdo skenavimas
  • p – progressive progresinis skenavimas

Pakaitinis skenavimas atėjo iš analoginės tv, jo privalumas informacijos kiekio taupymas. Kadangi vaizdas perduodamas puskadriais – vietoje pilno kadro perduodama tik pusė horizontalių eilučių.

http://farm4.static.flickr.com/3182/3005707516_78dabc91a1_o.gif

Toks skenavimo trūkumas išlenda esant judesiui ekrane, kadangi lyginės ir nelyginės eilutės atitinka skirtingus laiko momentus.

http://4.bp.blogspot.com/_HqyeNjtyl94/TLrgTfGvLzI/AAAAAAAABGk/WAN6yHLPzjw/interlaced.jpg

Tenka naudotis specialius filtrus (deinterlacing) norint tai paslėpti. Lietuviška DVB-T naudoja interlaced.

Progresinis skenavimas nenaudoja jokių triukų, perduodami pilni kadrai.

Vaizdo šaltiniai[1 2 3 4 5]

Programa informacijai apie H.264 parametrus įraše (trial)

css.php
Bear