文章目录
- YUV公式
- 转换系数
- 转换系数怎么得来?
- YUV公式的一些性质
- YUV域调节色相的原理(三个矩阵的乘)
- 预备工作:逆矩阵(YUV->RGB)的系数
- 3x3矩阵求逆公式
- 第一列的系数
- 其他系数
- 求解三个矩阵的乘
提到调节图片色相,通俗的做法是将图片转为用HSL或者HSV之类的颜色模型表达,调节H之后再转回去。这是一个可行的方案,但性能差一些,很多专业的编辑工具中不是这么做的,它们通过一个3x3的矩阵直接进行色相转换,那么问题来了,这个3x3的矩阵是怎么来的?本文主要讨论这个问题。
PS:图片的原始色彩模型为RGB。
一些基础知识:
- RGB有它自己的优势,比如符合人的生物视觉系统,各通道具有相同的量纲,易于硬件实现和软件处理。但是,RGB对色彩的表达“不直观”。
- 颜色的直观表达为“颜色是什么,浓淡、亮暗”等属性,HSV和HSL就是这么一种色彩模型。H(Hue)色相,描述颜色是什么;S(Saturation)饱和度,描述颜色的浓淡;V或L(Luminance)亮度,描述颜色的亮暗。
- 还有一些颜色模型,它们通常把颜色分为“亮度、色度”两个维度进行描述,其中亮度通常占一个通道,色度占两个通道。如YUV,Y是亮度,UV是色度;Lab,L是亮度,ab是色度。
- 在上述提到的所有颜色模型中,RGB与HSV,HSL,Lab等之类的转换是非线性的,计算相对复杂一些;RGB与YUV之间的转换是线性的,计算量小,效率高。什么是线性转换?通俗理解就是使用一个3x3矩阵就可以完成转换的就叫线性。
YUV公式
以Rec.709为例。
网上搜一下容易知道RGB与YUV之间的转换如下(Wikipedia):
转换系数
[ Y U V ] = [ 0.2126 0.7152 0.0722 − 0.09991 − 0.33609 0.436 0.615 − 0.55861 − 0.05639 ] [ R G B ] (1) \begin{bmatrix} Y \\ U \\ V \end{bmatrix}= \begin{bmatrix} 0.2126 & 0.7152 & 0.0722 \\ -0.09991 & -0.33609 & 0.436 \\ 0.615 & -0.55861 & -0.05639 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} \tag{1} YUV = 0.2126−0.099910.6150.7152−0.33609−0.558610.07220.436−0.05639 RGB (1)
[ R G B ] = [ 1 0 1.28033 1 − 0.21482 − 0.38059 1 2.12798 0 ] ⋅ [ Y U V ] (2) \begin{bmatrix} R \\ G \\ B \end{bmatrix}= \begin{bmatrix} 1 & 0 & 1.28033 \\ 1 & -0.21482 & -0.38059 \\ 1 & 2.12798 & 0 \end{bmatrix} \cdot \begin{bmatrix} Y \\ U \\ V \end{bmatrix} \tag{2} RGB = 1110−0.214822.127981.28033−0.380590 ⋅ YUV (2)
仅知道这两个转换矩阵的话不太足够,为了更深入的推到色相转换的公式,需要深入分析一下RGB与YUV之间的转换。
转换系数怎么得来?
Rec.709标准的一些参数规定如下:
W R = 0.2126 , W G = 1 − W R − W B = 0.7152 , W B = 0.0722 , U max = 0.436 , V max = 0.615. (3) \begin{aligned} W_R &= 0.2126, \\ W_G &= 1 - W_R - W_B = 0.7152, \\ W_B &= 0.0722, \\ U_{\text{max}} &= 0.436, \\ V_{\text{max}} &= 0.615. \end{aligned} \tag{3} WRWGWBUmaxVmax=0.2126,=1−WR−WB=0.7152,=0.0722,=0.436,=0.615.(3)
- WR,WG,WB分别是红、绿、蓝三个通道对亮度分量 Y 的贡献权重。这些权重基于人眼对不同波长光的敏感度。
- Umax,Vmax分别是色度分量 U、V 的最大范围,用于计算色度系数。
Y通过计算WR,WG,WB对RGB三个通道的加权和得到,而U 和 V 是基于颜色通道偏离亮度 Y 的差值并经过缩放得到的,即:
Y
=
W
R
⋅
R
+
W
G
⋅
G
+
W
B
⋅
B
,
U
=
U
max
⋅
B
−
Y
1
−
W
B
=
U
max
1
−
W
B
(
−
W
R
⋅
R
−
W
G
⋅
G
+
(
1
−
W
B
)
⋅
B
)
,
V
=
V
max
⋅
R
−
Y
1
−
W
R
=
V
max
1
−
W
R
(
(
1
−
W
R
)
⋅
R
−
W
G
⋅
G
−
W
B
⋅
B
)
(4)
\begin{aligned} Y &= W_{R}\cdot R + W_{G}\cdot G + W_{B}\cdot B, \\ U &= U_{\text{max}} \cdot \frac{B - Y}{1 - W_{B}} = \frac {U_{\text{max}}}{1 - W_{B}}(-W_R\cdot R - W_{G}\cdot G + (1-W_B)\cdot B), \\ V &= V_{\text{max}} \cdot \frac{R - Y}{1 - W_{R}}= \frac {V_{\text{max}}}{1 - W_{R}}((1-W_R)\cdot R - W_{G}\cdot G -W_B\cdot B) \end{aligned} \tag{4}
YUV=WR⋅R+WG⋅G+WB⋅B,=Umax⋅1−WBB−Y=1−WBUmax(−WR⋅R−WG⋅G+(1−WB)⋅B),=Vmax⋅1−WRR−Y=1−WRVmax((1−WR)⋅R−WG⋅G−WB⋅B)(4)
将WR,WG,WB,Umax,Vmax的数值带入到公式(4),就可以计算出公式(1)(2)的3x3系数矩阵。
YUV公式的一些性质
下面我们要用不同的方式来记录RGB->YUV的系数矩阵,首先是通式:
[ Y U V ] = [ a 00 a 01 a 02 a 10 a 11 a 12 a 20 a 21 a 22 ] [ R G B ] (5) \begin{bmatrix} Y \\ U \\ V \end{bmatrix}= \begin{bmatrix} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} \tag{5} YUV = a00a10a20a01a11a21a02a12a22 RGB (5)
然后是使用WR,WG,WB,Umax,Vmax的表达:
记
U
m
=
U
max
1
−
W
B
V
m
=
V
max
1
−
W
R
\begin{aligned} U_m &= \frac {U_{\text{max}}}{1 - W_{B}} \\ V_m &= \frac {V_{\text{max}}}{1 - W_{R}} \end{aligned}
UmVm=1−WBUmax=1−WRVmax
那么:
[
Y
U
V
]
=
[
W
R
W
G
W
B
−
U
m
W
R
−
U
m
W
G
U
m
(
1
−
W
B
)
V
m
(
1
−
W
R
)
−
V
m
W
G
−
V
m
W
B
]
[
R
G
B
]
(6)
\begin{bmatrix} Y \\ U \\ V \end{bmatrix}= \begin{bmatrix} W_R & W_G & W_B \\ -U_mW_R & -U_mW_G & U_m(1-W_B) \\ V_m(1-W_R) & -V_mW_G & -V_mW_B \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} \tag{6}
YUV
=
WR−UmWRVm(1−WR)WG−UmWG−VmWGWBUm(1−WB)−VmWB
RGB
(6)
需主意以下性质:
- W R + W G + W B = 1 W_R + W_G + W_B = 1 WR+WG+WB=1,即 a 00 + a 01 + a 02 = 1 a_{00} + a_{01} + a_{02}=1 a00+a01+a02=1,其含义是亮度信息经转换之后不发生变化。
- a 10 + a 11 + a 12 = 0 a_{10} + a_{11} + a_{12} = 0 a10+a11+a12=0, a 20 + a 21 + a 22 = 0 a_{20} + a_{21} + a_{22} = 0 a20+a21+a22=0,即矩阵的第二行系数之和与第三行系数之和分别都是0,其含义是色度不包含亮度信息。
给这些条件重新罗列一下,记个公式编号,方便后续引用:
a
00
+
a
01
+
a
02
=
1
a
10
+
a
11
+
a
12
=
0
a
20
+
a
21
+
a
22
=
0
(7)
\begin{aligned} a_{00} + a_{01} + a_{02} &=1 \\ a_{10} + a_{11} + a_{12} &= 0 \\ a_{20} + a_{21} + a_{22} &= 0 \end{aligned} \tag{7}
a00+a01+a02a10+a11+a12a20+a21+a22=1=0=0(7)
YUV域调节色相的原理(三个矩阵的乘)
首先将RGB转为YUV,由于色相属于色度信息,所以就对UV进行一些调节操作,色相调节主要是针对UV进行坐标旋转,完事后然后再转回RGB。
记:
- RGB->YUV的转换矩阵为 M R G B 2 Y U V M_{RGB2YUV} MRGB2YUV
- YUV->RGB的转换矩阵为 M Y U V 2 R G B M_{YUV2RGB} MYUV2RGB,它与上面互逆。
- 对UV进行旋转的矩阵为 R U V R_{UV} RUV
R U V R_{UV} RUV可以表达如下:
[ Y ′ U ′ V ′ ] = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] [ Y U V ] (8) \begin{bmatrix} Y' \\ U' \\ V' \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0\\ 0 & cos{\theta} & -sin{\theta} \\ 0 & sin{\theta} & cos{\theta} \end{bmatrix} \begin{bmatrix} Y \\ U \\ V \end{bmatrix} \tag{8} Y′U′V′ = 1000cosθsinθ0−sinθcosθ YUV (8)
调节原理可以表示如下:
[
R
′
,
G
′
,
B
′
]
T
=
M
Y
U
V
2
R
G
B
R
U
V
M
R
G
B
2
Y
U
V
[
R
,
G
,
B
]
T
(9)
[R', G', B']^T = M_{YUV2RGB} R_{UV} M_{RGB2YUV} [R, G, B]^T \tag{9}
[R′,G′,B′]T=MYUV2RGBRUVMRGB2YUV[R,G,B]T(9)
实际计算中,可以预先先计算上面的三个转换矩阵,合为一个:
M
=
M
Y
U
V
2
R
G
B
R
U
V
M
R
G
B
2
Y
U
V
(10)
M=M_{YUV2RGB} R_{UV} M_{RGB2YUV} \tag{10}
M=MYUV2RGBRUVMRGB2YUV(10)
好了,讲道理到了这里已经把所有的理论都摆清楚了,但是按照这种方式调节出来的结果与一些专业转件的结果不完全一样
,而这些专业软件都比较成熟了,应该有一定的道理,所以下面深入分析一下,看看可能得差异在哪里。重点分析转换矩阵
。
预备工作:逆矩阵(YUV->RGB)的系数
3x3矩阵求逆公式
因为 M R G B 2 Y U V M_{RGB2YUV} MRGB2YUV与 M Y U V 2 R G B M_{YUV2RGB} MYUV2RGB互逆,所以分析过程中势必要涉及到3x3矩阵的求逆,这里把相关公式罗列一下:
针对矩阵:
A
=
[
a
00
a
01
a
02
a
10
a
11
a
12
a
20
a
21
a
22
]
(11)
A= \begin{bmatrix} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \end{bmatrix} \tag{11}
A=
a00a10a20a01a11a21a02a12a22
(11)
其行列式的值:
det
(
A
)
=
∣
a
00
a
01
a
02
a
10
a
11
a
12
a
20
a
21
a
22
∣
=
a
00
(
a
11
a
22
−
a
12
a
21
)
−
a
01
(
a
10
a
22
−
a
12
a
20
)
+
a
02
(
a
10
a
21
−
a
11
a
20
)
(12)
\det(A) = \begin{vmatrix} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \end{vmatrix}= a_{00}(a_{11}a_{22} - a_{12}a_{21}) - a_{01}(a_{10}a_{22} - a_{12}a_{20}) + a_{02}(a_{10}a_{21} - a_{11}a_{20}) \tag{12}
det(A)=
a00a10a20a01a11a21a02a12a22
=a00(a11a22−a12a21)−a01(a10a22−a12a20)+a02(a10a21−a11a20)(12)
逆矩阵为:
A
−
1
=
1
det
(
A
)
[
a
11
a
22
−
a
12
a
21
a
02
a
21
−
a
01
a
22
a
01
a
12
−
a
02
a
11
a
12
a
20
−
a
10
a
22
a
00
a
22
−
a
02
a
20
a
02
a
10
−
a
00
a
12
a
10
a
21
−
a
11
a
20
a
01
a
20
−
a
00
a
21
a
00
a
11
−
a
01
a
10
]
(13)
A^{-1} = \frac{1}{\det(A)} \begin{bmatrix} a_{11}a_{22} - a_{12}a_{21} & a_{02}a_{21} - a_{01}a_{22} & a_{01}a_{12} - a_{02}a_{11} \\ a_{12}a_{20} - a_{10}a_{22} & a_{00}a_{22} - a_{02}a_{20} & a_{02}a_{10} - a_{00}a_{12} \\ a_{10}a_{21} - a_{11}a_{20} & a_{01}a_{20} - a_{00}a_{21} & a_{00}a_{11} - a_{01}a_{10} \end{bmatrix} \tag{13}
A−1=det(A)1
a11a22−a12a21a12a20−a10a22a10a21−a11a20a02a21−a01a22a00a22−a02a20a01a20−a00a21a01a12−a02a11a02a10−a00a12a00a11−a01a10
(13)
将上式矩阵中的部分,也就是代数余子式,记为:
C
=
[
c
00
c
01
c
02
c
10
c
11
c
12
c
20
c
21
c
22
]
C= \begin{bmatrix} c_{00} & c_{01} & c_{02} \\ c_{10} & c_{11} & c_{12} \\ c_{20} & c_{21} & c_{22} \end{bmatrix}
C=
c00c10c20c01c11c21c02c12c22
那么就有
c
00
=
a
11
a
22
−
a
12
a
21
c
01
=
a
02
a
21
−
a
01
a
22
c
02
=
a
01
a
12
−
a
02
a
11
.
.
.
\begin{aligned} c_{00} &= a_{11}a_{22} - a_{12}a_{21} \\ c_{01} &= a_{02}a_{21} - a_{01}a_{22} \\ c_{02} &= a_{01}a_{12} - a_{02}a_{11} \\ ... \end{aligned}
c00c01c02...=a11a22−a12a21=a02a21−a01a22=a01a12−a02a11
第一列的系数
结合条件(7)对行列式公式(12)做一些化简,如消掉公式(12)中的 a 10 , a 20 a_{10}, a_{20} a10,a20。
根据条件(7)有:
a
10
=
−
(
a
11
+
a
12
)
a
20
=
−
(
a
21
+
a
22
)
\begin{aligned} a_{10} &= -(a_{11} + a_{12})\\ a_{20} &= -(a_{21} + a_{22}) \end{aligned}
a10a20=−(a11+a12)=−(a21+a22)
将其带入公式(12)得:
第一项不动,罗列下来:
a
00
⋅
(
a
11
a
22
−
a
12
a
21
)
a_{00} \cdot (a_{11}a_{22} - a_{12}a_{21})
a00⋅(a11a22−a12a21)
第二项:
−
a
01
⋅
(
−
(
a
11
+
a
12
)
a
22
+
(
a
21
+
a
22
)
a
12
)
=
−
a
01
⋅
(
−
a
11
a
22
−
a
12
a
22
+
a
21
a
12
+
a
22
a
12
)
=
−
a
01
⋅
(
−
a
11
a
22
+
a
12
a
21
)
=
a
01
⋅
(
a
11
a
22
−
a
12
a
21
)
\begin{aligned} & -a_{01} \cdot ( -(a_{11} + a_{12}) a_{22} + (a_{21} + a_{22}) a_{12}) \\ &=-a_{01} \cdot ( -a_{11}a_{22} - a_{12}a_{22} + a_{21}a_{12} + a_{22}a_{12}) \\ & =-a_{01} \cdot ( -a_{11}a_{22} + a_{12}a_{21}) \\ & =a_{01} \cdot ( a_{11}a_{22} - a_{12}a_{21}) \end{aligned}
−a01⋅(−(a11+a12)a22+(a21+a22)a12)=−a01⋅(−a11a22−a12a22+a21a12+a22a12)=−a01⋅(−a11a22+a12a21)=a01⋅(a11a22−a12a21)
第三项:
a
02
⋅
(
−
(
a
11
+
a
12
)
a
21
+
(
a
21
+
a
22
)
a
11
)
=
a
02
⋅
(
−
a
11
a
21
−
a
12
a
21
+
a
21
a
11
+
a
22
a
11
)
=
a
02
⋅
(
a
11
a
22
−
a
12
a
21
)
\begin{aligned} & a_{02} \cdot ( -(a_{11} + a_{12}) a_{21} + (a_{21} + a_{22}) a_{11}) \\ &=a_{02} \cdot ( -a_{11}a_{21} - a_{12}a_{21} + a_{21}a_{11} + a_{22}a_{11}) \\ & = a_{02} \cdot ( a_{11}a_{22} - a_{12}a_{21}) \end{aligned}
a02⋅(−(a11+a12)a21+(a21+a22)a11)=a02⋅(−a11a21−a12a21+a21a11+a22a11)=a02⋅(a11a22−a12a21)
三项之和:
d
e
t
(
A
)
=
a
00
⋅
(
a
11
a
22
−
a
12
a
21
)
+
a
01
⋅
(
a
11
a
22
−
a
12
a
21
)
+
a
02
⋅
(
a
11
a
22
−
a
12
a
21
)
=
(
a
00
+
a
01
+
a
02
)
⋅
(
a
11
a
22
−
a
12
a
21
)
=
a
11
a
22
−
a
12
a
21
\begin{aligned} det(A) &= a_{00} \cdot (a_{11}a_{22} - a_{12}a_{21}) + a_{01} \cdot ( a_{11}a_{22} - a_{12}a_{21}) + a_{02} \cdot ( a_{11}a_{22} - a_{12}a_{21}) \\ & = (a_{00} + a_{01} + a_{02})\cdot (a_{11}a_{22} - a_{12}a_{21}) \\ & = a_{11}a_{22} - a_{12}a_{21} \end{aligned}
det(A)=a00⋅(a11a22−a12a21)+a01⋅(a11a22−a12a21)+a02⋅(a11a22−a12a21)=(a00+a01+a02)⋅(a11a22−a12a21)=a11a22−a12a21
同理,消掉公式(12)中的
a
11
,
a
21
a_{11}, a_{21}
a11,a21可得:
d
e
t
(
A
)
=
a
12
a
20
−
a
10
a
22
det(A) = a_{12}a_{20} - a_{10}a_{22}
det(A)=a12a20−a10a22
消掉公式(12)中的 a 12 , a 22 a_{12}, a_{22} a12,a22可得
d e t ( A ) = a 10 a 21 − a 11 a 20 det(A) = a_{10}a_{21} - a_{11}a_{20} det(A)=a10a21−a11a20
即在条件(7)约束下,行列式的值可以表达为:
d
e
t
(
A
)
=
a
11
a
22
−
a
12
a
21
=
a
12
a
20
−
a
10
a
22
=
a
10
a
21
−
a
11
a
20
(14)
\begin{aligned} det(A) &= a_{11}a_{22} - a_{12}a_{21} \\ &= a_{12}a_{20} - a_{10}a_{22} \\ &= a_{10}a_{21} - a_{11}a_{20} \end{aligned} \tag{14}
det(A)=a11a22−a12a21=a12a20−a10a22=a10a21−a11a20(14)
所以逆矩阵公式(13)第一列所有值都是1。
另外把公式(6)代入(14)可得:
d e t ( A ) = U m V m W G (15) det(A) = U_mV_mW_G \tag{15} det(A)=UmVmWG(15)
其他系数
结合公式(6)和(13),把其他系数都求出来:
c 01 = 1 d e t ( A ) ( a 01 a 12 − a 02 a 11 ) = 1 U m V m W G ( W B ( − V m W G ) − W G ( − V m W B ) ) = 0 \begin{aligned} c_{01} &= \frac{1}{det(A)} (a_{01}a_{12} - a_{02}a_{11}) \\[2ex] &= \frac{1}{U_mV_mW_G} (W_B(-V_mW_G)-W_G(-V_mW_B)) \\[2ex] &=0 \end{aligned} c01=det(A)1(a01a12−a02a11)=UmVmWG1(WB(−VmWG)−WG(−VmWB))=0
c 02 = 1 d e t ( A ) ( a 01 a 12 − a 02 a 11 ) = 1 U m V m W G ( W G U m ( 1 − W B ) + W B U m W G ) = 1 U m V m W G W G U m = 1 V m = 1 − W R V m a x \begin{aligned} c_{02} &= \frac{1}{det(A)} (a_{01}a_{12} - a_{02}a_{11}) \\[2ex] &= \frac{1}{U_mV_mW_G} (W_GU_m(1-W_B)+W_BU_mW_G) \\[2ex] &= \frac{1}{U_mV_mW_G} W_GU_m \\[2ex] &= \frac{1}{V_m} \\[2ex] &= \frac{1-W_R}{V_{max}} \end{aligned} c02=det(A)1(a01a12−a02a11)=UmVmWG1(WGUm(1−WB)+WBUmWG)=UmVmWG1WGUm=Vm1=Vmax1−WR
c 11 = 1 d e t ( A ) ( a 00 a 22 − a 02 a 20 ) = 1 U m V m W G ( − W R V m W B − W B V m ( 1 − W R ) ) = 1 U m V m W G ( − W B V m ) = − W B U m W G = − W B ( 1 − W B ) W G U m a x \begin{aligned} c_{11} &= \frac{1}{det(A)} (a_{00}a_{22} - a_{02}a_{20}) \\[2ex] &= \frac{1}{U_mV_mW_G} (-W_RV_mW_B-W_BV_m(1-W_R)) \\[2ex] &= \frac{1}{U_mV_mW_G} (-W_BV_m) \\[2ex] &= -\frac{W_B}{U_mW_G} \\[2ex] &= -\frac{W_B(1-W_B)}{W_GU_{max}} \end{aligned} c11=det(A)1(a00a22−a02a20)=UmVmWG1(−WRVmWB−WBVm(1−WR))=UmVmWG1(−WBVm)=−UmWGWB=−WGUmaxWB(1−WB)
c 12 = 1 d e t ( A ) ( a 02 a 10 − a 00 a 12 ) = 1 U m V m W G ( − W B U m W R − W R U m ( 1 − W B ) ) = 1 U m V m W G ( − W R U m ) = − W R V m W G = − W R ( 1 − W R ) W G V m a x \begin{aligned} c_{12} &= \frac{1}{det(A)} (a_{02}a_{10} - a_{00}a_{12}) \\[2ex] &= \frac{1}{U_mV_mW_G} (-W_BU_mW_R-W_RU_m(1-W_B)) \\[2ex] &= \frac{1}{U_mV_mW_G} (-W_RU_m) \\[2ex] &= -\frac{W_R}{V_mW_G} \\[2ex] &= -\frac{W_R(1-W_R)}{W_GV_{max}} \end{aligned} c12=det(A)1(a02a10−a00a12)=UmVmWG1(−WBUmWR−WRUm(1−WB))=UmVmWG1(−WRUm)=−VmWGWR=−WGVmaxWR(1−WR)
c 21 = 1 d e t ( A ) ( a 01 a 20 − a 00 a 21 ) = 1 U m V m W G ( W G V m ( 1 − W R ) + W R V m W G ) = 1 U m V m W G W G V m = 1 U m = 1 − W B U m a x \begin{aligned} c_{21} &= \frac{1}{det(A)} (a_{01}a_{20} - a_{00}a_{21}) \\[2ex] &= \frac{1}{U_mV_mW_G} (W_GV_m(1-W_R)+W_RV_mW_G) \\[2ex] &= \frac{1}{U_mV_mW_G} W_GV_m \\[2ex] &= \frac{1}{U_m} \\[2ex] &= \frac{1-W_B}{U_{max}} \end{aligned} c21=det(A)1(a01a20−a00a21)=UmVmWG1(WGVm(1−WR)+WRVmWG)=UmVmWG1WGVm=Um1=Umax1−WB
c 22 = 1 d e t ( A ) ( a 00 a 11 − a 01 a 10 ) = 1 U m V m W G ( W R ( − U m W G ) − W G ( − U m W R ) ) = 0 \begin{aligned} c_{22} &= \frac{1}{det(A)} (a_{00}a_{11} - a_{01}a_{10}) \\[2ex] &= \frac{1}{U_mV_mW_G} (W_R(-U_mW_G) - W_G(-U_mW_R)) \\[2ex] &= 0 \end{aligned} c22=det(A)1(a00a11−a01a10)=UmVmWG1(WR(−UmWG)−WG(−UmWR))=0
求解三个矩阵的乘
现在把三个转换矩阵重新罗列如下:
M
R
G
B
2
Y
U
V
M_{RGB2YUV}
MRGB2YUV:
[
Y
U
V
]
=
[
W
R
W
G
W
B
−
U
m
W
R
−
U
m
W
G
U
m
(
1
−
W
B
)
V
m
(
1
−
W
R
)
−
V
m
W
G
−
V
m
W
B
]
[
R
G
B
]
\begin{bmatrix} Y \\ U \\ V \end{bmatrix}= \begin{bmatrix} W_R & W_G & W_B \\ -U_mW_R & -U_mW_G & U_m(1-W_B) \\ V_m(1-W_R) & -V_mW_G & -V_mW_B \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix}
YUV
=
WR−UmWRVm(1−WR)WG−UmWG−VmWGWBUm(1−WB)−VmWB
RGB
M
Y
U
V
2
R
G
B
M_{YUV2RGB}
MYUV2RGB:
[
R
G
B
]
=
[
1
0
1
V
m
1
−
W
B
U
m
W
G
−
W
R
V
m
W
G
1
1
U
m
0
]
[
Y
U
V
]
\begin{bmatrix} R \\ G \\ B \end{bmatrix}= \begin{bmatrix} 1 & 0 & \frac{1}{V_m} \\[2ex] 1 & -\frac{W_B}{U_mW_G} & -\frac{W_R}{V_mW_G} \\[2ex] 1 & \frac{1}{U_m} & 0 \end{bmatrix} \begin{bmatrix} Y \\ U \\ V \end{bmatrix}
RGB
=
1110−UmWGWBUm1Vm1−VmWGWR0
YUV
R Y U V R_{YUV} RYUV:
[ Y ′ U ′ V ′ ] = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] [ Y U V ] \begin{bmatrix} Y' \\ U' \\ V' \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0\\ 0 & cos{\theta} & -sin{\theta} \\ 0 & sin{\theta} & cos{\theta} \end{bmatrix} \begin{bmatrix} Y \\ U \\ V \end{bmatrix} Y′U′V′ = 1000cosθsinθ0−sinθcosθ YUV
然后可以求出整体的转换矩阵(暴力计算):
M
=
M
Y
U
V
2
R
G
B
R
U
V
M
R
G
B
2
Y
U
V
=
[
1
0
1
V
m
1
−
W
B
U
m
W
G
−
W
R
V
m
W
G
1
1
U
m
0
]
[
1
0
0
0
c
o
s
θ
−
s
i
n
θ
0
s
i
n
θ
c
o
s
θ
]
[
W
R
W
G
W
B
−
U
m
W
R
−
U
m
W
G
U
m
(
1
−
W
B
)
V
m
(
1
−
W
R
)
−
V
m
W
G
−
V
m
W
B
]
=
[
1
0
1
V
m
1
−
W
B
U
m
W
G
−
W
R
V
m
W
G
1
1
U
m
0
]
[
W
R
W
G
W
B
−
U
m
W
R
c
o
s
θ
−
V
m
(
1
−
W
R
)
s
i
n
θ
−
U
m
W
G
c
o
s
θ
+
V
m
W
G
s
i
n
θ
U
m
(
1
−
W
B
)
c
o
s
θ
+
V
m
W
B
s
i
n
θ
−
U
m
W
R
s
i
n
θ
+
V
m
(
1
−
W
R
)
c
o
s
θ
−
U
m
W
G
s
i
n
θ
−
V
m
W
G
c
o
s
θ
U
m
(
1
−
W
B
)
s
i
n
θ
−
V
m
W
B
c
o
s
θ
]
\begin{aligned} M &= M_{YUV2RGB} R_{UV} M_{RGB2YUV} \\[2ex] &= \begin{bmatrix} 1 & 0 & \frac{1}{V_m} \\[2ex] 1 & -\frac{W_B}{U_mW_G} & -\frac{W_R}{V_mW_G} \\[2ex] 1 & \frac{1}{U_m} & 0 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ 0 & cos{\theta} & -sin{\theta} \\ 0 & sin{\theta} & cos{\theta} \end{bmatrix} \begin{bmatrix} W_R & W_G & W_B \\ -U_mW_R & -U_mW_G & U_m(1-W_B) \\ V_m(1-W_R) & -V_mW_G & -V_mW_B \end{bmatrix} \\[8ex] &= \begin{bmatrix} 1 & 0 & \frac{1}{V_m} \\[2ex] 1 & -\frac{W_B}{U_mW_G} & -\frac{W_R}{V_mW_G} \\[2ex] 1 & \frac{1}{U_m} & 0 \end{bmatrix} \begin{bmatrix} W_R & W_G & W_B \\ -U_mW_Rcos{\theta} - V_m(1-W_R)sin{\theta} & -U_mW_Gcos{\theta} + V_mW_Gsin{\theta} & U_m(1-W_B)cos{\theta} + V_mW_Bsin{\theta} \\ -U_mW_Rsin{\theta} + V_m(1-W_R)cos{\theta} & -U_mW_Gsin{\theta} - V_mW_Gcos{\theta} & U_m(1-W_B)sin{\theta} - V_mW_Bcos{\theta} \end{bmatrix} \\[8ex] \end{aligned}
M=MYUV2RGBRUVMRGB2YUV=
1110−UmWGWBUm1Vm1−VmWGWR0
1000cosθsinθ0−sinθcosθ
WR−UmWRVm(1−WR)WG−UmWG−VmWGWBUm(1−WB)−VmWB
=
1110−UmWGWBUm1Vm1−VmWGWR0
WR−UmWRcosθ−Vm(1−WR)sinθ−UmWRsinθ+Vm(1−WR)cosθWG−UmWGcosθ+VmWGsinθ−UmWGsinθ−VmWGcosθWBUm(1−WB)cosθ+VmWBsinθUm(1−WB)sinθ−VmWBcosθ
最终矩阵太长了,以
m
00
,
m
01
,
.
.
.
,
m
22
m_{00}, m_{01}, ..., m_{22}
m00,m01,...,m22来表示矩阵的各项,计算过程中注意使用
W
R
+
W
G
+
W
B
=
1
W_R+W_G+W_B=1
WR+WG+WB=1 这个条件,结果如下:
m
00
=
W
R
+
(
1
−
W
R
)
c
o
s
θ
−
U
m
V
m
W
R
s
i
n
θ
m
01
=
W
G
−
W
G
c
o
s
θ
−
U
m
V
m
W
G
s
i
n
θ
m
02
=
W
B
−
W
B
c
o
s
θ
+
U
m
V
m
(
1
−
W
B
)
s
i
n
θ
m
10
=
W
R
−
W
R
c
o
s
θ
+
V
m
2
W
B
(
1
−
W
R
)
+
U
m
2
W
R
2
U
m
V
m
W
G
s
i
n
θ
m
11
=
W
G
+
(
1
−
W
G
)
c
o
s
θ
+
U
m
2
W
R
−
V
m
2
W
B
U
m
V
m
s
i
n
θ
m
12
=
W
B
−
W
B
c
o
s
θ
−
V
m
2
W
B
2
+
U
m
2
W
R
(
1
−
W
B
)
U
m
V
m
W
G
s
i
n
θ
m
20
=
W
R
−
W
R
c
o
s
θ
−
V
m
U
m
(
1
−
W
R
)
s
i
n
θ
m
21
=
W
G
−
W
G
c
o
s
θ
+
V
m
U
m
W
G
s
i
n
θ
m
22
=
W
B
+
(
1
−
W
B
)
c
o
s
θ
+
V
m
U
m
W
B
s
i
n
θ
(16)
\begin{aligned} m_{00} &= W_R + (1-W_R)cos{\theta} - \frac{U_m}{V_m}W_Rsin{\theta} \\[2ex] m_{01} &= W_G - W_Gcos{\theta} - \frac{U_m}{V_m}W_Gsin{\theta} \\[2ex] m_{02} &= W_B - W_Bcos{\theta} + \frac{U_m}{V_m} (1-W_B)sin{\theta} \\[3ex] m_{10} &= W_R - W_Rcos{\theta}+\frac{V_m^2W_B(1-W_R)+U_m^2W_R^2}{U_mV_mW_G}sin{\theta} \\[3ex] m_{11} &= W_G + (1-W_G)cos{\theta} + \frac{U_m^2W_R-V_m^2W_B}{U_mV_m}sin{\theta}\\[3ex] m_{12} &= W_B-W_Bcos{\theta} - \frac{V_m^2W_B^2 + U_m^2W_R(1-W_B)}{U_mV_mW_G}sin{\theta} \\[3ex] m_{20} &= W_R-W_Rcos{\theta} - \frac{V_m}{U_m}(1-W_R)sin{\theta} \\[2ex] m_{21} &= W_G - W_Gcos{\theta} + \frac{V_m}{U_m}W_Gsin{\theta} \\[2ex] m_{22} &= W_B + (1-W_B)cos{\theta} + \frac{V_m}{U_m}W_B sin{\theta} \\[2ex] \end{aligned} \tag{16}
m00m01m02m10m11m12m20m21m22=WR+(1−WR)cosθ−VmUmWRsinθ=WG−WGcosθ−VmUmWGsinθ=WB−WBcosθ+VmUm(1−WB)sinθ=WR−WRcosθ+UmVmWGVm2WB(1−WR)+Um2WR2sinθ=WG+(1−WG)cosθ+UmVmUm2WR−Vm2WBsinθ=WB−WBcosθ−UmVmWGVm2WB2+Um2WR(1−WB)sinθ=WR−WRcosθ−UmVm(1−WR)sinθ=WG−WGcosθ+UmVmWGsinθ=WB+(1−WB)cosθ+UmVmWBsinθ(16)
观察易发现, c o s θ cos{\theta} cosθ的系数比较简单, s i n θ sin{\theta} sinθ的系数就麻烦一些。
未完待续。