Ki jan yon codec videyo travay? Pati 1: Basics

Dezyèm pati a: Ki jan codec videyo a ap travay

Nenpòt raster imaj ka reprezante nan fòm lan matris ki genyen de dimansyon. Lè li rive koulè, lide a ka devlope pa gade nan yon imaj kòm matris ki genyen twa dimansyon, nan ki dimansyon adisyonèl yo itilize pou estoke done pou chak koulè yo.

Si nou konsidere koulè final la kòm yon konbinezon de sa yo rele. koulè prensipal (wouj, vèt ak ble), nan matris twa dimansyon nou an nou defini twa plan: premye a pou wouj, dezyèm lan pou vèt ak dènye a pou ble.
Ki jan yon codec videyo travay? Pati 1: Basics
Nou pral rele chak pwen nan matris sa a yon pixel (eleman imaj). Chak pixel gen enfòmasyon sou entansite a (anjeneral kòm yon valè nimerik) nan chak koulè. Pa egzanp, pixel wouj vle di ke li genyen 0 vèt, 0 ble ak maksimòm wouj. Woz pixel ka fòme lè l sèvi avèk yon konbinezon de twa koulè. Sèvi ak yon seri nimerik ki soti nan 0 a 255, yon pixel woz defini kòm Wouj = 255, Vèt = 192 и Ble = 203.

Ki jan yon codec videyo travay? Pati 1: Basics

Atik sa a te pibliye ak sipò EDISON.

Nou ap devlope aplikasyon pou siveyans videyo, difizyon videyo, epi tou nou angaje anrejistreman videyo nan chanm chirijikal la.

Fason altènatif pou kode yon imaj koulè

Gen anpil lòt modèl pou reprezante koulè ki fòme yon imaj. Pou egzanp, ou ka itilize yon palèt endis, ki mande pou yon sèl byte pou reprezante chak pixel, olye pou yo twa ki nesesè lè w ap itilize modèl RGB la. Nan yon modèl konsa, li posib pou itilize yon matris 2D olye de yon matris 3D pou reprezante chak koulè. Sa a sove memwa, men li bay yon gam koulè ki pi piti.

Ki jan yon codec videyo travay? Pati 1: Basics

Rgb

Pou egzanp, pran yon gade nan foto sa a anba a. Premye figi a konplètman pentire. Lòt yo se plan wouj, vèt ak ble (entansite koulè korespondan yo montre nan echèl gri).

Ki jan yon codec videyo travay? Pati 1: Basics

Nou wè ke tout koulè wouj nan orijinal la pral nan menm kote yo obsève pati ki pi klere nan dezyèm figi a. Pandan ke kontribisyon ble a ka sitou ka wè sèlman nan je Mario a (dènye figi) ak eleman nan rad li. Remake kote tout twa koulè avyon kontribye pi piti (pati ki pi fonse nan imaj yo) - moustach Mario la.

Pou estoke entansite chak koulè, yo mande yon sèten kantite ti - kantite sa a rele ti pwofondè. Ann di 8 bit yo depanse (ki baze sou yon valè soti nan 0 a 255) pou chak plan koulè. Lè sa a, nou gen yon pwofondè koulè nan 24 Bits (8 Bits * 3 R / G / B avyon).

Yon lòt pwopriyete yon imaj se pèmisyon, ki se kantite piksèl nan yon dimansyon. Souvan endike kòm lajè × wotè, tankou nan imaj 4 pa 4 egzanp ki anba a.
Ki jan yon codec videyo travay? Pati 1: Basics

Yon lòt pwopriyete nou fè fas ak lè w ap travay ak imaj / videyo se aspè rapò, ki dekri relasyon nòmal pwopòsyonèl ant lajè ak wotè yon imaj oswa pixel.

Lè yo di ke yon fim oswa yon foto sèten se 16 pa 9 nan gwosè, anjeneral yo vle di montre rapò aspè (DAR - soti nan Montre rapò aspè). Sepandan, pafwa ka gen diferan fòm piksèl endividyèl - nan ka sa a nou ap pale de rapò pixel (PAR - soti nan Rapò aspè piksèl).

