Кіріспе
YCbCr, Y′CbCr немесе Y Pb/Cb Pr/Cr, сондай-ақ YCBCR немесе Y′CBCR деп жазылатын, – цифрлық түс кеңістіктерінің отбасы. Бұл отбасы бейне және цифрлық фотосурет жүйелеріндегі түстік бейне өңдеу тізбегінің бір бөлігі ретінде қолданылады. Y′ – жарықтық компоненті, ал CB және CR – көк түстің және қызыл түстің айырмашылықтарын көрсететін хрома компоненттері. Y′ (штрихпен) жарықтықтан (Y) ерекшеленеді, себебі жарықтық интенсивтілігі гамма түзетілген RGB бастапқы түстеріне сүйене отырып, сызықтық емес түрде кодталады. Y′CbCr түс кеңістіктері математикалық координаталық түрлендіру арқылы анықталады, ол белгілі бір RGB бастапқы түстерімен және ақ нүктемен байланысты. Егер негізгі RGB түс кеңістігі абсолютті болса, Y′CbCr түс кеңістігі де абсолютті болады; керісінше, егер RGB кеңістігі дұрыс анықталмаса, Y′CbCr да дұрыс анықталмайды. Түрлендіру ITU T H.273 стандартының 32, 33-теңдеулерінде сипатталған. Алайда, бұл ереже Netflix-тің BT.2020 NCL матрицасымен қолданатын P3 D65 бастапқы түстеріне қатысты емес, яғни бұл матрица бастапқы түстерден туындамаған. Бірақ қазір Netflix BT.2020 бастапқы түстерін қолдануға рұқсат береді (2021 жылдан бастап). JPEG үшін де осыған ұқсас жағдай орын алады: оның BT.601 матрицасы System M бастапқы түсінен алынған, бірақ көптеген кескіндердің бастапқы түсі BT.709 болып табылады.
YCbCr, Y′CbCr, or Y Pb/Cb Pr/Cr, also written as YCBCR or Y′CBCR, is a family of color spaces used as a part of the color image pipeline in video and digital photography systems. Y′ is the luma component and CB and CR are the blue difference and red difference chroma components. Y′ (with prime) is distinguished from Y, which is luminance, meaning that light intensity is nonlinearly encoded based on gamma corrected RGB primaries. Y′CbCr color spaces are defined by a mathematical coordinate transformation from an associated RGB primaries and white point. If the underlying RGB color space is absolute, the Y′CbCr color space is an absolute color space as well; conversely, if the RGB space is ill defined, so is Y′CbCr. The transformation is defined in equations 32, 33 in ITU T H.273. Nevertheless that rule does not apply to P3 D65 primaries used by Netflix with BT.2020 NCL matrix, so that means matrix was not derived from primaries, but now Netflix allows BT.2020 primaries (since 2021). The same happens with JPEG: it has BT.601 matrix derived from System M primaries, yet the primaries of most images are BT.709.
Негізгі себептері
Катодты сәулелі түтік дисплейлері қызыл, жасыл және көк кернеу сигналдарымен басқарылады, бірақ бұл RGB сигналдары сақтау және тарату үшін тиімді емес, себебі оларда көптеген артық ақпараттар бар. YCbCr және Y′CbCr – түс өңдеу және қабылдау біркелкілігіне қолданылатын практикалық жуықтама, онда қызыл, жасыл және көк түстерге сәйкес келетін бастапқы түстер қабылдауға маңызды ақпаратқа айналдырылады. Осы арқылы, келесі бейне өңдеу, тарату және сақтау операциялары қабылдауға түсінікті қателерді енгізе отырып, жүзеге асырылуы мүмкін. Y′CbCr жоғары ажыратымдылықпен сақталатын немесе жоғары өткізгіштікпен берілетін люма сигналын (Y′) және өткізгіштікті азайтуға, үлестіруге, сығуға немесе жүйе тиімділігін арттыру үшін бөлек өңдеуге болатын екі хрома компонентін (CB және CR) бөліп шығару үшін қолданылады. Мысалы, адамдар қара-ақ ақпаратқа көбірек сезімтал болғандықтан, "қара-ақ" ақпаратына қарағанда "түске" бөлінген өткізгіштік немесе ажыратымдылықты төмендетуге болады (оң жақтағы сурет мысалында көрсетілген). Бұл хромалық іріктеу деп аталады.
КбКр
YCbCr кейде YCC деп қысқартылады. Көбінесе Y′CbCr, YCbCr, YPbPr және YUV терминдері бір-бірін алмастырып қолданылады, бұл шатасуға себеп болуы мүмкін. Басты айырмашылық – YPbPr аналогтық кескіндермен, ал YCbCr цифрлық кескіндермен қолданылады, нәтижесінде YUV-қа және YUV-дан түрлендіру кезінде Umax және Vmax-тың (YCbCr-де олардың екеуі де) масштабталу мәндері әртүрлі болады. Y′CbCr мен YCbCr арасындағы айырмашылық мәндердің гамма-түзетуден өтуіне байланысты. Төмендегі теңдеулер осы форматтардың ортақ принциптерін және жалпы айырмашылықтарын жақсы түсіндіреді.
Y′PbPr-ден Y′CbCr-ге дейін
Цифрлық формада сигналдарды бейнелегенде, нәтижелер масштабталады және дөңгелектенеді, сондай-ақ офсеттер әдетте қосылады. Мысалы, Y′ компонентіне қолданылатын масштабтау және офсет (мысалы, MPEG 2 спецификациясы бойынша) 8 биттік бейнелеуді қолданғанда қара түс үшін 16 мәнін, ал ақ түс үшін 235 мәнін береді. Стандартта CB және CR компоненттерінің 8 биттік цифрланған нұсқалары бар, олар 16-дан 240-қа дейінгі диапазонға дейін масштабталған. Осыдан келіп, YCbCr кеңістігінде түс матрицасын немесе өңдеуді жүргізген кезде кейде (235-16)/(240-16) = 219/224 бөлшегімен қайта масштабтау қажет болады, бұл одан кейінгі өңдеу жоғары биттік тереңдікті пайдаланбаған жағдайда кванттау бұрмалануына әкелуі мүмкін. Кіріс деректерінің номиналды диапазонын көрсету үшін қажетті болып көрінетін сандық мәндердің кіші диапазонын пайдалануды қамтамасыз ететін масштабтау, өңдеу кезінде қажетсіз кесуді болдырмай, белгілі бір "асып кетуге" және "жетіспеуге" мүмкіндік береді. Бұл "қосымша кеңістік" және "төменгі кеңістік" xvYCC спецификациясында көрсетілгендей, номиналды түс гаммасын кеңейту үшін де пайдаланылуы мүмкін. 235 мәні (255-235)/(235-16) = 9,1%-ға дейінгі максималды асып кетуді қамтиды, бұл максималды (қарадан аққа) қадамның шамамен 8,9%-ын құрайтын теориялық максималды асып кетуден (Гиббс құбылысы) сәл артық. "Төменгі кеңістік" кішірек, тек 16/219 = 7,3% асып кетуге рұқсат береді, бұл теориялық максималды 8,9% асып кетуден кем. Сонымен қатар, 0 және 255 мәндері HDMI-де резервтелгендіктен, қолданылатын кеңістік аздап кішірек.
Y′CbCr-ден xvYCC-ге дейін
Y′CbCr теңдеулерін анықтайтын формулалар номиналды RGB түс текшесін айналдырып, оны үлкен YCbCr түс текшесіне сыйғызу үшін құрастырылғандықтан, Y′CbCr түс текшесінде тиісті RGB доменінде (кем дегенде номиналды RGB диапазонында) бейнеленбейтін кейбір нүктелер болады. Бұл кейбір Y′CbCr сигналдарын дұрыс түсіндіру және көрсету қиындықтарын тудырады. xvYCC осы диапазоннан тыс Y′CbCr мәндерін BT.709 түс кеңістігінен тыс түстерді кодтау үшін пайдаланады.
ITU-R BT.709 түрлендіру
Y′CbCr-дің басқа бір түрі ITU R BT.709 стандартында, негізінен HDTV қолдануы үшін белгіленген. Жаңа форма кейбір компьютерлік дисплейге бағытталған қолданбаларда sRGB ретінде де қолданылады (дегенмен sRGB түріндегі YCbCr үшін қолданылатын матрица, sYCC, әлі де BT.601 болып табылады). Бұл жағдайда Kb және Kr мәндері өзгеше, бірақ оларды қолдану формулалары бірдей. ITU R BT.709 үшін тұрақты шамалар:
Бұл Y′CbCr түрі, жаңа CRT және басқа да қазіргі заманғы дисплей құралдарының люминофор шығарылым сипаттамаларына жақын келетін RGB моделіне негізделген. BT.709 үшін түрлендіру матрицалары келесідей:
R', G' және B' сигналдарының анықтамалары BT.709 және BT.601 арасында да, тіпті BT.601 ішінде қолданылатын теледидар жүйесі түріне (PAL және SECAM үшін 625 жол немесе NTSC үшін 525 жол) байланысты да, сондай-ақ басқа да техникалық талаптарға қарай да өзгеше. Әртүрлі конструкцияларда R, G және B хроматикалық координаталарының анықтамалары, эталондық ақ нүкте, қолдау көрсетілетін түс кеңістігі, R', G' және B' алу үшін R, G және B-дан гамма алдын ала түзету функциялары, сондай-ақ R'G'B'-ден Y′CbCr-ге түрлендіру кезінде қолданылатын масштабтау және ығысулар бойынша айырмашылықтар бар. Сондықтан Y′CbCr-ді бір формадан екінші формаға дұрыс түрлендіру үшін бір матрицаны инверсиялау және екіншісін қолдану жеткіліксіз. Шындығында, Y′CbCr идеалды түрде жобаланғанда, KB және KR мәндері RGB түсті бастапқы сигналдардың нақты сипаттамасынан туындайды, осылайша люма (Y′) сигналы гамма түзетілген жарықтылық өлшеміне мүмкіндігінше жақын болады (әдетте CIE 1931 бойынша адамның көру жүйесінің түс стимулдарына жауабының өлшемдеріне негізделген).
BT.470-6 жүйесінің B, G бастапқы коэффициенттері
Бұл коэффициенттер қолданылмайды және ешқашан қолданылмаған.
Хроматикадан алынған жарық беру жүйелері
H.273 сонымен қатар негізгі түстер мен ақ нүктеден тікелей туындайтын тұрақты және өзгермелі жарық шашырау жүйелерін сипаттайды, осылайша JPEG-те қолданылатын sRGB/BT.709 стандартты негізгі түстері сияқты, BT.601 матрицасын (BT.470 6 System M-ден алынған) пайдалану сияқты жағдайлардың пайда болуына жол бермейді.
Сандық шамалау
Жылдам SIMD қозғалмалы нүктелі процессорлар жасалғанға дейін, RGB → Y′UV цифрлық іске асырылымдарының көпшілігі бүтін сан математикасын, әсіресе белгілі бір мәнді жуықтауды қолданды. Жуықтау дегеніміз – қолданылатын сандардың (кіріс деректері, шығыс деректері және тұрақты мәндер) дәлдігі шектеулі, сондықтан әдетте соңғы екілік цифрдың дәлдігін жоғалтуға келісіледі, бұл опцияны пайдаланушылардың есебінен, көбінесе есептеу жылдамдығын арттыру үшін жасалады. Y′ мәндері [0, 255] толық диапазонын пайдаланудың орнына, [16, 235] (студиялық ауытқу немесе "ТВ деңгейлері" деп аталады) диапазонына жылдырылып, масштабталады (толық ауытқу немесе "PC деңгейлері" деп аталады). Бұл тәжірибе SMPTE 125M стандартында сүзгілеуден туындаған сигналдың шамадан асып кетуіне ("қоңырау" құбылысы) бейімделу үшін стандартталды. U және V мәндері оң немесе теріс болуы мүмкін, оларды әрқашан оң мәнге ие ету үшін 128-ге қосылады, нәтижесінде U және V үшін 16–240 студиялық диапазоны пайда болады. (Бұл диапазондар бейнемонтаждау және өндірісте маңызды, себебі дұрыс емес диапазонды қолдану "қиылып" кеткен" қара және ақ түстерге немесе төмен контрастты кескінді тудыруы мүмкін.)
BT.601 үшін шамамен 8-биттік матрицалар
Бұл матрицалар барлық коэффициенттерді ең жақын 1/256 бөлікке дейін дөңгелектейді. Осының нәтижесінде, әр компонент үшін бір ғана 16 биттік аралық мән пайда болады, ал дөңгелектеумен бірге оңға жылжыту бөлу амалын орындауға мүмкіндік береді.
Қаптамаланған пиксель пішімдері және түрлендіру
RGB файлдары әдетте пикселге 8, 12, 16 немесе 24 битпен кодталады. Осы мысалдарда біз пикселге 24 бит деп қарастырамыз, бұл RGB888 деп жазылады. Стандартты байт форматы жай ғана r0, g0, b0, r1, g1, b1 болып табылады.
YCbCr жинақы пиксел форматтары көбінесе "YUV" деп аталады. Мұндай файлдар пикселге 12, 16 немесе 24 битпен кодталуы мүмкін. Субсемплингке байланысты форматтарды негізінен 4:4:4, 4:2:2 және 4:2:0p деп сипаттауға болады. Y әрпінен кейінгі апостроф жиі алынып тасталады, сондай-ақ YUV420p-ден кейінгі "p" (жазықтық үшін) тағы да алынып тасталады. Файлдың нақты форматтарының арасында 4:2:0 ең көп таралған, себебі деректер көбірек қысқартылған, ал файлдың кеңейтімі әдетте ".YUV" болып жазылады. Деректер ағыны мен субсемплинг арасындағы қатынас (A:B:C) Y арнасының U және V арналарына қатынасымен анықталады. "YUV" деген белгіні үш санмен біріктіру шатастырады: үш сан субсемплингті білдіруі мүмкін ("YUV420" сияқты) немесе әр арнадағы биттердің тереңдігін білдіруі мүмкін ("YUV565" сияқты). Бұл форматтарға анық сілтеме жасаудың ең дұрыс жолы – FourCC коды арқылы. RGB-дан YUV-ға немесе кері түрлендіру үшін RGB888 және 4:4:4 пайдалану ең оңай. 4:1:1, 4:2:2 және 4:2:0 үшін байттарды алдымен 4:4:4 форматына түрлендіру қажет.
4:4:4
4:4:4 түсіну оңай, себебі пикселдер топтастырылмайды: айырмашылық әрбір каналға берілген биттер санында және олардың орналасуында ғана. Негізгі схема бір пиксел үшін 3 байтты пайдаланады, реті y0, u0, v0, y1, u1, v1 (Cb үшін "u" және Cr үшін "v" қолданылады; осы принцип төмендегі мазмұнға да қатысты). Түсініктің Y бөлігі толығымен жазылады, содан кейін U0, V0, U1, V1 және т.б. ретімен араластырылған жолдар келеді. Жазық форматтардың «плиткаланған» (tiled) түрлері де бар.