【YUV】【1】YUV颜色空间与RGB颜色空间的相互转换公式

本文仅对YUV与RGB颜色空间的两种相互转换方式做简单说明,并指出常用方式。
第一种方式:

R G B → Y U V { Y =     0.257 R + 0.504 G + 0.098 B + 16 U = − 0.148 R − 0.291 G + 0.439 B + 128 V =     0.439 R − 0.368 G − 0.071 B + 128 \footnotesize RGB \rightarrow YUV \begin{cases} Y = \ \ \ 0.257R + 0.504G + 0.098B +16 \\ U = -0.148R - 0.291G + 0.439B + 128 \\ V = \ \ \ 0.439R - 0.368G - 0.071B + 128 \end{cases} RGBYUVY=   0.257R+0.504G+0.098B+16U=0.148R0.291G+0.439B+128V=   0.439R0.368G0.071B+128 Y U V → R G B { R = 1.164 ( Y − 16 ) + 1.596 ( V − 128 ) G = 1.164 ( Y − 16 ) − 0.391 ( U − 128 ) − 0.813 ( V − 128 ) B = 1.164 ( Y − 16 ) + 2.018 ( U − 128 ) \footnotesize YUV \rightarrow RGB \begin{cases} R = 1.164(Y-16) + 1.596(V-128) \\ G = 1.164(Y-16) - 0.391(U-128) - 0.813(V-128) \\ B = 1.164(Y-16) + 2.018(U-128) \end{cases} YUVRGBR=1.164(Y16)+1.596(V128)G=1.164(Y16)0.391(U128)0.813(V128)B=1.164(Y16)+2.018(U128)  其中RGB以及YUV取值范围分别为:
R / G / B ∈ [ 0 , 255 ] , Y ∈ [ 16 , 235 ] , U / V ∈ [ 16 , 240 ] \footnotesize R/G/B∈[0,255],Y∈[16,235],U/V∈[16,240] R/G/B[0,255],Y[16,235],U/V[16,240]若超出取值范围,则直接截断处理。

  当前方式出自 K e i t h J a c k \footnotesize Keith Jack KeithJack的书 < < V i d e o D e m y s t i f i e d > > ( I S B N 1 − 8787 − 7 − 09 − 4 ) \footnotesize<<Video Demystified>>(ISBN 1-8787-7-09-4) <<VideoDemystified>>(ISBN187877094) O p e n C V \footnotesize OpenCV OpenCV采用的 Y U V → R G B \footnotesize YUV \rightarrow RGB YUVRGB的整型系数转换公式正是基于当前方式。

  将公式中的 Y U V \footnotesize YUV YUV R G B \footnotesize RGB RGB的取值范围以线性方式统一到 [ 0 , 255 ] : \footnotesize \color{red} \textbf [0,255 \textbf]: [0,255]:
R G B → Y U V { Y = (     0.257 R    + 0.504 G    + 0.098 B    + 16   − 16 ) ∗ 255 235 − 16 = 0.2992 R + 0.5868 G + 0.1141 B U = ( − 0.148 R    − 0.291 G    + 0.439 B    + 128 − 16 ) ∗ 255 240 − 16 =    − 0.1685 R − 0.3313 G + 0.4998 B + 127.5 V = (     0.439 R    − 0.368 G    − 0.071 B    + 128 − 16 ) ∗ 255 240 − 16 = 0.4998 R − 0.4189 G − 0.0808 B + 127.5 \footnotesize RGB\rightarrow YUV\begin{cases} {\color{red}Y}=\left(\ \ \ 0.257R\ \ +0.504G\ \ +0.098B\ \ +16 \ -16\right)*\frac {255} {235-16} \\ \quad = \color{red}\quad 0.2992R + 0.5868G + 0.1141B \\ {\color{red}U}=\left(-0.148R\ \ -0.291G\ \ +0.439B\ \ +128-16\right)*\frac {255}{240-16} \\ \quad =\color{red}\ \ -0.1685R-0.3313G+0.4998B+127.5 \\ {\color{red}V} = \left(\ \ \ 0.439R\ \ -0.368G\ \ -0.071B\ \ +128-16\right)* \frac {255} {240-16} \\ \quad = \color{red}\quad0.4998R-0.4189G-0.0808B+127.5 \end{cases} RGBYUVY=(   0.257R  +0.504G  +0.098B  +16 16)23516255=0.2992R+0.5868G+0.1141BU=(0.148R  0.291G  +0.439B  +12816)24016255=  0.1685R0.3313G+0.4998B+127.5V=(   0.439R  0.368G  0.071B  +12816)24016255=0.4998R0.4189G0.0808B+127.5 Y U V → R G B { R = 1.164 ( 235 − 16 255 Y + 16 − 16 ) + 1.596 ( 240 − 16 255 V + 16 − 128 ) = 0.9997 Y + 1.402 V − 178.520 = 0.9997 Y + 1402 ( V − 127.4979 ) G = 1.164 ( 235 − 16 255 Y + 16 − 16 ) − 0.391 ( 240 − 16 255 U + 16 − 128 ) − 0.813 ( 240 − 16 255 V + 16 − 128 ) = 0.9997 Y − 0.3435 U + 43.792 − 0.7142 V + 91.056 = 0.9997 Y − 0.3435 ( U − 127.4846 ) − 0.7142 ( V − 127.4937 ) B = 1.164 ( 235 − 16 255 Y + 16 − 16 ) + 2.018 ∗ ( 240 − 16 255 + 16 − 128 ) = 0.9997 Y + 1.7727 U − 226.016 = 0.9997 Y + 1.7727 ( U − 127.4982 ) \footnotesize YUV\rightarrow RGB\begin{cases} {\color{red}R}=1.164\left(\frac{235-16}{255}Y+16-16\right)+1.596\left(\frac{240-16}{255}V+16-128\right) \\ \quad = 0.9997Y+1.402V-178.520=\color{red}0.9997Y+1 402(V-127.4979)\\ {\color{red}G}=1.164\left(\frac{235-16}{255}Y+16-16\right)-0.391\left(\frac{240-16}{255}U+16-128\right)-0.813\left(\frac{240-16}{255}V+16-128\right) \\ \quad =0.9997Y-0.3435U+43.792-0.7142V+91.056 \\ \quad =\color{red}0.9997Y-0.3435(U-127.4846)-0.7142(V-127.4937) \\ {\color{red}B} = 1.164\left(\frac{235-16}{255}Y+16-16\right)+2.018*\left(\frac{240-16}{255}+16-128 \right)\\ \quad = 0.9997Y+1.7727U-226.016 = \color{red}0.9997Y+1.7727(U-127.4982) \end{cases} YUVRGBR=1.164(25523516Y+1616)+1.596(25524016V+16128)=0.9997Y+1.402V178.520=0.9997Y+1402(V127.4979)G=1.164(25523516Y+1616)0.391(25524016U+16128)0.813(25524016V+16128)=0.9997Y0.3435U+43.7920.7142V+91.056=0.9997Y0.3435(U127.4846)0.7142(V127.4937)B=1.164(25523516Y+1616)+2.018(25524016+16128)=0.9997Y+1.7727U226.016=0.9997Y+1.7727(U127.4982)

第二种方式:

R G B → Y U V { Y =     0.299 R + 0.587 G + 0.114 B U = − 0.169 R − 0.331 G + 0.500 B = 0.564 ( B − Y ) V =     0.500 R − 0.419 G − 0.081 B = 0.713 ( R − Y ) \footnotesize RGB \rightarrow YUV \begin{cases} Y = \ \ \ 0.299R + 0.587G + 0.114B\\ U = -0.169R - 0.331G + 0.500B=0.564(B-Y) \\ V = \ \ \ 0.500R - 0.419G - 0.081B=0.713(R-Y) \end{cases} RGBYUVY=   0.299R+0.587G+0.114BU=0.169R0.331G+0.500B=0.564(BY)V=   0.500R0.419G0.081B=0.713(RY) Y U V → R G B { R = Y + 1.403 V G = Y − 0.344 U − 0.714 V B = Y + 1.770 U \footnotesize YUV \rightarrow RGB \begin{cases} R = Y + 1.403V\\ G = Y - 0.344U - 0.714V\\ B = Y + 1.770U \end{cases} YUVRGBR=Y+1.403VG=Y0.344U0.714VB=Y+1.770U  其中RGB以及YUV取值范围分别为:
R / G / B ∈ [ 0 , 1 ] , Y ∈ [ 0 , 1 ] , U / V ∈ [ − 0.5 , 0.5 ] \footnotesize R/G/B∈[0,1],Y∈[0,1],U/V∈[-0.5,0.5] R/G/B[0,1],Y[0,1],U/V[0.5,0.5]   当前方式出自 C C I R 601 \footnotesize CCIR 601 CCIR601

  将公式中的 Y U V \footnotesize YUV YUV R G B \footnotesize RGB RGB的取值范围以线性方式统一到 [ 0 , 255 ] : \footnotesize \color{red} \textbf [0,255 \textbf]: [0,255]:
R G B → Y U V { Y = 255 ( 0.299 R 255 + 0.587 G 255 + 0.114 B 255 ) =     0.299 R + 0.587 G + 0.114 B U = 255 ( − 0.169 R 255 − 0.331 G 255 + 0.5008 B 255 ) + 255 ∗ 0.5 = − 0.169 R − 0.331 G + 0.5008 B + 128 V = 255 ( 0.500 R 255 − 0.419 G 255 − 0.081 B 255 ) + 255 ∗ 0.5 =     0.500 R − 0.419 G − 0.081 B + 128 \footnotesize RGB\rightarrow YUV\begin{cases} {\color{red}Y}=255(0.299\frac {R}{255}+0.587\frac{G}{255} +0.114\frac{B}{255})\\ \quad = \color{red}\ \ \ 0.299R+0.587G+0.114B \\ {\color{red}U}=255(-0.169\frac {R}{255} - 0.331\frac {G}{255} + 0.5008\frac{B}{255}) + 255*0.5 \\ \quad =\color{red}-0.169R-0.331G+0.5008B+128 \\ {\color{red}V} = 255(0.500\frac {R}{255} - 0.419\frac {G}{255} - 0.081\frac{B}{255}) + 255*0.5\\ \quad = \color{red}\ \ \ 0.500R-0.419G-0.081B+128 \end{cases} RGBYUVY=255(0.299255R+0.587255G+0.114255B)=   0.299R+0.587G+0.114BU=255(0.169255R0.331255G+0.5008255B)+2550.5=0.169R0.331G+0.5008B+128V=255(0.500255R0.419255G0.081255B)+2550.5=   0.500R0.419G0.081B+128 Y U V → R G B { R = 255 ( Y 255 + 1.403 ( V 255 − 0.5 ) ) = Y + 1403 ( V − 128 ) G = 255 ( Y 255 − 0.344 ( U 255 − 0.5 ) − 0.714 ( V 255 − 0.5 ) ) = Y − 0.344 ( U − 128 ) − 0.714 ( V − 128 ) B = 255 ( Y 255 + 1.770 ( U 255 − 0.5 ) ) = Y + 1.770 ( U − 128 ) \footnotesize YUV\rightarrow RGB\begin{cases} {\color{red}R}=255\left(\frac{Y}{255}+1.403\left(\frac{V}{255}-0.5\right)\right)\\ \quad =\color{red}Y+1403(V-128)\\ {\color{red}G}=255\left(\frac{Y}{255} - 0.344\left(\frac{U}{255}-0.5\right)-0.714\left(\frac{V}{255}-0.5\right)\right) \\ \quad =\color{red}Y-0.344(U-128)-0.714(V-128) \\ {\color{red}B} = 255\left(\frac{Y}{255}+1.770\left(\frac{U}{255}-0.5\right)\right)\\ \quad = \color{red}Y+1.770(U-128) \end{cases} YUVRGBR=255(255Y+1.403(255V0.5))=Y+1403(V128)G=255(255Y0.344(255U0.5)0.714(255V0.5))=Y0.344(U128)0.714(V128)B=255(255Y+1.770(255U0.5))=Y+1.770(U128)

常用方式:

  将 R G B \footnotesize RGB RGB以及 Y U V \footnotesize YUV YUV的取值范围都缩放到 [ 0 , 255 ] \footnotesize \textbf [0,255 \textbf] [0,255]之后的常用公式为:
R G B → Y U V { Y =     0.299 R + 0.587 G + 0.114 B U = − 0.169 R − 0.331 G + 0.5008 B + 128 V =     0.500 R − 0.419 G − 0.081 B + 128 \footnotesize RGB\rightarrow YUV\begin{cases} Y= \ \ \ 0.299R+0.587G+0.114B \\ U=-0.169R-0.331G+0.5008B+128 \\ V= \ \ \ 0.500R-0.419G-0.081B+128 \end{cases} RGBYUVY=   0.299R+0.587G+0.114BU=0.169R0.331G+0.5008B+128V=   0.500R0.419G0.081B+128 Y U V → R G B { R = Y + 1.403 ( V − 128 ) G = Y − 0.343 ( U − 128 ) − 0.714 ( V − 128 ) B = Y + 1.770 ( U − 128 ) \footnotesize YUV\rightarrow RGB\begin{cases} R=Y+1.403(V-128)\\ G=Y-0.343(U-128)-0.714(V-128) \\ B= Y+1.770(U-128) \end{cases} YUVRGBR=Y+1.403(V128)G=Y0.343(U128)0.714(V128)B=Y+1.770(U128)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值