Ki jan yon codec videyo travay? Pati 1: Basics

Ki jan yon codec videyo travay? Pati 1: Basics

Nòt pou otès la: DVD Korespondan DAR 4 a 3

Malgre ke rezolisyon DVD aktyèl la se 704x480, li toujou kenbe yon rapò aspè 4:3 paske PAR la se 10:11 (704x10 / 480x11).

Epi finalman, nou ka detèmine videyo tankou yon sekans nan n ankadreman pou peryòd la tan, ki ka konsidere kòm yon dimansyon adisyonèl. A n Lè sa a, se pousantaj ankadreman an oswa kantite ankadreman pou chak segonn (FPS - soti nan Ankadreman pou chak dezyèm).

Ki jan yon codec videyo travay? Pati 1: Basics

Nimewo a nan Bits pou chak segonn ki nesesè yo montre yon videyo se li yo vitès transmisyon - bitrate.

bitrate = lajè * wotè * ti jan pwofondè * ankadreman pou chak segonn

Pou egzanp, yon 30 fps, 24 bps, 480x240 videyo ta mande 82,944,000 bps oswa 82,944 Mbps (30x480x240x24) - men sa a si pa gen okenn metòd konpresyon yo itilize.

Si vitès transfè a prèske konstan, Lè sa a, li rele vitès transmisyon konstan (CBR - soti nan to bit konstan). Men, li kapab tou varye, nan ka sa a li rele vitès baud varyab (Vbr - soti nan pousantaj ti jan varyab).

Grafik sa a montre limite VBR, kote pa gen twòp moso yo gaspiye nan ka yon ankadreman konplètman nwa.

Ki jan yon codec videyo travay? Pati 1: Basics

Okòmansman, enjenyè yo te devlope yon metòd pou double pousantaj ankadreman an nan yon ekspozisyon videyo san yo pa itilize Pleasant adisyonèl. Metòd sa a ke yo rekonèt kòm videyo entrelacé; Fondamantalman, li voye mwatye ekran an nan premye "ankadreman an" ak lòt mwatye a nan pwochen "ankadreman an".

Kounye a, sèn yo sitou rann lè l sèvi avèk teknoloji optik pwogresif. Li se yon metòd pou montre, estoke oswa transmèt imaj k ap deplase kote tout liy yo nan chak ankadreman yo trase sekans.

Ki jan yon codec videyo travay? Pati 1: Basics

Oke! Koulye a, nou konnen ki jan yon imaj reprezante nimerik, ki jan koulè li yo ranje, konbyen bit pa segonn nou depanse pou montre videyo a, si to a bit se konstan (CBR) oswa varyab (VBR). Nou konnen sou yon rezolisyon bay lè l sèvi avèk yon pousantaj ankadreman bay, nou abitye ak anpil lòt tèm, tankou videyo entrelacé, PAR ak kèk lòt.

Retire redondance

Li konnen ke videyo san konpresyon pa ka itilize nòmalman. Yon videyo ki dire yon èdtan nan rezolisyon 720p ak 30 ankadreman pou chak segonn ta pran 278 GB. Nou rive nan valè sa a lè nou miltipliye 1280 x 720 x 24 x 30 x 3600 (lajè, wotè, bits pou chak pixel, FPS ak tan an segonn).

Sèvi ak algorithm konpresyon san pèt, tankou DEFLATE (itilize nan PKZIP, Gzip ak PNG), pa pral diminye Pleasant ki nesesè yo ase. Nou dwe chèche lòt fason pou konprese videyo.

Pou fè sa, ou ka itilize karakteristik vizyon nou an. Nou pi bon nan distenge klète pase koulè. Yon videyo se yon seri imaj sekans ki repete sou tan. Gen ti diferans ki genyen ant ankadreman adjasan nan menm sèn nan. Anplis de sa, chak ankadreman gen anpil zòn lè l sèvi avèk menm koulè (oswa menm jan an).

Koulè, klète ak je nou

Je nou yo pi sansib a klète pase a koulè. Ou ka wè sa pou tèt ou lè w gade foto sa a.

Ki jan yon codec videyo travay? Pati 1: Basics

