Kuidas videokooder töötab. Osa 1. PÔhitÔed

Teine osa: Videokodeki tööpÔhimÔtted

Iga rasterpilt vÔib olla esitatud kahemÔÔtmelise maatriksina . Kui rÀÀkida vÀrvide kohta, siis ideed saab arendada, vaadates pilti kuikolmemÔÔtmelist maatriksit , kus lisamÔÔtmeid kasutatakse iga vÀrvi andmete salvestamiseks.Kui kÀsitleda lÔppvÀrvi kui kombinatsiooni nn pÔhivÀrvidest (punane, roheline ja sinine), mÀÀratleme meie kolmemÔÔtmelises maatriksis kolm tasandit: esimene punasele, teine rohelisele ja viimane sinisele.

Kutsume seda maatriksi igat punkti piksliks (pildi elemendiks). Iga piksel sisaldab teavet iga vÀrvi intensiivsuse kohta (tavaliselt numbrilise vÀÀrtusena). NÀiteks
Kuidas videokooder töötab. Osa 1. PÔhitÔed
punane piksel tÀhendab, et sellel on 0 rohelist, 0 sinist ja maksimaalne punane. Roosa piksel vÔib olla moodustatud kolme vÀrvi kombinatsiooni abil. Kasutades numbrilist vahemikku 0 kuni 255, mÀÀratletakse roosa piksel kui Punane = 255 Roheline = 192, Sinine = 203 ja Artikkel on avaldatud EDISONi toetusel..

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Arendame

Arendame videovalve rakendused, voogedastusvideo, samuti tegeleme videokontroll kirurgilises ruumis.

Alternatiivsed meetodid vÀrvipildi kodeerimiseks

Kuvamiseks on palju muid mudelite olemas, mis kirjeldavad vĂ€rve pildis. NĂ€iteks vĂ”ib kasutada indekseeritud paletti, kus iga piksel on esindatud ĂŒhe baitiga, vĂ”rreldes kolme baitiga, mis on vajalik RGB-mudelis. Sellises mudelis vĂ”ib iga vĂ€rvi esitlemiseks kasutada 2D-matrixit 3D-matriisi asemel. See sÀÀstab mĂ€lu, kuid pakub vĂ€iksemat vĂ€rvivalikut.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

RGB

NĂ€iteks vaadake allolevat pilti. Esimene joonis on tĂ€ielikult vĂ€rvitud. ÜlejÀÀnud on punased, rohelised ja sinised tasandid (vastavate vĂ€rvide intensiivsus on esitatud halli skaala jĂ€rgi).

Kuidas videokooder töötab. Osa 1. PÔhitÔed

NĂ€eme, et punase tooni varjundid originaalis asuvad samades kohtades, kus on nĂ€ha teise nĂ€o eredamad osad. Samas on sinise vĂ€rvi panus peamiselt nĂ€htav ainult Mario silmades (viimane nĂ€gu) ja tema riiete elementides. Pange tĂ€hele, kuhu kĂ”ik kolm vĂ€rvitegemist annavad kĂ”ige vĂ€hem panust (tumedamad osad piltidel) — see on Mario vuntsides.

Iga vĂ€rvi intensiivsuse salvestamiseks on vajalik kindel arv bitte — seda nimetatakse bittide sĂŒgavuseks. Oletame, et kulutatakse 8 bitti (vÀÀrtusest 0 kuni 255) ĂŒhe vĂ€rvitegemise kohta. Sel juhul on meil vĂ€rvisĂŒgavus 24 bitti (8 bitti * 3 R/G/B ette).

Teine omadus, millega piltidega tegeledes kokku puutume, on eraldusvĂ”ime, mis esindab pikslite arvu ĂŒhes mÔÔtmes. Sageli tĂ€histatakse seda kui laius × kĂ”rgus, nagu alloleval 4x4 pildinĂ€idisel.
Kuidas videokooder töötab. Osa 1. PÔhitÔed

Veel ĂŒks omadus, millega me töötades pilte/ videotega kokku puutume, on kuvasuhe, mis kirjeldab tavalist proportsionaalset seost pildi vĂ”i piksli laiuse ja kĂ”rguse vahel.

