画像や動画データの中で、よく使われる色の表現にYUV(YCbCr)フォーマットがあります。
よくRGBからYUVへ変換を行うことがありますが、変換式を都度調べているので、この機会にまとめようと思います。
目次
RGBからYUVへの変換式
変換式を知りたいという方が多いと思うので、まず先に変換式から示します。YUVのフォーマットには、いくつかの規格があり、それにより変換式が異なるので、代表的なものを示します。
Yは輝度(明るさ)、Cb(U)は青色差成分(輝度から青を引いたもの)、Cr(V)は赤色差成分を表します。
BT.601方式
- Y = 0.299R + 0.587G + 0.114B
- Cb = -0.169R – 0.331G + 0.5B
- Cr = 0.5R – 0.419G – 0.081B
ここで、R、G、BはそれぞれRGBの各成分を表し、Y、Cb(U)、Cr(V)はそれぞれ輝度と色差信号を表します。
BT.709方式
- Y = 0.2126R + 0.7152G + 0.0722B
- Cb = -0.1146R – 0.3854G + 0.5B
- Cr = 0.5R – 0.4542G – 0.0458B
BT.2020方式
- Y = 0.2627R + 0.6780G + 0.0593B
- Cb = -0.13963R – 0.36037 + 0.5B
- Cr = 0.5R – 0.45979G – 0.04021B
方式の違い
BT.601は標準テレビジョン放送用(SDTV)の変換式で、BT.709は高精細テレビジョン方式(HDTV)向けの変換式です。また、最近は4K/8K UHD放送向けにBT.2020という規格も登場しています。
YUVからRGBへの変換式
BT.601方式
- R= Y + 1.402Cr
- G = Y-0.344Cb-0.714Cr
- B = Y+1.722Cb
BT.709方式
- R= Y + 1.5748Cr
- G = Y-0.1873Cb-0.4681Cr
- B = Y+1.8556Cb
BT.2020方式
- R= Y + 1.4746Cr
- G = Y-0.16455Cb-0.57135Cr
- B = Y+1.8814Cb
YUVフォーマットとは
人間の目は明るさの変化には敏感ですが、色の変化には鈍感であるということを活かしたフォーマットです。
主に画像や映像の分野で、RGBでの色表現の代わりなどに用いられています。特に画像圧縮などではRGBをYUVに変換し、Y成分に多くの情報量を割き、UVに少ない情報量を割り当てることで効率的な圧縮が可能となる場合があります。
YUVとYCbCrの違い
YUVフォーマットに関して、YCbCrと呼称する場合もあります。これらは混在して使われており、YUVとYCbCrが同じ意味で使われていることが多いです。
厳密には、YUVはPAL信号(ヨーロッパなどで使われている映像信号の規格)用のコンポーネント信号を呼び、そうでないものはYCbCrと呼び分けます。PALの話をしていることは少ないと思うので、YCbCrの方が厳密には正しいケースが多いと思います。