Si ou pa wè sa sou mwatye gòch imaj la koulè kare yo A и B yo aktyèlman menm bagay la tou, Lè sa a, sa a nòmal. Sèvo nou fòse nou peye plis atansyon sou limyè ak lonbraj olye ke koulè. Sou bò dwat ant kare yo deziyen gen yon kavalye ki gen menm koulè a ​​- kidonk nou (sa vle di sèvo nou an) fasil detèmine ke, an reyalite, yo se menm koulè a.

Ann gade (nan yon fason senplifye) nan ki jan je nou travay. Je a se yon ògàn konplèks ki gen plizyè pati. Sepandan, nou pi enterese nan kòn ak baton. Je a gen anviwon 120 milyon branch bwa ak 6 milyon kòn.

Ann konsidere pèsepsyon koulè ak klète kòm fonksyon separe nan sèten pati nan je a (an reyalite, tout bagay se yon ti jan pi konplike, men nou pral senplifye li). Selil Rod yo sitou responsab pou klète, pandan y ap selil kòn yo responsab pou koulè. Kòn yo divize an twa kalite, tou depann de pigman yo genyen: S-kòn (ble), M-kòn (vèt), ak L-kòn (wouj).

Piske nou gen anpil plis baton (klere) pase kòn (koulè), nou ka konkli ke nou gen plis kapasite pou distenge tranzisyon ant nwa ak limyè pase koulè.

Ki jan yon codec videyo travay? Pati 1: Basics

Karakteristik sansiblite kontras

Chèchè nan sikoloji eksperimantal ak anpil lòt jaden yo te devlope anpil teyori nan vizyon imen. Epi youn nan yo rele fonksyon sansiblite kontras. Yo gen rapò ak ekleraj espasyal ak tanporèl. An brèf, se sou konbyen chanjman ki nesesè anvan yon obsèvatè remake yo. Remake pliryèl mo "fonksyon an". Sa a se akòz lefèt ke nou ka mezire fonksyon sansiblite kontras pa sèlman pou imaj nwa ak blan, men tou pou imaj koulè. Rezilta eksperyans sa yo montre ke nan pifò ka je nou yo pi sansib a klète pase a koulè.

Depi nou konnen ke nou pi sansib a klète imaj, nou ka eseye sèvi ak reyalite sa a.

Modèl koulè

Nou te kalkile yon ti kras ki jan yo travay ak imaj koulè lè l sèvi avèk konplo a RGB. Gen lòt modèl tou. Gen yon modèl ki separe luminans ak chroma epi li ke yo rekonèt kòm YCbCr. By wout la, gen lòt modèl ki fè yon divizyon menm jan an, men nou pral sèlman konsidere sa a.

Nan modèl koulè sa a Y se yon reprezantasyon klète, epi tou li itilize de chanèl koulè: Cb (rich ble) ak Cr (wouj rich). YCbCr ka sòti nan RGB, ak konvèsyon ranvèse a posib tou. Sèvi ak modèl sa a nou ka kreye imaj plen koulè jan nou wè anba a:

Ki jan yon codec videyo travay? Pati 1: Basics

Konvèti ant YCbCr ak RGB

Yon moun pral objeksyon: ki jan li posib pou jwenn tout koulè yo si yo pa itilize vèt?

Pou reponn kesyon sa a, ann konvèti RGB an YCbCr. Ann sèvi ak koyefisyan yo adopte nan estanda a BT.601, ki te rekòmande pa inite a ITU-R. Divizyon sa a fikse estanda pou videyo dijital. Pou egzanp: ki sa ki 4K? Ki sa ki ta dwe to ankadreman an, rezolisyon, modèl koulè?

Premyèman, ann kalkile klète a. Ann sèvi ak konstan yo pwopoze pa ITU a epi ranplase valè RGB yo.

Y = 0.299R + 0.587G + 0.114B

Apre nou gen klète a, nou pral separe koulè ble ak wouj:

Cb = 0.564(B - Y)

Cr = 0.713(R - Y)

Epi nou ka tou konvèti tounen e menm vin vèt lè l sèvi avèk YCbCr:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y - 0.344Cb - 0.714Cr

Tipikman, ekspozisyon (monitè, televizyon, ekran, elatriye) itilize sèlman modèl RGB la. Men, modèl sa a ka òganize nan diferan fason:

Ki jan yon codec videyo travay? Pati 1: Basics

Sousampling koulè

Avèk yon imaj ki reprezante kòm yon konbinezon de luminans ak chrominance, nou ka eksplwate pi gwo sansiblite sistèm vizyèl imen an nan luminans pase nan chrominance pa selektivman retire enfòmasyon. Chroma Sousampling se yon metòd pou kode imaj lè l sèvi avèk mwens rezolisyon pou chroma pase pou luminans.

Ki jan yon codec videyo travay? Pati 1: Basics

Konbyen li akseptab pou redwi rezolisyon koulè a?! Li sanble ke gen deja kèk dyagram ki dekri kijan pou jere rezolisyon ak fusion (Rezilta Koulè = Y + Cb + Cr).

Plan sa yo ke yo rekonèt kòm sistèm downsampling epi yo eksprime kòm yon rapò 3-pliye - a:x:y, ki detèmine kantite echantiyon siyal diferans luminans ak koulè.

a - estanda echantiyon orizontal (anjeneral egal a 4)
x — kantite echantiyon chroma nan premye ranje piksèl (rezolisyon orizontal parapò ak a)
y — kantite chanjman nan echantiyon chroma ant premye ak dezyèm ranje piksèl yo.

Eksepsyon a se 4:1:0, bay yon echantiyon chroma nan chak blòk rezolisyon luminans 4-pa-4.

Plan komen yo itilize nan kodèk modèn:

  • 4:4:4 (pa gen echantiyon)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4:2:0 - egzanp fizyon

Isit la se yon imaj fizyone lè l sèvi avèk YCbCr 4:2:0. Remake byen ke nou ap depanse sèlman 12 Bits pou chak pixel.

Ki jan yon codec videyo travay? Pati 1: Basics

Sa a se sa menm imaj la sanble, kode ak kalite prensipal yo nan sous-échantillonnage koulè. Premye ranje a se YCbCr final la, ranje anba a montre rezolisyon chroma. Rezilta trè desan, konsidere pèt la ti tay nan bon jan kalite.

Ki jan yon codec videyo travay? Pati 1: Basics

Sonje lè nou te konte 278 GB espas depo pou estoke yon fichye videyo ki dire yon èdtan nan rezolisyon 720p ak 30 ankadreman pou chak segonn? Si nou itilize YCbCr 4:2:0, Lè sa a, gwosè sa a ap redwi a mwatye - 139 GB. Jiskaprezan, li toujou lwen yon rezilta akseptab.

Ou ka jwenn istogram YCbCr tèt ou lè l sèvi avèk FFmpeg. Nan imaj sa a, ble domine sou wouj, ki klèman vizib nan istogram nan tèt li.

Ki jan yon codec videyo travay? Pati 1: Basics

Koulè, klète, gam koulè - revizyon videyo

Nou rekòmande gade bèl videyo sa a. Li eksplike ki sa klète ye, epi an jeneral tout pwen yo pwentiye ё sou klète ak koulè.

Kalite ankadreman

Ann avanse. Ann eseye elimine èkse tan an. Men, anvan, an n defini kèk tèminoloji de baz. Ann di nou gen yon fim ak 30 ankadreman pou chak segonn, men 4 premye ankadreman li yo:

Ki jan yon codec videyo travay? Pati 1: Basics Ki jan yon codec videyo travay? Pati 1: Basics Ki jan yon codec videyo travay? Pati 1: Basics Ki jan yon codec videyo travay? Pati 1: Basics

Nou ka wè anpil repetisyon nan ankadreman yo: pou egzanp, yon background ble ki pa chanje de ankadreman an ankadreman. Pou rezoud pwoblèm sa a, nou ka abstrèman klasifye yo nan twa kalite ankadreman.

mwen-ankadreman (Intro ankadreman)

I-ankadreman (ankadreman referans, ankadreman kle, ankadreman enteryè) se endepandan. Kèlkeswa sa ou vle vizyalize, yon I-frame se esansyèlman yon foto estatik. Premye ankadreman an se nòmalman yon I-frame, men nou pral regilyèman obsève I-frame menm nan mitan pa premye ankadreman yo.

Ki jan yon codec videyo travay? Pati 1: Basics

P-ankadreman (Predikte ankadreman)

P-frame (ankadreman prediksyon) pran avantaj de lefèt ke prèske toujou imaj aktyèl la ka repwodui lè l sèvi avèk ankadreman anvan an. Pou egzanp, nan dezyèm ankadreman an chanjman nan sèlman se boul la ap deplase pi devan. Nou ka jwenn ankadreman 2 pa tou senpleman yon ti kras modifye ankadreman 1, sèlman lè l sèvi avèk diferans ki genyen ant ankadreman sa yo. Pou konstwi ankadreman 2, nou refere a ankadreman anvan an 1.

Ki jan yon codec videyo travay? Pati 1: BasicsKi jan yon codec videyo travay? Pati 1: Basics

B-ankadreman (Bi-prediktif ankadreman)

Ki sa ki sou lyen pa sèlman nan sot pase yo, men tou nan ankadreman nan lavni yo bay menm pi bon konpresyon?! Sa a se fondamantalman yon B-ankadreman (bidireksyon ankadreman).

Ki jan yon codec videyo travay? Pati 1: BasicsKi jan yon codec videyo travay? Pati 1: BasicsKi jan yon codec videyo travay? Pati 1: Basics

Retrè entèmedyè

Kalite ankadreman sa yo itilize pou bay pi bon konpresyon posib. Nou pral gade ki jan sa rive nan pwochen seksyon an. Pou kounye a, se pou nou sonje ke pi "chè" an tèm de memwa boule se I-ankadreman an, P-ankadreman an se notables pi bon mache, men opsyon ki pi pwofitab pou videyo se B-ankadreman an.

Ki jan yon codec videyo travay? Pati 1: Basics

Redondans tanporèl (prediksyon entè-ankadreman)

Ann gade nan ki opsyon nou genyen pou minimize repetisyon sou tan. Nou ka rezoud kalite redondance sa a lè l sèvi avèk metòd kwa-prediksyon.

Nou pral eseye depanse kòm kèk Bits ke posib pou kode yon sekans nan ankadreman 0 ak 1.

Ki jan yon codec videyo travay? Pati 1: Basics

Nou ka pwodwi soustraksyon, nou tou senpleman soustraksyon ankadreman 1 nan ankadreman 0. Nou jwenn ankadreman 1, sèlman sèvi ak diferans ki genyen ant li ak ankadreman anvan an, an reyalite nou sèlman kode rès ki kapab lakòz.

Ki jan yon codec videyo travay? Pati 1: Basics

Men, e si mwen te di ou ke gen yon metòd menm pi bon ki itilize menm mwens Bits?! Premyèman, ann kraze ankadreman 0 a nan yon kadriyaj klè ki fòme ak blòk. Apre sa, nou pral eseye matche ak blòk ki soti nan ankadreman 0 ak ankadreman 1. Nan lòt mo, nou pral estime mouvman ki genyen ant ankadreman.

Soti nan Wikipedya - konpansasyon mouvman blòk

Konpansasyon mouvman blòk divize ankadreman aktyèl la an blòk ki pa sipèpoze ak vektè konpansasyon mouvman an rapòte orijin blòk yo (yon move konsepsyon komen se ke anvan yo ankadreman an divize an blòk ki pa sipèpoze, ak vektè konpansasyon mouvman yo di ki kote blòk sa yo ale. Men, an reyalite, li nan lòt fason alantou - se pa ankadreman anvan an ki analize, men youn nan pwochen; li pa klè ki kote blòk yo ap deplase, men ki kote yo soti). Tipikman blòk sous yo sipèpoze nan ankadreman sous la. Gen kèk algoritm konpresyon videyo rasanble ankadreman aktyèl la soti nan pati nan pa menm yon sèl, men plizyè ankadreman deja transmèt.

Ki jan yon codec videyo travay? Pati 1: Basics

Pandan pwosesis evalyasyon an, nou wè ke boul la te deplase soti nan (x= 0, y=25) pa (x= 6, y=26), valè x и y detèmine vektè mouvman an. Yon lòt etap nou ka fè pou prezève Bits se kode sèlman diferans nan vektè mouvman ant dènye pozisyon blòk la ak youn nan prevwa a, kidonk vektè mouvman final la pral (x=6-0=6, y=26-25=1). ).

Nan yon sitiyasyon reyèl, boul sa a ta divize an n blòk, men sa a pa chanje sans nan pwoblèm nan.

Objè nan ankadreman an deplase nan twa dimansyon, kidonk lè boul la deplase, li ka vin vizyèlman pi piti (oswa pi gwo si li deplase nan direksyon pou visualiseur la). Li nòmal ke pa pral gen yon match pafè ant blòk yo. Isit la se yon View konbine nan estimasyon nou an ak foto reyèl la.

Ki jan yon codec videyo travay? Pati 1: Basics

Men, nou wè ke lè nou itilize estimasyon mouvman, gen anpil mwens done pou kodaj pase lè w ap itilize yon metòd ki pi senp pou kalkile delta ant ankadreman yo.

Ki jan yon codec videyo travay? Pati 1: Basics

Ki konpansasyon mosyon reyèl ta sanble

Teknik sa a aplike nan tout blòk an menm tan. Souvan boul kondisyonèl k ap deplase nou an ap divize an plizyè blòk an menm tan.

Ki jan yon codec videyo travay? Pati 1: Basics

Ou ka jwenn yon santiman pou konsèp sa yo tèt ou lè l sèvi avèk jupyter.

Pou wè vektè mouvman, ou ka kreye yon videyo prediksyon ekstèn lè l sèvi avèk ffmpeg.

Ki jan yon codec videyo travay? Pati 1: Basics

Ou ka itilize tou Intel Videyo Pro Analyzer (li peye, men gen yon esè gratis ki limite a sa sèlman dis premye ankadreman yo sèlman).

Ki jan yon codec videyo travay? Pati 1: Basics

Redondans espasyal (previzyon entèn)

Si nou analize chak ankadreman nan yon videyo, n ap jwenn anpil zòn ki konekte.

Ki jan yon codec videyo travay? Pati 1: Basics

Ann ale nan egzanp sa a. Sèn sa a sitou konsiste de koulè ble ak blan.

Ki jan yon codec videyo travay? Pati 1: Basics

Sa a se yon I-frame. Nou pa ka pran ankadreman anvan yo pou prediksyon, men nou ka konprese li. Ann kode seleksyon an nan blòk wouj la. Si nou gade nan vwazen li yo, nou remake ke gen kèk tandans koulè alantou li.

Ki jan yon codec videyo travay? Pati 1: Basics

Nou sipoze ke koulè gaye vètikal nan ankadreman an. Ki vle di koulè piksèl enkoni yo pral genyen valè vwazen li yo.

Ki jan yon codec videyo travay? Pati 1: Basics

Yon pwevwa konsa ka tounen kòrèk. Se pou rezon sa a ke ou bezwen aplike metòd sa a (pwevwa entèn), ak Lè sa a, soustraksyon valè yo reyèl. Sa a pral ban nou yon blòk rezidyèl, ki pral lakòz yon matris pi plis konprese konpare ak orijinal la.

Ki jan yon codec videyo travay? Pati 1: Basics

Si ou vle pratike ak prediksyon entèn yo, ou ka kreye yon videyo nan macroblocks ak prediksyon yo lè l sèvi avèk ffmpeg. Pou konprann siyifikasyon chak koulè blòk, w ap oblije li dokiman ffmpeg la.

Ki jan yon codec videyo travay? Pati 1: Basics

Oswa ou ka itilize Intel Video Pro Analyzer (jan mwen mansyone pi wo a, vèsyon an esè gratis limite a sa sèlman 10 premye ankadreman yo, men sa a pral ase pou ou nan premye).

Ki jan yon codec videyo travay? Pati 1: Basics

Dezyèm pati a: Ki jan codec videyo a ap travay

Sous: www.habr.com

Add nouvo kòmantè