Kui rÀÀgitakse, et mĂ”ne filmi vĂ”i pildi suurus on 16:9, siis tavaliselt mĂ”eldakse ekraani kuvasuhet (DAR — lĂŒhend Display Aspect Ratio). Siiski vĂ”ivad eraldi pikslite vormid olla erinevad — sel juhul rÀÀgime pikslisuhtest (PAR — lĂŒhend Pixel Aspect Ratio).

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kuidas videokooder töötab. Osa 1. PÔhitÔed

KööginÔustajale tÀhelepanekuks: DVD vastab DAR 4:3

Kuigi DVD reaalne resolutsioon on 704×480, sĂ€ilitab see siiski 4:3 kuvasuhte, kuna PAR vÀÀrtus on 10:11 (704×10 / 480×11).

Ja lĂ”puks saame mÀÀratleda video ka kui jĂ€rjestikuste n kaadrite seeriat ajaĂŒles mÔÔtmiseks, mida vĂ”ib pidada tĂ€iendavaks mÔÔtmiseks. Ning n see on ka kaadrisagedus ehk kaadrite arv sekundis (FPS — lĂŒhend Frames per Second).

Kuidas videokooder töötab. Osa 1. PÔhitÔed

BitimÀÀr, mis on vajalik video esitamiseks, on selle ĂŒlekandekiirus — bitrate.

bitrate = laius * kĂ”rgus * bit sĂŒgavus * kaadreid sekundis

NĂ€iteks, video jaoks 30 kaadrit sekundis, 24 bitti pikseli kohta ja resolutsiooniga 480×240 on vajalik 82,944,000 bitti sekundis vĂ”i 82,944 Mbit/s (30x480x240x24) — aga see on juhul, kui ei kasutata ĂŒhtegi tihendamise meetodit.

Kui ĂŒlekandekiirus on peaaegu konstantne, siis nimetatakse seda konstantseks ĂŒlekandekiirus (CBR — lĂŒhend constant bit rate). Kuid see vĂ”ib ka varieeruda, sel juhul nimetatakse seda muutuvaks andmeedastuskiirus (VBR — lĂŒhend variable bit rate).

See graafik nÀitab piiratud VBR-i, kui tÀielikult tumeda kaadri puhul ei kulutata liiga palju bitte.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Alguses töötasid insenerid vÀlja meetodi, mis kahekordistab tajutavat videodisplei kaadrisagedust ilma tÀiendava ribalaiuse kasutamiseta. See meetod on tuntud kui vÀljakudekad video; pÔhimÔtteliselt saadab see poole ekraanist esimeses "kaadris" ja teise poole jÀrgmisel "kaadris."

Praegu toimub stseenide visualiseerimine peamiselt progressiivse skaneerimise tehnoloogia. See on meetod liikuvate piltide kuvamiseks, sÀilitamiseks vÔi edastamiseks, kus iga kaadri kÔik read joonistatakse jÀrjestikuseid.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

NĂŒĂŒd oleme kursis, kuidas pilt digitaalsetes vormides esitatakse, kuidas on korraldatud selle vĂ€rvid ja kui palju bitti sekundis kulutame video nĂ€itamiseks, olgu see siis pidev (CBR) vĂ”i muutuv (VBR) edastuskiirus. Teame mÀÀratud eraldusvĂ”imet koos mÀÀratud kaadrisagedusega ning oleme tutvunud paljude teiste mĂ”istetega, nagu vahelduvvĂ€line video, PAR ja paljude teistega.

ÜlemÀÀrasuse eemaldamine

On teada, et kompressimata videot ei saa normaalselt kasutada. Tund aega 720p resolutsiooniga videot 30 kaadrit sekundis vÔtaks 278 GB. Sellisele vÀÀrtusele jÔuame, korrutades 1280 x 720 x 24 x 30 x 3600 (laius, kÔrgus, bitid pikseli kohta, FPS ja aeg sekundites).

Kasutamine kaotusteta kompressioonialgoritmid, nagu DEFLATE (kasutatakse PKZIP-is, Gzip-is ja PNG-s), ei anna piisavat vÀhendamist vajaliku ribalaiuse osas. Peame otsima teisi video kokkusurumise viise.

