Kiel funkcias videokodeko? Parto 1: Bazoj

La dua parto: Kiel funkcias la videokodeko

Ajna rastrumo bildo povas esti reprezentita en la formo dudimensia matrico. Kiam temas pri koloroj, la ideo povas disvolviĝi rigardante bildon kiel tridimensia matrico, en kiu kromaj dimensioj estas uzataj por konservi datumojn por ĉiu el la koloroj.

Se ni konsideras la finan koloron kiel kombinaĵon de la tn. primaraj koloroj (ruĝa, verda kaj blua), en nia tridimensia matrico ni difinas tri ebenojn: la unua por ruĝa, la dua por verda kaj la lasta por blua.
Kiel funkcias videokodeko? Parto 1: Bazoj
Ni nomos ĉiun punkton en ĉi tiu matrico pikselo (bildelemento). Ĉiu pikselo enhavas informojn pri la intenseco (kutime kiel nombra valoro) de ĉiu koloro. Ekzemple, ruĝa pikselo signifas, ke ĝi enhavas 0 verdan, 0 bluan kaj maksimuman ruĝan. Rozkolora pikselo povas esti formita uzante kombinaĵon de tri koloroj. Uzante numeran gamon de 0 ĝis 255, rozkolora pikselo estas difinita kiel Ruĝa = 255, Verda = 192 и Blua = 203.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ĉi tiu artikolo estis publikigita kun la subteno de EDISON.

Ni evoluas aplikoj por videogvatado, video streaming, kaj ankaŭ ni estas fianĉigitaj videoregistrado en la kirurgia ĉambro.

Alternativaj manieroj por kodi kolorbildon

Estas multaj aliaj modeloj por reprezenti la kolorojn, kiuj konsistigas bildon. Ekzemple, vi povas uzi indeksitan paletron, kiu postulas nur unu bajton por reprezenti ĉiun pikselon, anstataŭ la tri necesaj kiam vi uzas la RGB-modelon. En tia modelo, eblas uzi 2D-matricon anstataŭ 3D-matrico por reprezenti ĉiun koloron. Ĉi tio ŝparas memoron, sed donas pli malgrandan koloran gamon.

Kiel funkcias videokodeko? Parto 1: Bazoj

RVB

Ekzemple, rigardu ĉi tiun bildon sube. La unua vizaĝo estas tute pentrita. La aliaj estas la ruĝaj, verdaj kaj bluaj ebenoj (la intensecoj de la respondaj koloroj estas montritaj en grizskalo).

Kiel funkcias videokodeko? Parto 1: Bazoj

Ni vidas, ke la ruĝaj nuancoj en la originalo estos en la samaj lokoj, kie la plej brilaj partoj de la dua vizaĝo estas observataj. Dum la kontribuo de bluo ĉefe videblas nur en la okuloj de Mario (lasta vizaĝo) kaj elementoj de lia vestaĵo. Rimarku kie ĉiuj tri koloraj ebenoj malplej kontribuas (la plej malhelaj partoj de la bildoj) - la lipharoj de Mario.

Por konservi la intensecon de ĉiu koloro, necesas certa nombro da bitoj - ĉi tiu kvanto nomiĝas iom profundo. Ni diru, ke 8 bitoj estas elspezitaj (surbaze de valoro de 0 ĝis 255) per kolorplano. Tiam ni havas kolorprofundon de 24 bitoj (8 bitoj * 3 R/G/B ebenoj).

Alia propraĵo de bildo estas rezolucio, kiu estas la nombro da pikseloj en unu dimensio. Ofte indikita kiel larĝo × alto, kiel en la 4 per 4 ekzemplobildo malsupre.
Kiel funkcias videokodeko? Parto 1: Bazoj

Alia propraĵo, kiun ni traktas kiam laboras kun bildoj/vidbendoj, estas bildformato, priskribante la normalan proporcian rilaton inter la larĝo kaj alteco de bildo aŭ pikselo.

