YCbCr

**YCbCr**, **Y′CbCr** hoặc **Y Pb / Cb Pr / Cr**, cũng được viết là **YC<sub>B</sub>C<sub>R</sub>** hoặc **Y'C<sub>B</sub>C<sub>R</sub>**, là một họ các không gian màu được sử dụng như một phần của đường dẫn hình ảnh màu trong video và hệ thống chụp ảnh kỹ thuật số. Y là thành phần luma và C B và C R là các thành phần sắc độ khác nhau của màu xanh và màu đỏ. Y′ (với dấu ') được phân biệt với Y, đó là độ chói, nghĩa là cường độ ánh sáng được mã hóa phi tuyến dựa trên các nguyên tắc RGB được hiệu chỉnh gamma.

Các không gian màu Y′CbCr được xác định bằng phép biến đổi tọa độ toán học từ không gian màu RGB tương ứng. Nếu không gian màu RGB bên dưới là tuyệt đối, thì không gian màu Y′CbCr cũng là một không gian màu tuyệt đối; ngược lại, nếu không gian RGB không xác định, thì Y′CbCr cũng vậy.

## Cơ sở lý luận
Màn hình ống tia catốt được điều khiển bởi các tín hiệu điện áp màu đỏ, xanh lục và xanh lam, nhưng các tín hiệu RGB này không hiệu quả như là một đại diện cho lưu trữ và truyền tải, vì chúng có rất nhiều dữ liệu thừa.

YCbCr và Y′CbCr là một xấp xỉ thực tế để xử lý màu sắc và tính đồng nhất về nhận thức, trong đó các màu chính tương ứng với màu đỏ, xanh lá cây và xanh dương được xử lý thành thông tin có ý nghĩa. Bằng cách này, việc xử lý, truyền tải và lưu trữ hình ảnh/video tiếp theo có thể thực hiện các thao tác và đưa ra các lỗi theo những cách có ý nghĩa. Y′CbCr được sử dụng để tách tín hiệu luma (Y′) có thể được lưu trữ với độ phân giải cao hoặc được truyền ở băng thông cao và hai thành phần sắc độ (CB và CR) có thể giảm băng thông, ghép lại, nén, hoặc xử lý riêng để cải thiện hiệu quả hệ thống.

Một ví dụ thực tế là giảm băng thông hoặc độ phân giải được phân bổ thành "màu" so với "đen trắng", vì con người nhạy cảm hơn với thông tin đen trắng (xem ví dụ hình ảnh bên phải). Điều này được gọi là mẫu phụ sắc độ.

## YCbCr
YCbCr đôi khi được viết tắt là **YCC**. Y′CbCr thường được gọi là YPbPr khi được sử dụng cho video thành phần tương tự, mặc dù thuật ngữ Y′CbCr thường được sử dụng cho cả hai hệ thống, có hoặc không có nguyên tố.

Y′CbCr thường bị nhầm lẫn với không gian màu YUV và thông thường các thuật ngữ YCbCr và YUV được sử dụng thay thế cho nhau, dẫn đến một số nhầm lẫn. Sự khác biệt chính là YUV là tương tự và YCbCr là kỹ thuật số.

Tín hiệu Y′CbCr (trước khi chia tỷ lệ và độ lệch để đặt tín hiệu thành dạng kỹ thuật số) được gọi là YPbPr và được tạo từ nguồn RGB (đỏ, lục và lam) được điều chỉnh gamma tương ứng bằng ba hằng số xác định KR, KG, và KB như sau:

:\begin{align}
  Y' &= K_R \cdot R' + K_G \cdot G' + K_B \cdot B'\\
 P_B &=\frac12 \cdot \frac{B' - Y'}{1 - K_B}\\ 
 P_R &=\frac12 \cdot \frac{R' - Y'}{1 - K_R}
\end{align}

Trong đó K R, K G và K B thường xuất phát từ định nghĩa của không gian RGB tương ứng và được yêu cầu để thỏa mãn K_R + K_G + K_B = 1. (Thao tác ma trận tương đương thường được gọi là "ma trận màu".)

Ở đây, các ký hiệu ' có nghĩa là hiệu chỉnh gamma đang được sử dụng; do đó, R, G và B′ có phạm vi từ 0 đến 1, với 0 biểu thị cường độ tối thiểu (ví dụ: để hiển thị màu đen) và 1 tối đa (ví dụ: để hiển thị màu trắng). Giá trị luma (Y) kết quả sau đó sẽ có phạm vi danh nghĩa từ 0 đến 1 và các giá trị sắc độ (PB và PR) sẽ có phạm vi danh nghĩa từ -0,5 đến + 0,5. Quá trình chuyển đổi ngược có thể dễ dàng bắt nguồn bằng cách đảo ngược các phương trình trên.

