Sehemu ya pili:
Raster yoyote picha inaweza kuwakilishwa katika fomu tumbo la pande mbili. Linapokuja suala la rangi, wazo linaweza kuendelezwa kwa kuangalia picha kama matrix ya pande tatu, ambapo vipimo vya ziada hutumiwa kuhifadhi data kwa kila rangi.
Ikiwa tunazingatia rangi ya mwisho kama mchanganyiko wa kinachojulikana. rangi za msingi (nyekundu, kijani na bluu), katika matrix yetu ya tatu-dimensional tunafafanua ndege tatu: ya kwanza kwa nyekundu, ya pili kwa kijani na ya mwisho kwa bluu.
Tutaita kila nukta kwenye tumbo hili pikseli (kipengele cha picha). Kila pikseli ina maelezo kuhusu ukubwa (kawaida kama nambari ya nambari) ya kila rangi. Kwa mfano, pikseli nyekundu ina maana kwamba ina 0 kijani, 0 bluu na upeo nyekundu. Pikseli ya waridi inaweza kuundwa kwa kutumia mchanganyiko wa rangi tatu. Kwa kutumia safu ya nambari kutoka 0 hadi 255, pikseli ya waridi inafafanuliwa kama Nyekundu = 255, Kijani = 192 и Bluu = 203.
Makala haya yalichapishwa kwa usaidizi wa EDISON.Tunaendeleza , na pia tumechumbiana .
Njia mbadala za kusimba picha ya rangi
Kuna mifano mingine mingi ya kuwakilisha rangi zinazounda picha. Kwa mfano, unaweza kutumia palette ya faharasa, ambayo inahitaji byte moja tu kuwakilisha kila pikseli, badala ya tatu zinazohitajika wakati wa kutumia mfano wa RGB. Katika mfano kama huu, inawezekana kutumia matrix ya 2D badala ya matrix ya 3D kuwakilisha kila rangi. Hii inaokoa kumbukumbu, lakini inatoa rangi ndogo ya gamut.

RGB
Kwa mfano, angalia picha hii hapa chini. Uso wa kwanza ni rangi kabisa. Nyingine ni ndege nyekundu, kijani na bluu (ukali wa rangi zinazofanana huonyeshwa kwa kijivu).

Tunaona kwamba vivuli vya rangi nyekundu katika asili vitakuwa katika maeneo sawa ambapo sehemu za mkali zaidi za uso wa pili zinazingatiwa. Wakati mchango wa bluu unaweza kuonekana tu kwa macho ya Mario (uso wa mwisho) na vipengele vya mavazi yake. Angalia ambapo ndege zote tatu za rangi huchangia kidogo (sehemu nyeusi zaidi za picha) - masharubu ya Mario.
Ili kuhifadhi ukali wa kila rangi, idadi fulani ya bits inahitajika - kiasi hiki kinaitwa kina kidogo. Wacha tuseme bits 8 zinatumika (kulingana na thamani kutoka 0 hadi 255) kwa kila ndege ya rangi. Kisha tuna kina cha rangi ya bits 24 (8 bits * 3 R/G/B ndege).
Sifa nyingine ya picha ni azimio, ambayo ni idadi ya saizi katika mwelekeo mmoja. Mara nyingi huonyeshwa kama upana × urefu, kama katika picha ya 4 kwa 4 hapa chini.

Sifa nyingine tunayoshughulika nayo tunapofanya kazi na picha/video ni uwiano wa kipengele, ikielezea uhusiano wa kawaida wa sawia kati ya upana na urefu wa picha au pikseli.
Wanaposema kwamba filamu au picha fulani ina ukubwa wa 16 kwa 9, huwa wanamaanisha uwiano wa kipengele cha kuonyesha (DAR - kutoka Uwiano wa Maonyesho) Hata hivyo, wakati mwingine kunaweza kuwa na maumbo tofauti ya saizi ya mtu binafsi - katika kesi hii tunazungumzia uwiano wa pixel (PAR - kutoka Uwiano wa Pixel).


Kumbuka kwa mhudumu: DVD inafanana na DAR 4 hadi 3
Ingawa azimio halisi la DVD ni 704x480, bado ina uwiano wa 4:3 kwa sababu PAR ni 10:11 (704x10 / 480x11).
Na hatimaye, tunaweza kuamua video kama mlolongo wa n muafaka kwa kipindi hicho wakati, ambayo inaweza kuchukuliwa kuwa mwelekeo wa ziada. A n basi ni kasi ya fremu au idadi ya fremu kwa sekunde (Ramprogrammen - kutoka Muafaka kwa sekunde).

Idadi ya biti kwa sekunde inayohitajika ili kuonyesha video ni yake kasi ya maambukizi - bitrate.
bitrate = upana * urefu * kina kidogo * fremu kwa sekunde
Kwa mfano, ramprogrammen 30, bps 24, 480x240 video itahitaji bps 82,944,000 au 82,944 Mbps (30x480x240x24) - lakini hiyo ikiwa hakuna mbinu ya kubana inayotumika.
Ikiwa kasi ya uhamishaji karibu mara kwa mara, basi inaitwa kasi ya maambukizi ya mara kwa mara (CBR - kutoka kiwango cha biti mara kwa mara) Lakini pia inaweza kutofautiana, katika kesi hii inaitwa kiwango cha baud tofauti (VBR - kutoka kiwango kidogo cha kutofautiana).
Grafu hii inaonyesha VBR ndogo, ambapo si biti nyingi sana zinazopotea katika hali ya fremu nyeusi kabisa.

Hapo awali wahandisi walitengeneza mbinu ya kuongeza kasi ya fremu maradufu ya onyesho la video bila kutumia kipimo data cha ziada. Njia hii inajulikana kama video iliyounganishwa; Kimsingi, hutuma nusu ya skrini kwenye "frame" ya kwanza na nusu nyingine kwenye "frame" inayofuata.
Hivi sasa, matukio mengi yanatolewa kwa kutumia teknolojia ya skanning inayoendelea. Ni njia ya kuonyesha, kuhifadhi au kusambaza picha zinazosonga ambapo mistari yote ya kila fremu huchorwa kwa mfuatano.

Vizuri! Sasa tunafahamu jinsi picha inavyowakilishwa kidijitali, jinsi rangi zake zinavyopangwa, ni biti ngapi kwa sekunde tunazotumia kuonyesha video, ikiwa kiwango cha biti ni mara kwa mara (CBR) au kutofautiana (VBR). Tunajua kuhusu azimio fulani kwa kutumia kasi fulani ya fremu, tunafahamu masharti mengine mengi, kama vile video iliyounganishwa, PAR na baadhi ya mengine.
Kuondoa upungufu
Inajulikana kuwa video bila compression haiwezi kutumika kawaida. Video ya saa moja katika azimio la 720p na fremu 30 kwa sekunde itachukua GB 278. Tunafikia thamani hii kwa kuzidisha 1280 x 720 x 24 x 30 x 3600 (upana, urefu, biti kwa pikseli, ramprogrammen na wakati kwa sekunde).
Matumizi ya algorithms ya compression isiyo na hasara, kama vile DEFLATE (inayotumika katika PKZIP, Gzip na PNG), haitapunguza kipimo data kinachohitajika vya kutosha. Tunapaswa kutafuta njia zingine za kubana video.
Kwa kufanya hivyo, unaweza kutumia vipengele vya maono yetu. Sisi ni bora kutofautisha mwangaza kuliko rangi. Video ni mfululizo wa picha zinazofuatana zinazojirudia baada ya muda. Kuna tofauti ndogo kati ya fremu zilizo karibu za eneo moja. Zaidi ya hayo, kila fremu ina maeneo mengi kwa kutumia rangi sawa (au sawa).
Rangi, mwangaza na macho yetu
Macho yetu ni nyeti zaidi kwa mwangaza kuliko rangi. Unaweza kujionea haya kwa kutazama picha hii.

Ikiwa hauoni kwamba kwenye nusu ya kushoto ya picha rangi za miraba A и B kwa kweli ni sawa, basi hiyo ni kawaida. Ubongo wetu hutulazimisha kuzingatia zaidi mwanga na kivuli badala ya rangi. Kwenye upande wa kulia kati ya mraba uliowekwa kuna jumper ya rangi sawa - kwa hiyo sisi (yaani ubongo wetu) huamua kwa urahisi kwamba, kwa kweli, ni rangi sawa.
Hebu tuangalie (kwa njia iliyorahisishwa) jinsi macho yetu yanavyofanya kazi. Jicho ni kiungo changamano chenye sehemu nyingi. Walakini, tunavutiwa zaidi na mbegu na vijiti. Jicho lina vijiti milioni 120 na koni milioni 6.
Wacha tuzingatie mtazamo wa rangi na mwangaza kama kazi tofauti za sehemu fulani za jicho (kwa kweli, kila kitu ni ngumu zaidi, lakini tutarahisisha). Seli za fimbo zinawajibika kwa mwangaza, wakati seli za koni zinawajibika kwa rangi. Cones imegawanywa katika aina tatu, kulingana na rangi iliyo nayo: S-cones (bluu), M-cones (kijani), na L-cones (nyekundu).
Kwa kuwa tuna vijiti vingi zaidi (mwangaza) kuliko mbegu (rangi), tunaweza kuhitimisha kuwa tuna uwezo zaidi wa kutofautisha mabadiliko kati ya giza na mwanga kuliko rangi.
Vipengele vya Unyeti wa Tofauti
Watafiti katika saikolojia ya majaribio na nyanja zingine nyingi wameunda nadharia nyingi za maono ya mwanadamu. Na mmoja wao anaitwa kazi za unyeti tofauti. Zinahusiana na mwanga wa anga na wa muda. Kwa kifupi, ni kuhusu mabadiliko mangapi yanahitajika kabla ya mwangalizi kuyatambua. Kumbuka wingi wa neno "kazi". Hii ni kutokana na ukweli kwamba tunaweza kupima kazi za unyeti tofauti sio tu kwa picha nyeusi na nyeupe, bali pia kwa rangi. Matokeo ya majaribio haya yanaonyesha kuwa katika hali nyingi macho yetu ni nyeti zaidi kwa mwangaza kuliko rangi.
Kwa kuwa tunajua kwamba sisi ni nyeti zaidi kwa mwangaza wa picha, tunaweza kujaribu kutumia ukweli huu.
Mfano wa rangi
Tulifikiria kidogo jinsi ya kufanya kazi na picha za rangi kwa kutumia mpango wa RGB. Kuna mifano mingine pia. Kuna modeli inayotenganisha mwangaza kutoka kwa chroma na inajulikana kama YCbCr. Kwa njia, kuna mifano mingine ambayo hufanya mgawanyiko sawa, lakini tutazingatia hii tu.
Katika mfano huu wa rangi Y ni uwakilishi wa mwangaza, na pia hutumia njia mbili za rangi: Cb (bluu tajiri) na Cr (nyekundu tajiri). YCbCr inaweza kutolewa kutoka kwa RGB, na ubadilishaji wa kinyume pia unawezekana. Kwa kutumia mtindo huu tunaweza kuunda picha za rangi kamili kama tunavyoona hapa chini:

Badilisha kati ya YCbCr na RGB
Mtu atapinga: inawezekanaje kupata rangi zote ikiwa kijani haitumiki?
Ili kujibu swali hili, hebu tubadilishe RGB hadi YCbCr. Wacha tutumie coefficients iliyopitishwa katika kiwango 601, ambayo ilipendekezwa na kitengo ITU-R. Kitengo hiki kinaweka viwango vya video dijitali. Kwa mfano: 4K ni nini? Kiwango cha fremu kinapaswa kuwa nini, azimio, mtindo wa rangi?
Kwanza hebu tuhesabu mwangaza. Wacha tutumie viboreshaji vilivyopendekezwa na ITU na tubadilishe maadili ya RGB.
Y = 0.299R + 0.587G + 0.114B
Baada ya kuwa na mwangaza, tutatenganisha rangi ya bluu na nyekundu:
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
Na tunaweza pia kubadilisha nyuma na hata kupata kijani kwa kutumia YCbCr:
R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr
Kwa kawaida, maonyesho (wachunguzi, TV, skrini, nk) hutumia tu mfano wa RGB. Lakini mfano huu unaweza kupangwa kwa njia tofauti:

Sampuli ndogo za rangi
Kwa picha inayowakilishwa kama mseto wa mwangaza na krominansi, tunaweza kutumia unyeti mkubwa zaidi wa mfumo wa kuona wa binadamu wa kuangazia kuliko krominansi kwa kuondoa maelezo kwa kuchagua. Sampuli ndogo za Chroma ni mbinu ya kusimba picha kwa kutumia mwonekano mdogo wa chroma kuliko mwangaza.

Je, ni kiasi gani kinaruhusiwa kupunguza azimio la rangi? Inageuka kuwa tayari kuna michoro kadhaa zinazoelezea jinsi ya kushughulikia azimio na kuunganisha (Rangi inayosababisha = Y + Cb + Cr).
Miradi hii inajulikana kama mifumo ya kupunguza sampuli na zinaonyeshwa kama uwiano wa mara 3 - a:x:y, ambayo huamua idadi ya sampuli za mwangaza na ishara za tofauti za rangi.
a - kiwango cha sampuli mlalo (kawaida ni sawa na 4)
x - idadi ya sampuli za chroma katika safu mlalo ya kwanza ya saizi (azimio mlalo linalohusiana na a)
y — idadi ya mabadiliko katika sampuli za chroma kati ya safu mlalo ya kwanza na ya pili ya saizi.
Isipokuwa ni 4:1:0, kutoa sampuli moja ya chroma katika kila kizuizi cha azimio la 4-kwa-4.
Miradi ya kawaida inayotumika katika kodeki za kisasa:
- 4:4:4 (hakuna sampuli ndogo)
- 4:2:2
- 4:1:1
- 4:2:0
- 4:1:0
- 3:1:1
YCbCr 4:2:0 - mfano wa mchanganyiko
Hapa kuna picha iliyounganishwa kwa kutumia YCbCr 4:2:0. Kumbuka kuwa tunatumia biti 12 pekee kwa pikseli.
Hivi ndivyo picha sawa inaonekana, iliyosimbwa na aina kuu za sampuli ndogo za rangi. Safu ya kwanza ni YCbCr ya mwisho, safu ya chini inaonyesha azimio la chroma. Matokeo ya heshima sana, kwa kuzingatia hasara kidogo katika ubora.

Je! unakumbuka tulipohesabu GB 278 za nafasi ya kuhifadhi ili kuhifadhi faili ya video ya saa moja katika ubora wa 720p na fremu 30 kwa sekunde? Ikiwa tunatumia YCbCr 4:2:0, basi ukubwa huu utapunguzwa kwa nusu - 139 GB. Hadi sasa, bado ni mbali na matokeo yanayokubalika.
Unaweza kupata histogram ya YCbCr mwenyewe kwa kutumia FFmpeg. Katika picha hii, bluu inatawala juu ya nyekundu, ambayo inaonekana wazi katika histogram yenyewe.

Rangi, mwangaza, rangi ya gamut - mapitio ya video
Tunapendekeza kutazama video hii ya kupendeza. Inaelezea mwangaza ni nini, na kwa ujumla dots zote zimepigwa ё kuhusu mwangaza na rangi.
Aina za Fremu
Hebu tuendelee. Wacha tujaribu kuondoa upotezaji wa wakati. Lakini kwanza, hebu tufafanue baadhi ya istilahi za kimsingi. Wacha tuseme tunayo sinema yenye fremu 30 kwa sekunde, hizi hapa ni fremu zake 4 za kwanza:

Tunaweza kuona marudio mengi katika viunzi: kwa mfano, mandharinyuma ya bluu ambayo haibadiliki kutoka kwa fremu hadi fremu. Ili kutatua tatizo hili, tunaweza kuziainisha katika aina tatu za fremu.
Muundo wa I (Intro Frame)
I-frame (fremu ya kumbukumbu, fremu ya ufunguo, sura ya ndani) inajitosheleza. Bila kujali unataka kuona nini, sura ya I kimsingi ni picha tuli. Fremu ya kwanza kwa kawaida ni I-frame, lakini tutazingatia mara kwa mara fremu za I hata kati ya zisizo za kwanza.

P-frame (PFremu iliyorekebishwa)
P-frame (sura ya utabiri) inachukua faida ya ukweli kwamba karibu kila mara picha ya sasa inaweza kuzalishwa kwa kutumia sura ya awali. Kwa mfano, katika sura ya pili mabadiliko pekee ni mpira kusonga mbele. Tunaweza kupata fremu 2 kwa kurekebisha kidogo fremu 1, kwa kutumia tu tofauti kati ya viunzi hivi. Ili kuunda sura ya 2, tunarejelea fremu iliyotangulia 1.
← 
B-frame (BMfumo wa utabiri)
Vipi kuhusu viungo sio tu vya zamani, lakini pia kwa muafaka wa siku zijazo ili kutoa ukandamizaji bora zaidi?! Hii kimsingi ni B-frame (fremu ya pande mbili).
←
→ 
Pato la kati
Aina hizi za fremu hutumiwa kutoa ukandamizaji bora zaidi. Tutaangalia jinsi hii inavyotokea katika sehemu inayofuata. Kwa sasa, hebu tukumbuke kwamba "ghali" zaidi kwa suala la kumbukumbu inayotumiwa ni sura ya I, sura ya P ni ya bei nafuu, lakini chaguo la faida zaidi kwa video ni B-frame.

Upungufu wa muda (utabiri wa kati ya fremu)
Wacha tuangalie ni chaguzi gani tunazo ili kupunguza kurudia kwa wakati. Tunaweza kutatua aina hii ya upungufu kwa kutumia mbinu za ubashiri.
Tutajaribu kutumia biti chache iwezekanavyo ili kusimba mlolongo wa fremu 0 na 1.

Tunaweza kuzalisha kutoa, tunatoa tu sura 1 kutoka kwa fremu 0. Tunapata fremu 1, tumia tu tofauti kati yake na fremu iliyotangulia, kwa kweli tunasimba masalio yanayotokana tu.

Lakini vipi ikiwa ningekuambia kuwa kuna njia bora zaidi ambayo hutumia bits chache zaidi?! Kwanza, hebu tuvunje sura 0 kwenye gridi ya wazi inayojumuisha vizuizi. Na kisha tutajaribu kufanana na vitalu kutoka kwa sura 0 na sura ya 1. Kwa maneno mengine, tutakadiria harakati kati ya muafaka.
Kutoka Wikipedia - fidia ya mwendo wa kuzuia
Fidia ya mwendo wa kuzuia hugawanya fremu ya sasa katika vizuizi visivyopishana na vekta ya fidia ya mwendo huripoti asili ya vizuizi (dhana potofu ya kawaida ni kwamba uliopita fremu imegawanywa katika vizuizi visivyopishana, na vekta za fidia ya mwendo hueleza mahali ambapo vizuizi hivyo vinaenda. Lakini kwa kweli, ni kinyume chake - sio sura iliyotangulia ambayo inachambuliwa, lakini inayofuata; haijulikani wazi ambapo vizuizi vinasonga, lakini vilitoka wapi). Kwa kawaida vizuizi vya chanzo hupishana katika fremu ya chanzo. Baadhi ya algoriti za ukandamizaji wa video hukusanya fremu ya sasa kutoka sehemu za hata moja, lakini fremu kadhaa zilizopitishwa hapo awali.

Wakati wa mchakato wa tathmini, tunaona kwamba mpira umetoka (x= 0, y=25) hadi (x= 6, y=26), maadili x и y kuamua vector ya mwendo. Hatua nyingine tunayoweza kufanya ili kuhifadhi biti ni kusimba tofauti tu ya vidhibiti vya mwendo kati ya nafasi ya mwisho ya kuzuia na ile iliyotabiriwa, kwa hivyo vekta ya mwisho ya mwendo itakuwa (x=6-0=6, y=26-25=1). )
Katika hali halisi, mpira huu ungegawanywa n vitalu, lakini hii haibadilishi kiini cha jambo hilo.
Vitu vilivyo kwenye fremu husogea katika vipimo vitatu, kwa hivyo wakati mpira unaposonga, unaweza kuwa mdogo mwonekano (au mkubwa zaidi ukisogea kuelekea mtazamaji). Ni kawaida kwamba hakutakuwa na mechi kamili kati ya vitalu. Huu hapa ni mtazamo wa pamoja wa makadirio yetu na picha halisi.

Lakini tunaona kwamba tunapotumia ukadiriaji wa mwendo, kuna data ndogo sana ya kusimba kuliko wakati wa kutumia njia rahisi ya kukokotoa delta kati ya fremu.

Fidia ya mwendo halisi ingeonekanaje
Mbinu hii inatumika kwa vitalu vyote mara moja. Mara nyingi mpira wetu wa kusonga kwa masharti utagawanywa katika vitalu kadhaa mara moja.

Unaweza kupata hisia kwa dhana hizi mwenyewe kwa kutumia .
Ili kuona vekta za mwendo, unaweza kuunda video ya utabiri wa nje ukitumia .

Unaweza pia kutumia (imelipiwa, lakini kuna jaribio lisilolipishwa ambalo limezuiliwa kwa fremu kumi za kwanza pekee).

Upungufu wa nafasi (utabiri wa ndani)
Ikiwa tutachambua kila fremu kwenye video, tutapata maeneo mengi yaliyounganishwa.

Hebu tupitie mfano huu. Eneo hili hasa lina rangi ya bluu na nyeupe.

Hii ni sura ya I. Hatuwezi kuchukua muafaka uliopita kwa utabiri, lakini tunaweza kuubana. Hebu tusindike uteuzi wa block nyekundu. Ikiwa tunatazama majirani zake, tunaona kwamba kuna baadhi ya mwelekeo wa rangi karibu nayo.

Tunadhani kwamba rangi huenea wima kwenye fremu. Inayomaanisha kuwa rangi ya saizi zisizojulikana itakuwa na maadili ya majirani zake.

Utabiri kama huo unaweza kugeuka kuwa sio sahihi. Ni kwa sababu hii kwamba unahitaji kutumia njia hii (utabiri wa ndani), na kisha uondoe maadili halisi. Hii itatupa kizuizi cha mabaki, ambacho kitasababisha matrix iliyoshinikizwa zaidi ikilinganishwa na asili.

Ikiwa unataka kufanya mazoezi na utabiri wa ndani, unaweza kuunda video ya macroblocks na utabiri wao kwa kutumia ffmpeg. Ili kuelewa maana ya kila rangi ya block, itabidi usome hati za ffmpeg.

Au unaweza kutumia Intel Video Pro Analyzer (kama nilivyotaja hapo juu, toleo la majaribio ya bure ni mdogo kwa muafaka 10 wa kwanza, lakini hii itakuwa ya kutosha kwako mwanzoni).

Sehemu ya pili:
Chanzo: mapenzi.com