Selleks saab kasutada meie nĂ€gemise omadusi. Meie silmad tajuvad paremini heledust kui vĂ€rve. Video on jĂ€rjestatud piltide kogum, mis kordub aja jooksul. Ühe stseeni kĂ”rval asuvate kaadrite vahel on vĂ€iksed erinevused. Lisaks sisaldab iga kaader palju piirkondi, mis kasutavad ĂŒhte ja sama (vĂ”i sarnast) vĂ€rvi.

VĂ€rv, heledus ja meie silmad

Meie silmad on heledusele tundlikumad kui vÀrvile. Veenduge ise, vaadates seda kujutist.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kui te ei nĂ€e, et vasakus pooles pildi ruutude vĂ€rvid A ja B on tegelikult samad, siis see on normaalne. Meie aju paneb meid rohkem tĂ€helepanu pöörama heledusele kui vĂ€rvile. Paremal pool on tĂ€histatud ruutude vahel sama vĂ€rvi ĂŒhendus — seega suudame (ehk siis meie aju) kergesti kindlaks teha, et seal on tegelikult sama vĂ€rv.

Vaatame (lihtsustatult) lÀhemalt, kuidas meie silmad töötavad. Silm on keeruline organ, mis koosneb paljusid osadest. Kuid meid huvitavad eelkÔige koonus- ja varsarakud. Silmas on umbes 120 miljonit varsarakku ja 6 miljonit koonusrakku.

Vaatleme vĂ€rvi ja heleduse tajumist kui eraldi funktsioone silma teatud osades (tegelikult on asi keerulisem, kuid lihtsustame). Keerukad rakud vastutavad enamasti heleduse eest, samas kui koonusrakud vastutavad vĂ€rvi eest. Koonusrakud jaotatakse kolme tĂŒĂŒpi sĂ”ltuvalt sisaldatavast pigmendist: S-koonused (sinine), M-koonused (roheline) ja L-koonused (punane).

Kuna meil on palju rohkem keppe (heleduse jaoks) kui koonusrakke (vĂ€rvi jaoks), vĂ”ib jĂ€reldada, et me oleme paremini vĂ”imelised eristama tumeduse ja valguse ĂŒleminekuid kui vĂ€rve.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kontrastitundlikkuse funktsioonid

EksperimentaalpsĂŒhholoogia ja paljude teiste valdkondade teadlased on vĂ€lja töötanud arvukalt teooriaid inimnĂ€gemise kohta. Üks neist nimetatakse kontrastitundlikkuse funktsioonideks. Need on seotud ruumilise ja ajaga valgustusega. LĂŒhidalt öeldes, rÀÀgime sellest, kui palju muutusi on vajalik, enne kui vaatleja neid mĂ€rkab. Pange tĂ€hele sĂ”na „funktsioon” mitmuses. See on seotud sellega, et saame mÔÔta kontrasti tundlikkuse funktsioone mitte ainult mustvalges, vaid ka vĂ€rvilistes piltides. Need eksperimendi tulemused nĂ€itavad, et enamikul juhtudel on meie silmad valgustusele tundlikumad kui vĂ€rvile.

Kuna on teada, et oleme valgustuse suhtes tundlikumad, vÔiksime proovida seda fakti Àra kasutada.

VĂ€rvimudel

Oleme natuke aru saanud, kuidas töötada vÀrviliste piltidega, kasutades RGB-skeemi. On ka teisi mudeleid. On mudel, mis eraldab heleduse vÀrvustest ja seda tuntakse kui YCbCr. Muide, on ka teisi mudeleid, mis teevad sarnase jaotuse, kuid kÀsitleme ainult seda.

Selles vĂ€rvimudelis Y — esindab heledust, samas kasutatakse kaht vĂ€rvikanalit: Cb (kĂŒlluslik sinine) ja Cr (kĂŒllane punane). YCbCr vĂ”ib olla saadud RGB-st, samuti on vĂ”imalik ka tagurpidi muundamine. Kasutades seda mudelit, saame luua tĂ€isvĂ€rvilisi pilte, nagu allpool nĂ€htav:

Kuidas videokooder töötab. Osa 1. PÔhitÔed

YCbCr ja RGB vaheline muundamine

Keegi vÔib vÀita: kuidas on vÔimalik saada kÔiki vÀrve, kui roheline ei ole kasutusel?