Kiam ili diras, ke certa filmo aŭ bildo estas 16 per 9 grandeco, ili kutime signifas montri bildformato (DAR - de Montru Aspektproporcion). Tamen, foje povas esti malsamaj formoj de individuaj pikseloj - en ĉi tiu kazo ni parolas piksela proporcio (BY - de Piksela Bildformato).

Kiel funkcias videokodeko? Parto 1: Bazoj

Kiel funkcias videokodeko? Parto 1: Bazoj

Noto al la gastigantino: DVD соответствует DAR 4 ĝis 3

Kvankam la fakta DVD-rezolucio estas 704x480, ĝi daŭre konservas bildformaton 4:3 ĉar la PAR estas 10:11 (704x10 / 480x11).

Kaj finfine, ni povas determini видео kiel sekvenco de n kadroj por la periodo tempo, kiu povas esti konsiderata aldona dimensio. A n tiam estas la framfrekvenco aŭ la nombro da kadroj je sekundo (FPS - de Kadroj po Sekundo).

Kiel funkcias videokodeko? Parto 1: Bazoj

La nombro da bitoj por sekundo necesaj por montri videon estas ĝia transdono rapido - bitrate.

bitrate = larĝo * alteco * bitprofundo * kadroj por sekundo

Ekzemple, 30 fps, 24 bps, 480x240 video postulus 82,944,000 bps aŭ 82,944 Mbps (30x480x240x24) - sed tio estas se neniu kunprema metodo estas uzata.

Se la transiga rapido preskaŭ konstanta, tiam ĝi nomiĝas konstanta transdona rapido (CBR - de konstanta bitrapideco). Sed ĝi ankaŭ povas varii, ĉi-kaze ĝi nomiĝas varia baudrapideco (VBR - de ŝanĝiĝema bitrapideco).

Ĉi tiu grafikaĵo montras limigitan VBR, kie ne tro da bitoj estas malŝparitaj en la kazo de tute malhela kadro.

Kiel funkcias videokodeko? Parto 1: Bazoj

Inĝenieroj komence evoluigis metodon por duobligi la perceptitan framfrekvencon de videekrano sen uzi kroman bendolarĝon. Ĉi tiu metodo estas konata kiel interplektita video; Esence, ĝi sendas duonon de la ekrano en la unua "kadro" kaj la alian duonon en la sekva "kadro".

Nuntempe, scenoj estas plejparte bildigitaj uzante progresemaj skanaj teknologioj. Ĝi estas metodo por montri, stoki aŭ transdoni movajn bildojn, en kiuj ĉiuj linioj de ĉiu kadro estas sinsekve desegnitaj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Nu! Nun ni konscias kiel bildo estas reprezentita ciferece, kiel ĝiaj koloroj estas aranĝitaj, kiom da bitoj por sekundo ni elspezas por montri filmeton, se la bitrapideco estas konstanta (CBR) aŭ varia (VBR). Ni scias pri difinita rezolucio uzante antaŭfiksitan framfrekvencon, ni konas multajn aliajn terminojn, kiel interplektita video, PAR kaj iuj aliaj.

Forigante redundon

Oni scias, ke video sen kunpremo ne povas esti uzata normale. Hor-longa video kun 720p rezolucio kaj 30 kadroj sekundo okupus 278 GB. Ni alvenas al ĉi tiu valoro multiplikante 1280 x 720 x 24 x 30 x 3600 (larĝo, alteco, bitoj por pikselo, FPS kaj tempo en sekundoj).

Uzo senperdaj kunpremaj algoritmoj, kiel DEFLATE (uzata en PKZIP, Gzip kaj PNG), ne sufiĉe reduktos la bezonatan bendolarĝon. Ni devas serĉi aliajn manierojn kunpremi videon.

Por fari tion, vi povas uzi la funkciojn de nia vizio. Ni pli bone distingas brilecon ol koloron. Vidbendo estas serio de sinsekvaj bildoj, kiuj ripetiĝas laŭlonge de la tempo. Estas malgrandaj diferencoj inter apudaj kadroj de la sama sceno. Aldone, ĉiu kadro enhavas multajn areojn uzante la saman (aŭ similan) koloron.

Koloro, brilo kaj niaj okuloj