Khi biểu diễn các tín hiệu ở dạng kỹ thuật số, các kết quả được chia tỷ lệ và làm tròn, và độ lệch thường được thêm vào. Ví dụ: tỷ lệ và bù được áp dụng cho thành phần Y per trên mỗi thông số kỹ thuật (ví dụ: MPEG-2 ) dẫn đến giá trị 16 cho màu đen và giá trị 235 cho màu trắng khi sử dụng biểu diễn 8 bit. Tiêu chuẩn có các phiên bản số hóa 8 bit của C B và C R được chia tỷ lệ thành một phạm vi khác nhau từ 16 đến 240. Do đó, đôi khi thay đổi kích thước theo phân số (235-16) / (240-16) = 219/224 khi thực hiện ma trận màu hoặc xử lý trong không gian YCbCr, dẫn đến biến dạng lượng tử hóa khi quá trình xử lý tiếp theo không được thực hiện bằng độ sâu bit cao hơn.

Tỷ lệ dẫn đến việc sử dụng một phạm vi giá trị kỹ thuật số nhỏ hơn so với mức có thể mong muốn để biểu thị phạm vi danh nghĩa của dữ liệu đầu vào cho phép một số "vượt quá" và "nhấp nhô" trong quá trình xử lý mà không cần phải cắt. "Phòng đầu" và "phòng chân" này cũng có thể được sử dụng để mở rộng gam màu danh nghĩa, như được chỉ định bởi xvYCC.

Giá trị 235 chứa độ vọt lố đen trắng tối đa 255 - 235 = 20 hoặc 20 / (235 - 16) = 9,1%, lớn hơn một chút so với độ vọt lố tối đa theo lý thuyết (Hiện tượng của Gibbs) với khoảng 8,9% bước tối đa. Phòng ngón chân nhỏ hơn, chỉ cho phép vượt quá 16/219 = 7,3%, thấp hơn mức vượt quá tối đa theo lý thuyết là 8,9%.

Do các phương trình xác định YCbCr được hình thành theo cách xoay toàn bộ khối màu RGB danh nghĩa và chia tỷ lệ cho phù hợp với khối màu YCbCr (lớn hơn), nên có một số điểm trong khối màu YCbCr *không* thể biểu thị trong miền RGB tương ứng (ít nhất là không nằm trong phạm vi RGB danh nghĩa). Điều này gây ra một số khó khăn trong việc xác định cách giải thích chính xác và hiển thị một số tín hiệu YCbCr. Các giá trị YCbCr ngoài phạm vi này được xvYCC sử dụng để mã hóa màu bên ngoài gam BT.709. 

### Chuyển đổi ITU-R BT.601
Hình thức Y′CbCr được xác định để sử dụng truyền hình độ nét tiêu chuẩn trong tiêu chuẩn ITU-R BT.601 (trước đây là CCIR 601) để sử dụng với video thành phần kỹ thuật số được lấy từ không gian RGB tương ứng như sau: 
:\begin{align}
 K_R &= 0.299\\
 K_G &= 0.587\\
 K_B &= 0.114
\end{align}

Từ các hằng số và công thức trên, có thể rút ra các từ sau cho ITU-R BT.601.

YPbPr tương tự từ R'G'B 'tương tự có nguồn gốc như sau: 
:\begin{align}
 Y' &= & 0.299  \cdot R' &+& 0.587  \cdot G' &+& 0.114  \cdot B'\\
 P_B &= -& 0.168736 \cdot R' &-& 0.331264 \cdot G' &+& 0.5   \cdot B'\\
 P_R &= & 0.5   \cdot R' &-& 0.418688 \cdot G' &-& 0.081312 \cdot B'