Sellele kĂŒsimusele vastamiseks muundame RGB YCbCr-iks. Kasutame standardis kehtestatud koefitsiente BT.601, mille soovitab ITU-R. See organisatsioon mÀÀratleb digitaalsete video standardid. NĂ€iteks: mis on 4K? Millised peaksid olema kaadrisagedus, eraldusvĂ”ime, vĂ€rvimudel?

Esiteks arvutame heledust. Kasutame ITU soovitatud konstandeid ja asendame RGB vÀÀrtused.

Y = 0.299R + 0.587G + 0.114B

PÀrast heleduse saamist eraldame sinise ja punase vÀrvi:

Cb = 0.564(B — Y)

Cr = 0.713(R — Y)

Ja me saame ka tagasi muundada ja isegi saada rohelise YCbCr abil:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y — 0.344Cb — 0.714Cr

Tavaliselt kasutavad ekraanid (monitorid, telerid, ekraanid jne) ainult RGB mudelit. Kuid seda mudelit saab organiseerida erinevalt:

Kuidas videokooder töötab. Osa 1. PÔhitÔed

VĂ€rvi alampurskamine

Pilt, mis on esitatud heleduse ja vĂ€rvuse kombinatsioonina, vĂ”imaldab meil kasutada inimeste nĂ€gemise sĂŒsteemi suuremat tundlikkust heledusele kui vĂ€rvusele, kui me valikuliselt teabe eemaldame. VĂ€rvialane alalĂ€bilaskmine on piltide kodeerimise meetod, mis kasutab vĂ€rvuse jaoks madalamat eraldusvĂ”imet kui heleduse jaoks.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kui palju on lubatud vÀrvuse eraldusvÔimet vÀhendada?! Tundub, et juba on olemas mÔned skeemid, mis kirjeldavad, kuidas töötleda eraldusvÔimet ja sulandada (LÔppvÀrv = Y + Cb + Cr).

Need skeemid on tuntud kui alalĂ€bilaskmise sĂŒsteemid ja need vĂ€ljendatakse 3:1 suhetes — a:x:y, mis mÀÀrab heledus- ja vĂ€rvuseidendi signaalide proovide arvu.

a — standardne horisontaalne valimine (tavaliselt 4)
x — vĂ€rvuse proovide arv esimese pikslirea kohta (horisontaalne eraldusvĂ”ime seoses a)
y — vĂ€rvuse proovide muutuste arv esimese ja teise pikslirea vahel.

Erandiks on 4:1:0, mis tagab ĂŒhe vĂ€rvuse proovi iga 4x4 heleduslahtri kohta.

Kaasaegsetes koodekites kasutatavad ĂŒldskeemid:

  • 4:4:4 (ilma alamdiskreetimiseta)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4: 2: 0 — sulandamise nĂ€ide

Siin on YCbCr 4:2:0 abil ĂŒhitatud pildi fragment. Pange tĂ€hele, et meil kulub ainult 12 bitti pikslile.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Nii nĂ€eb vĂ€lja sama pilt, kodeeritud peamiste vĂ€rvisubdiskreetimise tĂŒĂŒpide jĂ€rgi. Ülemine rida on lĂ”plik YCbCr, alumine rida nĂ€itab vĂ€rvivoldingu eraldusvĂ”imet. TĂ”eliselt head tulemused, arvestades vĂ€hese kvaliteedikao.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kas mĂ€letate, et loendasime 278 GB kettaruumi tunni pikkuse 720p ja 30 kaadrit sekundis video faili talletamiseks? Kui kasutame YCbCr 4:2:0, siis kahaneb see suurus poole vĂ”rra — 139 GB. Seni on see siiski kaugel vastuvĂ”etavast tulemusest.

Saate ise YCbCr-i histogrammi luua FFmpeg abil. Sellel pildil domineerib sinine punase ĂŒle, mis on histogrammil hĂ€sti nĂ€ha.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

VĂ€rvivolding, heledus, vĂ€rvigamma — videoĂŒlevaade

Soovitatav on vaadata seda hĂ€mmastavat videot. Siin selgitatakse, mis on heledus, ja ĂŒldiselt on kĂ”ik punktid hĂ€sti paika pandud ĂŒ heleduse ja vĂ€rvi osas.