Niaj okuloj estas pli sentemaj al brilo ol al koloro. Vi povas vidi ĉi tion mem rigardante ĉi tiun bildon.

Kiel funkcias videokodeko? Parto 1: Bazoj

Se vi ne vidas, ke maldekstre duono de la bildo la koloroj de la kvadratoj A и B estas fakte la samaj, tiam tio estas normala. Nia cerbo devigas nin atenti pli ol lumon kaj ombron ol koloron. Sur la dekstra flanko inter la indikitaj kvadratoj estas jumper de la sama koloro - do ni (t.e. nia cerbo) facile determinas ke, fakte, ili estas la sama koloro.

Ni rigardu (en simpligita maniero) kiel funkcias niaj okuloj. La okulo estas kompleksa organo konsistanta el multaj partoj. Tamen ni plej interesiĝas pri konusoj kaj bastonoj. La okulo enhavas ĉirkaŭ 120 milionojn da bastonoj kaj 6 milionojn da konusoj.

Ni konsideru la percepton de koloro kaj brilo kiel apartajn funkciojn de iuj partoj de la okulo (fakte ĉio estas iom pli komplika, sed ni simpligos ĝin). Bastonĉeloj respondecas ĉefe pri brileco, dum konusĉeloj respondecas pri koloro. Konusoj estas dividitaj en tri tipojn, depende de la pigmento kiun ili enhavas: S-konusoj (bluaj), M-konusoj (verdaj), kaj L-konusoj (ruĝaj).

Ĉar ni havas multe pli da bastonoj (brileco) ol konusoj (koloro), ni povas konkludi, ke ni pli kapablas distingi transirojn inter mallumo kaj lumo ol koloroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Karakterizaĵoj de Kontrasto-Sentemo

Esploristoj en eksperimentpsikologio kaj multaj aliaj kampoj evoluigis multajn teoriojn de homa vizio. Kaj unu el ili nomiĝas funkcioj de kontraŭsentemo. Ili rilatas al spaca kaj tempa lumigado. Resume, temas pri kiom da ŝanĝoj necesas antaŭ ol observanto ilin rimarkas. Notu la pluralon de la vorto "funkcio". Ĉi tio ŝuldiĝas al la fakto, ke ni povas mezuri kontrastajn sentemajn funkciojn ne nur por nigraj kaj blankaj bildoj, sed ankaŭ por koloraj. La rezultoj de ĉi tiuj eksperimentoj montras, ke en la plej multaj kazoj niaj okuloj estas pli sentemaj al brilo ol al koloro.

Ĉar ni scias, ke ni estas pli sentemaj al bilda brilo, ni povas provi uzi ĉi tiun fakton.

Kolora modelo

Ni iom eksciis kiel labori kun koloraj bildoj uzante la RGB-skemon. Estas ankaŭ aliaj modeloj. Estas modelo, kiu apartigas lumecon de kromo kaj ĝi estas konata kiel YCbCr. Parenteze, ekzistas aliaj modeloj, kiuj faras similan dividon, sed ni konsideros nur ĉi tiun.

En ĉi tiu kolormodelo Y estas reprezentado de brileco, kaj ankaŭ uzas du kolorkanalojn: Cb (riĉa bluo) kaj Cr (riĉa ruĝa). YCbCr povas esti derivita de RGB, kaj la inversa konvertiĝo ankaŭ estas ebla. Uzante ĉi tiun modelon ni povas krei plenkolorajn bildojn kiel ni vidas sube:

Kiel funkcias videokodeko? Parto 1: Bazoj

Konverti inter YCbCr kaj RGB

Iu kontraŭos: kiel eblas akiri ĉiujn kolorojn, se verdo ne estas uzata?

Por respondi ĉi tiun demandon, ni konvertu RGB al YCbCr. Ni uzu la koeficientojn adoptitajn en la normo BT.601, kiu estis rekomendita de la unuo ITU-R. Ĉi tiu dividado fiksas la normojn por cifereca vidbendo. Ekzemple: kio estas 4K? Kio devus esti la framfrekvenco, rezolucio, kolormodelo?

Unue ni kalkulu la brilecon. Ni uzu la konstantojn proponitajn de la ITU kaj anstataŭigu la RGB-valorojn.

Y = 0.299R + 0.587G + 0.114B

Post kiam ni havas la brilon, ni apartigos la bluajn kaj ruĝajn kolorojn:

Cb = 0.564(B - Y)

Cr = 0.713(R - Y)

Kaj ni ankaŭ povas konverti reen kaj eĉ verdiĝi uzante YCbCr:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y - 0.344Cb - 0.714Cr

Tipe, ekranoj (monitoroj, televidiloj, ekranoj, ktp.) uzas nur la RGB-modelon. Sed ĉi tiu modelo povas esti organizita en malsamaj manieroj:

Kiel funkcias videokodeko? Parto 1: Bazoj

Kolorsubspecimenado

Kun bildo reprezentita kiel kombinaĵo de lumeco kaj krominance, ni povas ekspluati la pli grandan sentemon de la homa vida sistemo al lumeco ol al krominance selekteme forigante informojn. Kroma subspecimenigo estas metodo de ĉifrado de bildoj uzanta malpli rezolucion por kromo ol por lumeco.

Kiel funkcias videokodeko? Parto 1: Bazoj

Kiom estas permesate redukti la kolorrezolucion?! Montriĝas, ke jam ekzistas iuj diagramoj, kiuj priskribas kiel trakti rezolucion kaj kunfandigon (Rezulta Koloro = Y + Cb + Cr).

Ĉi tiuj skemoj estas konataj kiel subspecimena sistemoj kaj estas esprimitaj kiel triobla rilatumo - a:x:y, kiu determinas la nombron da provaĵoj de lumeco kaj kolordiferencsignaloj.

a - horizontala specimena normo (kutime egala al 4)
x - nombro da kromaspecimenoj en la unua vico de pikseloj (horizontala rezolucio relative al a)
y — la nombro da ŝanĝoj en kromaj specimenoj inter la unua kaj dua vicoj de pikseloj.

La escepto estas 4:1:0, disponigante unu kroman provaĵon en ĉiu 4-post-4-luma rezoluciobloko.

Oftaj kabaloj uzitaj en modernaj kodekoj:

  • 4:4:4 (neniu subspecimeno)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4:2:0 - fuzia ekzemplo

Jen kunfandita bildo uzante YCbCr 4:2:0. Notu, ke ni elspezas nur 12 bitojn por pikselo.

Kiel funkcias videokodeko? Parto 1: Bazoj

Jen kiel aspektas la sama bildo, ĉifrita per la ĉefaj specoj de kolora subspecimenado. La unua vico estas la fina YCbCr, la malsupra vico montras la kroman rezolucion. Tre decaj rezultoj, konsiderante la iometan perdon de kvalito.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ĉu vi memoras, kiam ni kalkulis 278 GB da stokado por stoki hor-longan videodosieron je 720p rezolucio kaj 30 kadroj sekundo? Se ni uzas YCbCr 4:2:0, tiam ĉi tiu grandeco estos reduktita je duono - 139 GB. Ĝis nun ĝi estas ankoraŭ malproksime de akceptebla rezulto.

Vi povas akiri la YCbCr-histogramon mem uzante FFmpeg. En ĉi tiu bildo, bluo dominas super ruĝa, kiu estas klare videbla en la histogramo mem.

Kiel funkcias videokodeko? Parto 1: Bazoj

Koloro, brileco, kolora gamo - videorecenzo

Ni rekomendas spekti ĉi tiun mirindan videon. Ĝi klarigas kio estas brilo, kaj ĝenerale ĉiuj punktoj estas punktitaj ё pri brilo kaj koloro.

Kadraj Tipoj

Ni pluiru. Ni provu forigi la temporedundon. Sed unue, ni difinu iun bazan terminologion. Ni diru, ke ni havas filmon kun 30 kadroj por sekundo, jen ĝiaj unuaj 4 kadroj:

Kiel funkcias videokodeko? Parto 1: Bazoj Kiel funkcias videokodeko? Parto 1: Bazoj Kiel funkcias videokodeko? Parto 1: Bazoj Kiel funkcias videokodeko? Parto 1: Bazoj

Ni povas vidi multe da ripetado en la kadroj: ekzemple, blua fono, kiu ne ŝanĝiĝas de kadro al kadro. Por solvi ĉi tiun problemon, ni povas abstrakte klasifiki ilin en tri specojn de kadroj.

I-kadro (Intro Kadro)

I-kadro (referenca kadro, ŝlosila kadro, interna kadro) estas memstara. Sendepende de tio, kion vi volas bildigi, I-kadro estas esence statika foto. La unua kadro estas kutime I-kadro, sed ni regule observos I-kadron eĉ inter ne la unuaj kadroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

P-kadro (Predaktita Kadro)

P-kadro (antaŭdira kadro) ekspluatas la fakton, ke preskaŭ ĉiam la nuna bildo povas esti reproduktita per la antaŭa kadro. Ekzemple, en la dua kadro la nura ŝanĝo estas la pilko moviĝanta antaŭen. Ni povas akiri kadron 2 simple iomete modifante kadron 1, nur uzante la diferencon inter ĉi tiuj kadroj. Por konstrui kadron 2, ni rilatas al la antaŭa kadro 1.

Kiel funkcias videokodeko? Parto 1: BazojKiel funkcias videokodeko? Parto 1: Bazoj

B-kadro (Bi-prognoza Kadro)

Kio pri ligiloj ne nur al pasintaj, sed ankaŭ al estontaj kadroj por disponigi eĉ pli bonan kunpremadon?! Ĉi tio estas esence B-kadro (dudirekta kadro).

Kiel funkcias videokodeko? Parto 1: BazojKiel funkcias videokodeko? Parto 1: BazojKiel funkcias videokodeko? Parto 1: Bazoj

Meza retiriĝo

Ĉi tiuj kadrospecoj estas uzataj por disponigi la plej bonan eblan kunpremadon. Ni rigardos kiel tio okazas en la sekva sekcio. Nuntempe, ni rimarku, ke la plej "multekosta" laŭ konsumita memoro estas la I-kadro, la P-kadro estas rimarkeble pli malmultekosta, sed la plej profita elekto por video estas la B-kadro.

Kiel funkcias videokodeko? Parto 1: Bazoj

Tempora redundo (inter-kadra prognozo)

Ni rigardu, kiajn eblojn ni havas por minimumigi ripeton laŭlonge de la tempo. Ni povas solvi ĉi tiun tipon de redundo uzante kruc-antaŭdirajn metodojn.

Ni provos elspezi kiel eble plej malmultajn bitojn por kodi sekvencon de kadroj 0 kaj 1.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ni povas produkti subtraho, ni simple subtrahas kadron 1 de kadro 0. Ni ricevas kadron 1, nur uzas la diferencon inter ĝi kaj la antaŭa kadro, fakte ni nur ĉifras la rezultan reston.

Kiel funkcias videokodeko? Parto 1: Bazoj

Sed kio se mi dirus al vi, ke ekzistas eĉ pli bona metodo, kiu uzas eĉ malpli da pecoj?! Unue, ni rompu kadron 0 en klaran kradon konsistantan el blokoj. Kaj tiam ni provos kongrui la blokojn de kadro 0 kun kadro 1. Alivorte, ni taksos la movadon inter kadroj.

El Vikipedio - bloko moviĝo kompenso

Blokmoviĝkompenso dividas la nunan kadron en ne-imbrikitajn blokojn kaj la moviĝkompensvektoro raportas la originon de la blokoj (ofta miskompreniĝo estas tio antaŭa la kadro estas dividita en ne-imbrikitajn blokojn, kaj moviĝ-kompensvektoroj rakontas kien tiuj blokoj iras. Sed fakte, estas inverse - ne la antaŭa kadro estas analizita, sed la sekva; ne estas klare, kien la blokoj moviĝas, sed de kie ili venis). Tipe la fontblokoj interkovras en la fontkadro. Kelkaj videokunpremaj algoritmoj kunigas la nunan kadron de partoj de eĉ ne unu, sed pluraj antaŭe elsenditaj kadroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Dum la taksadprocezo, ni vidas ke la pilko moviĝis de (x= 0, y=25) al (x= 6, y=26), valoroj x и y determini la movvektoron. Alia paŝo, kiun ni povas fari por konservi bitojn, estas kodi nur la diferencon de movvektoroj inter la lasta blokpozicio kaj la antaŭvidita, do la fina movvektoro estos (x=6-0=6, y=26-25=1). ).

En reala situacio, ĉi tiu pilko estus dividita en n blokoj, sed tio ne ŝanĝas la esencon de la afero.

Objektoj en la kadro moviĝas en tri dimensioj, do kiam la pilko moviĝas, ĝi povas iĝi vide pli malgranda (aŭ pli granda se ĝi moviĝas direkte al la spektanto). Estas normale, ke ne estos perfekta kongruo inter blokoj. Jen kombinita vido de nia takso kaj la reala bildo.

Kiel funkcias videokodeko? Parto 1: Bazoj

Sed ni vidas, ke kiam ni uzas movtakson, estas rimarkeble malpli da datumoj por kodigo ol kiam oni uzas pli simplan metodon de kalkulo de la delto inter kadroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Kia aspektus reala movkompenso

Ĉi tiu tekniko estas aplikata al ĉiuj blokoj samtempe. Ofte nia kondiĉa movanta pilko estos dividita en plurajn blokojn samtempe.

Kiel funkcias videokodeko? Parto 1: Bazoj

Vi povas mem kompreni ĉi tiujn konceptojn uzante Jupitero.

Por vidi movajn vektorojn, vi povas krei eksteran prognozan videon uzante ffmpeg.

Kiel funkcias videokodeko? Parto 1: Bazoj

Vi ankaŭ povas uzi Intel Video Pro Analizilo (ĝi estas pagita, sed estas senpaga provo, kiu estas limigita nur al la unuaj dek kadroj).

Kiel funkcias videokodeko? Parto 1: Bazoj

Spaca redundo (interna prognozo)

Se ni analizas ĉiun kadron en video, ni trovos multajn interligitajn areojn.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ni trairu ĉi tiun ekzemplon. Ĉi tiu sceno plejparte konsistas el bluaj kaj blankaj koloroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ĉi tio estas I-kadro. Ni ne povas preni antaŭajn kadrojn por antaŭdiro, sed ni povas kunpremi ĝin. Ni kodu la elekton de la ruĝa bloko. Se ni rigardas ĝiajn najbarojn, ni rimarkas, ke estas iuj koloraj tendencoj ĉirkaŭ ĝi.

Kiel funkcias videokodeko? Parto 1: Bazoj

Ni supozas, ke koloroj disvastiĝas vertikale en la kadro. Kio signifas, ke la koloro de la nekonataj pikseloj enhavos la valorojn de siaj najbaroj.

Kiel funkcias videokodeko? Parto 1: Bazoj

Tia prognozo povas montriĝi malĝusta. Estas pro tio, ke vi devas apliki ĉi tiun metodon (interna prognozo), kaj poste subtrahi la realajn valorojn. Ĉi tio donos al ni restan blokon, kiu rezultigos multe pli kunpremitan matricon kompare kun la originalo.

Kiel funkcias videokodeko? Parto 1: Bazoj

Se vi volas praktiki kun internaj prognozoj, vi povas krei videon de makroblokoj kaj iliaj antaŭdiroj uzante ffmpeg. Por kompreni la signifon de ĉiu blokkoloro, vi devos legi la ffmpeg-dokumentadon.

Kiel funkcias videokodeko? Parto 1: Bazoj

Aŭ vi povas uzi Intel Video Pro Analyzer (kiel mi menciis supre, la senpaga prova versio estas limigita al la unuaj 10 kadroj, sed ĉi tio sufiĉos por vi komence).

Kiel funkcias videokodeko? Parto 1: Bazoj

La dua parto: Kiel funkcias la videokodeko

fonto: www.habr.com

Aldoni komenton