\end{align}
Y′CbCr kỹ thuật số (8 bit cho mỗi mẫu) có nguồn gốc từ R'G'B' tương tự như sau: 
:\begin{align}
 Y' &=& 16 &+& (65.481 \cdot R' &+& 128.553 \cdot G' &+& 24.966 \cdot B')\\
 C_B &=& 128 &+& (-37.797 \cdot R' &-& 74.203 \cdot G' &+& 112.0 \cdot B')\\
 C_R &=& 128 &+& (112.0  \cdot R' &-& 93.786 \cdot G' &-& 18.214 \cdot B')
\end{align}

hoặc đơn giản là
:\begin{align}
 (Y', C_B, C_R) &=& (16, 128, 128 ) + (219 \cdot Y, 224 \cdot P_B, 224 \cdot P_R)\\
\end{align}

Các tín hiệu tổng hợp nằm trong khoảng từ 16 đến 235 cho Y ′ (dải Cb và Cr từ 16 đến 240); các giá trị từ 0 đến 15 được gọi là *footroom*, trong khi các giá trị từ 236 đến 255 được gọi là *headroom*.

Ngoài ra, Y′CbCr kỹ thuật số có thể được lấy từ R'dG'dB'd kỹ thuật số (8 bit cho mỗi mẫu, mỗi mẫu sử dụng phạm vi đầy đủ với số không đại diện cho màu đen và 255 đại diện cho màu trắng) theo các phương trình sau: 
:\begin{align}
 Y' &=& 16 &+& \frac{ 65.481 \cdot R'_D}{255} &+& \frac{128.553 \cdot G'_D}{255} &+& \frac{ 24.966 \cdot B'_D}{255}\\
 C_B &=& 128 &-& \frac{ 37.797 \cdot R'_D}{255} &-& \frac{ 74.203 \cdot G'_D}{255} &+& \frac{112.0 \cdot B'_D}{255}\\
 C_R &=& 128 &+& \frac{112.0 \cdot R'_D}{255} &-& \frac{ 93.786 \cdot G'_D}{255} &-& \frac{ 18.214 \cdot B'_D}{255}
\end{align}

Trong công thức dưới đây, các hệ số tỷ lệ được nhân với \frac{256}{255}. Điều này cho phép giá trị 256 trong mẫu số, có thể được tính bằng một bitshift đơn. 
:\begin{align}
 Y' &=& 16 &+& \frac{ 65.738 \cdot R'_D}{256} &+& \frac{129.057 \cdot G'_D}{256} &+& \frac{ 25.064 \cdot B'_D}{256}\\
 C_B &=& 128 &-& \frac{ 37.945 \cdot R'_D}{256} &-& \frac{ 74.494 \cdot G'_D}{256} &+& \frac{112.439 \cdot B'_D}{256}\\
 C_R &=& 128 &+& \frac{112.439 \cdot R'_D}{256} &-& \frac{ 94.154 \cdot G'_D}{256} &-& \frac{ 18.285 \cdot B'_D}{256}
\end{align}

Nếu nguồn kỹ thuật số của R'd G'd bao gồm footroom và headroom, thì phần bù chân 16 cần được trừ trước tiên từ mỗi tín hiệu và hệ số tỷ lệ là \frac{255}{219} cần được đưa vào các phương trình.

Biến đổi nghịch đảo là: 
:\begin{align}
 R'_D &=& \frac{298.082 \cdot Y'}{256} &&&+& \frac{408.583 \cdot C_R}{256} &-& 222.921\\
 G'_D &=& \frac{298.082 \cdot Y'}{256} &-& \frac{100.291 \cdot C_B}{256} &-& \frac{208.120 \cdot C_R}{256} &+& 135.576\\
 B'_D &=& \frac{298.082 \cdot Y'}{256} &+& \frac{516.412 \cdot C_B}{256} &&&-& 276.836
\end{align}

Biến đổi nghịch đảo không có bất kỳ phép làm tròn nào (sử dụng các giá trị đến trực tiếp từ khuyến nghị ITU-R BT.601) là: 
:\begin{align}
 R'_D &=& \frac{255}{219}\cdot(Y'-16) && && && &+& \frac{255}{224}\cdot1.402 && &&\cdot(C_R-128)\\
 G'_D &=& \frac{255}{219}\cdot(Y'-16) &-& \frac{255}{224}\cdot1.772 && \cdot\frac{0.114}{0.587} &&\cdot(C_B-128) &-& \frac{255}{224}\cdot1.402 &&\cdot\frac{0.299}{0.587}&&\cdot(C_R-128)\\
 B'_D &=& \frac{255}{219}\cdot(Y'-16) &+& \frac{255}{224}\cdot1.772 && &&\cdot(C_B-128)
\end{align}

Dạng Y′CbCr này được sử dụng chủ yếu cho các hệ thống truyền hình độ nét tiêu chuẩn cũ hơn, vì nó sử dụng mô hình RGB phù hợp với đặc tính phát xạ phosphor của màn CRT cũ.

### Chuyển đổi ITU-R BT.709

Một dạng khác của Y′CbCr được chỉ định trong tiêu chuẩn ITU-R BT.709, chủ yếu dành cho sử dụng HDTV. Hình thức mới hơn cũng được sử dụng trong một số ứng dụng định hướng hiển thị trên máy tính. Trong trường hợp này, các giá trị của Kb và Kr khác nhau, nhưng các công thức để sử dụng chúng là như nhau. Đối với ITU-R BT.709, các hằng số là: 
:\begin{align}
 K_B &= 0.0722 \\
 K_R &= 0.2126 \\
 (K_G &= 1-K_B-K_R = 0.7152)
\end{align}

Dạng Y′CbCr này dựa trên mô hình RGB phù hợp hơn với các đặc tính phát thải phosphor của CRT mới hơn và các thiết bị hiển thị hiện đại khác.

Các định nghĩa của tín hiệu R', G' và B' cũng khác nhau giữa BT.709 và BT.601 và khác nhau trong BT.601 tùy thuộc vào loại hệ thống TV được sử dụng (625 dòng như trong PAL và SECAM hoặc 525-line như trong NTSC), và khác biệt hơn nữa trong các thông số kỹ thuật khác. Trong các thiết kế khác nhau, có sự khác biệt trong định nghĩa về tọa độ màu R, G và B, điểm trắng tham chiếu, phạm vi gam được hỗ trợ, các hàm bù trước gamma chính xác để lấy R ', G' và B 'từ R, G, và B, và trong tỷ lệ và độ lệch được áp dụng trong quá trình chuyển đổi từ R'G'B 'sang Y′CbCr. Vì vậy, việc chuyển đổi YCbCr thích hợp từ dạng này sang dạng khác không chỉ là vấn đề đảo ngược một ma trận và áp dụng dạng khác. Trong thực tế, khi Y′CbCr được thiết kế lý tưởng, các giá trị của K B và K R được lấy từ thông số kỹ thuật chính xác của tín hiệu chính màu RGB, do đó tín hiệu luma (Y ′) tương ứng gần nhất với gamma- điều chỉnh độ chói (thường dựa trên các phép đo CIE 1931 về phản ứng của hệ thống thị giác của con người đối với các kích thích màu sắc).

### Chuyển đổi ITU-R BT.2020
Tiêu chuẩn ITU-R BT.2020 xác định cả YmaCCr đã sửa lỗi gamma và phiên bản mã hóa tuyến tính của YCbCr được gọi là YcCbcCrc. YcCbcCrc có thể được sử dụng khi ưu tiên hàng đầu là lưu giữ thông tin độ chói chính xác nhất. Đối với YcCbcCrc, các hệ số là: 
:\begin{align}
 K_B &= 0.0593 \\
 K_R &= 0.2627
\end{align}

### Chuyển đổi JPEG
Việc sử dụng JPEG của JFIF hỗ trợ Y′CbCr trong đó Y ′, C B và C R có phạm vi 8 bit đầy đủ là [0... 255]. Dưới đây là các phương trình chuyển đổi được biểu thị thành sáu chữ số thập phân của độ chính xác. (Đối với các phương trình lý tưởng, xem ITU-T T.871.) Lưu ý rằng đối với các công thức sau, phạm vi của từng đầu vào (R, G, B) cũng là phạm vi 8 bit đầy đủ của [0... 255]. 
:\begin{align}
 Y' &=&  0 &+ (0.299  & \cdot R'_D) &+ (0.587  & \cdot G'_D) &+ (0.114  & \cdot B'_D)\\
 C_B &=& 128 & - (0.168736 & \cdot R'_D) &- (0.331264 & \cdot G'_D) &+ (0.5   & \cdot B'_D)\\
 C_R &=& 128 &+ (0.5   & \cdot R'_D) &- (0.418688 & \cdot G'_D) &- (0.081312 & \cdot B'_D)
\end{align}

Và chuyển ngược lại: 
:\begin{align}
 R'_D &=& Y'              &&& + 1.402  & \cdot (C_R-128) \\
 G'_D &=& Y'  & - 0.344136 & \cdot (C_B-128)& - 0.714136 & \cdot (C_R-128) \\
 B'_D &=& Y'  & + 1.772  & \cdot (C_B-128)&
\end{align}

## Tham khảo