Vaata videot

KaadritĂŒĂŒbid

Liigume edasi. Proovime vÀhendada ajakulu. Kuid esmalt mÀÀratlegime mÔned pÔhiterminoloogiad. Oletame, et meil on film, kus on 30 kaadrit sekundis, ja siin on selle esimesed 4 kaadrit:

Kuidas videokooder töötab. Osa 1. PÔhitÔed Kuidas videokooder töötab. Osa 1. PÔhitÔed Kuidas videokooder töötab. Osa 1. PÔhitÔed Kuidas videokooder töötab. Osa 1. PÔhitÔed

NĂ€eme kaadrites palju kordusi: nĂ€iteks sinine taust, mis ei muutu kaadrist kaadrisse. Selle probleemi lahendamiseks saame neid abstraktselt klassifitseerida kolme tĂŒĂŒpi kaadriks.

I-kaar (IIntro Frame)

I-kaar (link-kaader, vÔtme-kaader, sise-kaader) on iseseisev. SÔltumata sellest, mida tuleb visualiseerida, on I-kaar sisuliselt staatiline foto. Esimene kaader on tavaliselt I-kaar, kuid jÀlgime I-kaare ka kaugelt mitte esimestes kaadris.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

P-kaar (PPredicted Frame)

P-kerge (ennustatav kerge) kasutab Àra, et peaaegu alati saab praegust pilti esitada kasutades eelmist kerget. NÀiteks teises kerges on ainus muutus edasiviiv pall. Saame kerge 2 lihtsalt veidi muutes kergest 1, kasutades ainult nende kergete vahe. Kerge 2 ehitamiseks viitame eelnevale kergemale 1.

Kuidas videokooder töötab. Osa 1. PĂ”hitĂ”ed ← Kuidas videokooder töötab. Osa 1. PĂ”hitĂ”ed

B-kerge (Bi-predictive Frame)

A kuidas oleks viidete asemel mitte ainult minevikus, vaid ka tulevikus kergetele, et tagada veelgi parem kokkusurumine?! See on peamiselt B-kerge (kahepoolsed kerged).

Kuidas videokooder töötab. Osa 1. PĂ”hitĂ”ed ← Kuidas videokooder töötab. Osa 1. PĂ”hitĂ”ed → Kuidas videokooder töötab. Osa 1. PĂ”hitĂ”ed

VahekokkuvÔte

Need tĂŒĂŒbid kergetest tagavad parima kokkusurumise. Uurime, kuidas see toimub jĂ€rgmises jaotises. Seni tasub mĂ€rkida, et kĂ”ige "kallim" mĂ€lu kasutamine on I-kerge, P-kerge on mĂ€rgatavalt odavam, samas kui kĂ”ige kasulikum variant video jaoks on B-kerge.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Ajaliseks liigseks (vahekergete ennustamine)

Vaatame, millised on meie vĂ”imalused korduvate ajakulu vĂ€hendamiseks. Seda tĂŒĂŒpi liigset andmemahutatust saame lahendada vastastikuste prognoosimisvĂ”tete abil.

PĂŒĂŒdke kodeerimise jĂ€rjestuses 0 ja 1 kulutada vĂ”imalikult vĂ€he bitte.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Saame teha lahutamise, lihtsalt lahutame kaadri 1 kaadrist 0. Saame kaadri 1, kasutades ainult erinevust selle ja eelneva kaadri vahel, tegelikult kodeerime vaid saadud jÀÀki.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Aga mis siis, kui ma ĂŒtlen teile, et on veel parem meetod, mis kasutab veel vĂ€hem bitte?! Alustame selge ruudustiku loomisega kaadrist 0, mis koosneb plokkidest. SeejĂ€rel proovime vĂ”rrelda plokke kaadrist 0 kaadriga 1. TeisisĂ”nu, hindame liikumist kaadrite vahel.

Wikipediast — plokkide liikumise kompensatsioon

