1. 程式人生 > >JPG-JPEG(JFIF)檔案解碼—YCbCr與RGB

JPG-JPEG(JFIF)檔案解碼—YCbCr與RGB

YCbCr,是色彩空間的一種,通常會用於影片中的影像連續處理,或是數字攝影系統中。Y為顏色的亮度luma)成分、而CB和CR則為藍色和紅色的濃度偏移量成份。Y就是所謂的流明luminance),表示光的濃度且為非線性,使用伽馬修正(gamma correction)編碼處理。

Y'CbCr不是一種絕對的色彩空間,是一種針對RGB資訊所做的編碼。真正的顏色顯示是根據實際RGB色盤(colorant)來決定的。因此Y'CbCr所表示的值只有在標準RGB色盤或是ICC資料(ICC profile)有提供的時候才能計算。

YCbCr不是一種絕對色彩空間,是YUV壓縮和偏移的版本。YCbCr的Y與YUV中的Y含義一致,Cb和Cr與UV同樣都指色彩,Cb指藍色色度,Cr指紅色色度,在應用上很廣泛,JPEG、MPEG、DVD、攝影機

數字電視等皆採此一格式。因此一般俗稱的YUV大多是指YCbCr。

以下是轉化時用到的常量:

Cred = 0.299

Cgreen = 0.587

Cblue = 0.114

一、YCbCr 轉 RGB

R = Cr * (2 - 2*Cred) + Y + 128

B = Cb * (2 - 2*Cblue)+ Y + 128

G = (Y - B * Cblue - R * Cred) / Cgreen

快速轉換:

R = Y + 1.14 * Cr + 128

B = Y + 2.032 * Cb + 128

G = Y - 0.395 * Cb - 0.581 * C人 + 128

二、RGB 轉 YCbCr

Y = Cred * R + Cgreen * G + Cblue * B Cb = (B - Y) / (2 - 2*Cblue) Cr = (R - Y) / (2 - 2*Cred) 快速轉換: Y = 0.299 * R + 0.587 * G + 0.114 * B Cb = -0.147 * R - 0.289 * G + 0.436 * B Cr = 0.615 * R - 0.515 * G - 0.100 * B