вперед от:https://www.cnblogs.com/luoyinjie/p/7219319.html
1. Формула: на основе BT.601-6
Диаграмма координат UV BT601 (количественно): (горизонтальная координата - U, вертикальные координаты V, а нижний левый угол является источником)
Через координатную диаграмму мы видим, что ультрафиолетовое излучение не включает всю систему координат, а является восьмиугольником, который вращает определенный угол. Чем больше синий, тем больше синий, тем больше красный, а красный красный.
Глоссарий:
После количественной оценки: y ~ [16,235] u ~ [16-240] V ~ [16-240] Количественная, чтобы сделать Y или U или V в определенном диапазоне посредством линейного преобразования y '(16,235), реализуется таким образом: y '= y* (235-16)/(1-0) + 16 is y' = 219* y + 16
Не определено количественно: y ~ [0,1] u, v ~ [-0,5,0,5]
YUV: То есть YCBCR эквивалентен
Как количественно оценить?
1. Как мы все знаем, диапазон RGB составляет [0,255]. Диапазон char равен [-128,127], который не может быть указан до 127,5,
Затем нам нужно количественно оценить данные Y U V;
2. После количественной оценки, когда мы выполняем RGB для YUV, если нам нужно выносить граничные суждения, аналогично Y = Y_INT <0? 0: (Y_INT> 255? 255: y_int); это утверждение потребляет процессор, если YUV выполняет выполнение выполнения После количественной оценки RGB не нужно судить по границе при обращении к ЮВ;
3. После количественной оценки будет сохранена часть пропускной способности.
Как судить, является ли изображение количественно определено?
Распечатайте данные y изображения во время полностью черной картинки.
1. Десятичная форма, не определяющая количественно (u ~ [-0,5-0,5], r ~ [0,1])
R = Y + 1.4075 * V;
G = Y - 0.3455 * U - 0.7169*V;
B = Y + 1.779 * U;
Y = 0.299*R + 0.587*G + 0.114*B;
U = (B-Y)/1.772;
V = (R-Y)/1.402;
или написать это ::
Y = 0.299*R + 0.587*G + 0.114*B;
U = -0.169*R - 0.331*G + 0.5 *B ;
V = 0.5 *R - 0.419*G - 0.081*B;
2. Наша целочисленная форма (сниженное расчет) не определяет r, g, b ~ [0,255] u, v ~ [-128,128]
R= Y + ((360 * (V - 128))>>8) ;
G= Y - (( ( 88 * (U - 128) + 184 * (V - 128)) )>>8) ;
B= Y +((455 * (U - 128))>>8) ;
Y = (77*R + 150*G + 29*B)>>8;
U = ((-44*R - 87*G + 131*B)>>8) + 128;
V = ((131*R - 110*G - 21*B)>>8) + 128 ;
3. Количественная формула (Y ~ (16,235) U/V ~ (16,240)) Количественная
[Y, u, v, 1] t = m [r, g, b, 1] t, где m =
[ 0.2568, 0.5041, 0.0979, 16
-0.1479, -0.2896, 0.4375, 128
0.4375, -0.3666, -0.0709, 128,
0, 0, 0, 1 ]
[R,G,B,1]T = M[Y,U,V,1]T M =
1.1644 0 1.6019 -223.5521
1.1644 -0.3928 -0.8163 136.1381
1.1644 2.0253 0 -278.0291
0.0000 0.0000 0.0000 1.0000
Из этого вы можете получить красный компонент YUV
YUV = ( 81,91,240 )
На рисунке ниже показан скриншот в документе BT601: Скриншот 1 Скриншот 2
4 Формула после количественной оценки записывается в целочисленную форму (сниженное расчет) (Y ~ (16,235) U/V ~ (16,240))
yuv --> rgb
R = (298*Y + 411 * V - 57344)>>8
G= (298*Y - 101* U- 211* V+ 34739)>>8
B= (298*Y + 519* U- 71117)>>8
rgb --> yuv
Y= ( 66*R + 129*G + 25*B)>>8 + 16
U= (-38*R - 74*G + 112*B)>>8 +128
V= (112*R - 94*G - 18*B)>>8 + 128
5. yuv Количественная и неконтролирующая взаимодействие
Yuv Количественная оценка до неквадратификации
Y=(Y'-16 )*255/219 ;
U=(U'-128)*128/112;
V=(V'-128)*128/112;
Yuv Количественно по неконтиторному U ~ (-128-127) -----> U ~ (16-240)
Y' = ((219*Y)>>8) + 16;
U' = ((219*U)>>8) + 128;
V' =((219*V)>>8) + 128;
6. YV12 до RGB (это необходимо проверить ... !!)
R = y + 1,370705 * (v -128); // r Значение оценки
g = y -0.698001 * (u -128) -0.703125 * (v -128) // g Значение компонента
b = y + 1,732446 * (u -128); // b Значение веса
7. Форма матрицы (BT601):
Матричная форма
Перед количественной оценкой
[Y, u, v] t = m [r, g, b] t, где m = 0,299, 0,587, 0,114, -0,169, -0,331, 0,5, 0,419-0,081
[R, g, b] t = m [y, u, v] t, где m = 1 0 1,4017 1 -0,3437 -0,7142 1 1,7722 0
После количественной оценки
[Y, u, v, 1] t = m [r, g, b, 1] t, где m = [0,2568, 0,5041, 0,0979, 16 -0,1479, -0,2896, 0,4375, 128 0,4375, -0,3666, -0709, 128, 0, 0, 0, 1]
[R,G,B,1]T = M[Y,U,V,1]T M = 1.1644 0 1.6019 -223.5521 1.1644 -0.3928 -0.8163 136.1381 1.1644 2.0253 0 -278.0291 0.0000 0.0000 0.0000 1.0000
Количественная формула написана как целочисленная форма
[Y, U, V, 1] T = (M [R, G, B, 1] T) >> 8 из которых M = 66, 129, 25, 4096, -74, 112, 32768, 112, -94 , -18, 32768, 0, 0, 0, 0, 256
[R,G,B,1]T = (M[Y,U,V,1]T)>>8 M = 298, 0, 410, -57229, 298, -101, -209, 34851, 298, 518, 0, -71175, 0, 0, 0, 256
2. Формула преобразования YUV и RGB под RUV и RGB под RG2020 (BT2020) (я думаю, что она более объединена и координируется в форме написания в матрицу)
Координатная диаграмма UV BT2020 (количественно): (горизонтальные координаты - U, вертикальные координаты V, а нижний левый угол является исходной точкой)
Через координатную диаграмму мы видим, что ультрафиолетовое излучение отличается от протокола BT601. Ультрафиолетовое излучение представляет большую цветовую диапазон, а цветовой диапазон является нерегулярным восьмиугольником.
1. full range
который:
Y = 0.2627*R + 0.6780*G + 0.0593*B;
U = -0.1396*R - 0.3604*G + 0.5*B;
V = 0.5*R - 0.4598*G -0.0402*B;
Матричная форма
Перед количественной оценкой
[Y, u, v] t = m [r, g, b] t, где m = 0,2627 0,6780 0,0593, -0,1396 -0,3604 0,5000, 0,5000 -0,4598 -0,0402
[R, g, b] t = m [y, u, v] t, где m = 1,0000 -000.0000 1.4746 1.0000 -0.1645 -0,5713 1.0000 1.8814 -0.0001
После количественной оценки
[Y, U, V, 1] T = M [R, G, B, 1] T, где M = 0,2256, 0,5823, 0,05093, 16, -0,1222, -0,3154, 0,4375, 128, 0,4023, -0,0352, 128 , 0,0,0,1
[R,G,B,1]T =M[Y,U,V,1]T M =1.1644, 0, 1.6853, -234.3559, 1.1644, -0.1881, -0.6529, 89.0206, 1.1646, 2.1501, 0.0000, -293.8542, 0.0000, 0.0000, 0.0000, 1.0000
Количественная формула написана как целочисленная форма
[Y, u, v, 1] t = (m [r, g, b, 1] t) >> 8, где m =58, 149, 13, 4096, -31, -81, 112, 32768, 112, -103, -9, 32768, 0, 0, 0, 256
[R,G,B,1]T = (M[Y,U,V,1]T)>>8 M = 298, 0, 431, -59995, 298, -48, -167, 22789, 298, 550, 0, -75227, 0, 0, 0, 256
2. BT601 до BT2020
_Y = (256*Y - 32*U -30*V+ 7826)>>8;
_U = (258*U +17*V - 2208)>>8;
_V = (22*U + 264*V - 3369)>>8;
3. BT2020 ROTOR BT601
YUV_601 = M*[Y,U,V,1]T
M=[
1.0000 0.1157 0.1037 -28.0756
0.0000 0.9951 -0.0602 8.3197
-0.0000 -0.0835 0.9767 13.6686
0.0000 0.0000 0.0000 1.0000
]
RGB и HSV обращаются друг к другу
1.RGB к HSV
1: max=max(R,G,B) 2: min=min(R,G,B) 3: if R = max, H = (G-B)/(max-min) 4: if G = max, H = 2 + (B-R)/(max-min) 5: if B = max, H = 4 + (R-G)/(max-min) 6: 7: H = H * 60 8: if H < 0, H = H + 360 9: 10: V=max(R,G,B) 11: S=(max-min)/max
2. Hsv to rgb
1: if s = 0 2: R=G=B=V 3: else 4: H /= 60; 5: i = INTEGER(H) 6: 7: f = H - i 8: a = V * ( 1 - s ) 9: b = V * ( 1 - s * f ) 10: c = V * ( 1 - s * (1 - f ) ) 11: 12: switch(i) 13: case 0: R = V; G = c; B = a; 14: case 1: R = b; G = v; B = a; 15: case 2: R = a; G = v; B = c; 16: case 3: R = a; G = b; B = v; 17: case 4: R = c; G = a; B = v; 18: case 5: R = v; G = a; B = b;