Plokkide liikumise kompensatsioon jagab praeguse kaadri mittetĂ€iendavateks plokkideks ja liikumise kompensatsiooni vektor nĂ€itab plokkide pĂ€ritolu (levinud valearusaam on, et eelmine kaader jaguneb eraldiseisvateks plokkideks ning liikumise kompensatsiooni vektorid nĂ€itavad, kuhu need plokid liiguvad. Tegelikult on vastupidi — analĂŒĂŒsitakse mitte eelmist kadreid, vaid jĂ€rgmist, selgub mitte see, kuhu plokid liiguvad, vaid kust nad on tulnud. TĂŒĂŒpiliselt kattuvad algsed plokid algses kaadris. MĂ”ned videokompressiooni algoritmid koguvad praeguse kaadri osad isegi mitte ĂŒhest, vaid mitmest eelnevalt edastatud kaadrist.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Protsessi kĂ€igus nĂ€eme, et pall on liikunud (x=0, y=25) koha pealt (x=6, y=26), vÀÀrtused x ja y moodustavad liikumise vektori. Veel ĂŒks samm, mida saame teha, et andmeid sÀÀsta, on kodeerida ainult liikumise vektorite erinevus viimase ploki asukoha ja prognoositud vahel, seega lĂ”plik liikumise vektor on (x=6-0=6, y=26-25=1).

Reaalses situatsioonis oleks see pall jagatud n plokkideks, kuid see ei muuda asja olemust.

Kadris olevad objektid liiguvad kolmes mÔÔtmes, seega kui pall liigub, vĂ”ib see visuaalselt muutuda vĂ€iksemaks (vĂ”i suuremaks, kui see liigub vaatleja suunas). On normaalne, et plokkide vahel ei pruugi olla ideaalset vastavust. Siin on ĂŒhendatud vaade meie hindamisest ja reaalsest pildist.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kuid nÀeme, et kui rakendame liikumise hindamist, on kodeerimiseks vajalikud andmed oluliselt vÀhem, kui kasutades lihtsamat meetodit raamide vahelise delta arvutamiseks.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kuidas tÔeline liikumise kompensatsioon vÀlja nÀeb

Seda meetodit rakendatakse kohe kÔikidele plokkidele. Sageli jaguneb meie nii-öelda liikuv pall kohe mitmeks plokiks.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Sa saad neid kontseptsioone ise katsuda, kasutades Jupyter.

Liikumise vektorite nÀgemiseks saab luua video vÀlist ennustust kasutades ffmpeg.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Samuti saad kasutada Intel Video Pro Analyzer (see on tasuline, kuid saadaval on tasuta prooviversioon, mis on piiratud ainult esimestel kĂŒmnel kaadril).

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Ruumiline ĂŒleliigsus (sisemine prognoos)

Kui analĂŒĂŒsida iga kaadrit videos, avastame palju omavahel seotud alasid.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Vaadakem sellele nÀitele lÀhemalt. See stseen koosneb peamiselt sinistest ja valgetest vÀrvide toonidest.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

See on I-raam. Eelmisi raame prognoosimiseks kasutada ei saa, kuid saame selle kokku suruda. Kodeerime punase ploki eristamise. Kui vaatame selle naabreid, siis mĂ€rkame, et ĂŒmberringi on teatud vĂ€rvilised trendid.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Oletame, et kaadris levivad vÀrvid vertikaalselt. See tÀhendab, et tundmatute pikslite vÀrvide vÀÀrtused sisaldavad naabrite vÀÀrtusi.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Selline prognoos vÔib osutuda vale. Just sellepÀrast tuleb rakendada seda meetodit (sisemine prognoos), seejÀrel lahutada reaalsed vÀÀrtused. See annab meile jÀÀkploki, mis viib palju tihedama matriitsini vÔrreldes originaaliga.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Kui soovite sisemiste prognoosidega harjutada, saate luua video makrobokidest ja nende prognoosidest, kasutades ffmpeg'i. Iga ploki vÀrvi tÀhenduse mÔistmiseks peate tutvuma ffmpeg'i dokumentatsiooniga.

Kuidas videokooder töötab. Osa 1. PÔhitÔed

VÔi vÔite kasutada Intel Video Pro Analyzer'it (nagu eelnevalt mainisin, on prooviversioonis piirang esimestele 10 kaadrile, kuid seda piisab alguses).

Kuidas videokooder töötab. Osa 1. PÔhitÔed

Teine osa: Videokodeki tööpÔhimÔtted

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster