Không gian màu Oklab

Không gian màu này được Björn Ottosson công bố vào tháng 12 năm 2020. Oklab và phiên bản hình trụ của nó là Oklch đã được đưa vào bản thảo mô đun màu CSS cấp 4 và cấp 5 dành cho màu web không phụ thuộc thiết bị kể từ tháng 12 năm 2021. Không gian màu này bắt đầu được hỗ trợ trên các phiên bản gần đây của các trình duyệt web phổ biến và cho phép chỉ định rõ ràng những màu thuộc hệ màu P3 gam màu rộng.

Mô hình của Oklab được điều chỉnh bằng các dữ liệu miêu tả màu sắc cải tiến, bao gồm dữ liệu CAM16 đối với độ sáng và độ kết tủa màu (chroma), dữ liệu IPT cho sắc độ. Sự điều chỉnh mới này đã giải quyết được một số vấn đề, chẳng hạn như sự biến đổi sắc độ và độ sáng dị thường đối với các màu xanh lam trong không gian màu CIELAB, cũng như đơn giản hoá việc tạo ra các lược đồ màu, bảng màu và màu chuyển sắc mượt mà hơn.

Theo Ottosson,

Chuyển đổi giữa các không gian màu

Chuyển đổi qua lại với Oklch
Giống như trong hệ màu CIELCh, các tọa độ a và b thuộc hệ toạ độ Descartes được chuyển thành các toạ độ C và h thuộc hệ tọa độ cực theo công thức sau:

\begin{align}
C &= \sqrt{a^2 + b^2} \\
h &= \operatorname{arctan2}(b, a)
\end{align}

Và các tọa độ cực được chuyển ngược lại sang hệ tọa độ Descartes như sau:

\begin{align}
a &= C \cos(h) \\
b &= C \sin(h)
\end{align}

Chuyển đổi từ CIE XYZ
Việc chuyển từ không gian màu CIE XYZ với Nguồn sáng Tiêu chuẩn D65 (Illuminant D65) sang Oklab bao gồm các bước sau:

Áp dụng ánh xạ tuyến tính M1 với giá trị cụ thể ở phần dưới đây: \begin{bmatrix} l \\ m \\ s \end{bmatrix} = \mathbf M_1 \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}
Áp dụng căn bậc ba, là phép biến đổi phi tuyến tính: \begin{bmatrix} l' \\ m' \\ s' \end{bmatrix} = \begin{bmatrix} l^{1/3} \\ m^{1/3} \\ s^{1/3} \end{bmatrix}
Chuyển sang hệ Oklab bằng một ánh xạ tuyến tính M2: \begin{bmatrix} L \\ a \\ b \end{bmatrix} = \mathbf M_2 \begin{bmatrix} l' \\ m' \\ s' \end{bmatrix}

Trong đó:

\begin{align}
\mathbf M_1 &= \begin{bmatrix}
0.8189330101 & \phantom{-}0.3618667424 & -0.1288597137 \\
0.0329845436 & \phantom{-}0.9293118715 & \phantom{-}0.0361456387 \\
0.0482003018 & \phantom{-}0.2643662691 & \phantom{-}0.6338517070
\end{bmatrix} \\
\mathbf M_2 &= \begin{bmatrix}
0.2104542553 & \phantom{-}0.7936177850 & -0.0040720468 \\
1.9779984951 & -2.4285922050 & \phantom{-}0.4505937099 \\
0.0259040371 & \phantom{-}0.7827717662 & -0.8086757660
\end{bmatrix}
\end{align}

Chuyển đổi từ hệ sRGB
Để chuyển đổi từ hệ màu sRGB sang Oklab, trước tiên cần phải chuyển đổi từ hệ màu sRGB sang hệ màu CIE XYZ với Nguồn sáng Tiêu chuẩn D65. Vì bước cuối cùng của quá trình chuyển đổi này là ánh xạ tuyến tính từ hệ RGB tuyến tính sang hệ CIE XYZ, cho nên bản cài đặt tham khảo sẽ gộp hai phép ánh xạ tuyến tính tương ứng thành một ma trận để nhân ma trận trực tiếp:

:
\begin{bmatrix} l \\ m \\ s \end{bmatrix} =
\begin{bmatrix}
0.4122214708 & 0.5363325363 & 0.0514459929 \\
0.2119034982 & 0.6806995451 & 0.1073969566 \\
0.0883024619 & 0.2817188376 & 0.6299787005
\end{bmatrix}
\begin{bmatrix} R_\text{linear} \\ G_\text{linear} \\ B_\text{linear} \end{bmatrix}

Chuyển đổi sang CIE XYZ và sRGB
Việc chuyển đổi sang CIE XYZ và sRGB chỉ đơn giản là áp dụng các hàm ngược tương ứng theo thứ tự ngược lại:

\begin{align}
\begin{bmatrix} l' \\ m' \\ s' \end{bmatrix} &= \mathbf M_2^{-1} \begin{bmatrix} L \\ a \\ b \end{bmatrix} \\
\begin{bmatrix} l \\ m \\ s \end{bmatrix} &= \begin{bmatrix} \left(l'\right)^3 \\ \left(m'\right)^3 \\ \left(s'\right)^3 \end{bmatrix} \\
\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} &= \mathbf M_1^{-1} \begin{bmatrix} l \\ m \\ s \end{bmatrix}
\end{align}

Ghi chú

Tham khảo