完整版万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712071/
建模思路
问题一:颜色空间转换 (BT.2020 到普通显示屏RGB)
问题描述: 设计从BT.2020标准的高清视频源三基色颜色空间到普通显示屏RGB三基色空间的转换映射,使得色彩转换损失最小。普通显示屏的色域小于BT.2020,因此色彩损失不可避免。需要定义合适的转换损失函数。
建模思路:
-
定义源和目标颜色空间:
-
源颜色空间 (BT.2020):
-
其三基色(R, G, B)的色度坐标 (x, y) 和白点 (D65) 是标准定义的。根据查阅的资料(例如来自 BenQ 和 color.org 的信息),BT.2020 的 primaries (D65白点) 通常为:
-
Red: (xR, yR) = (0.708, 0.292)
-
Green: (xG, yG) = (0.170, 0.797)
-
Blue: (xB, yB) = (0.131, 0.046)
-
White Point D65: (xW, yW) = (0.3127, 0.3290)
-
-
-
目标颜色空间 (普通显示屏RGB):
-
题目中未明确指定,通常可以假定为sRGB色空间,这也是一种广泛使用的标准。根据查阅的资料 (Wikipedia),sRGB 的 primaries (D65白点) 为:
-
Red: (xR', yR') = (0.6400, 0.3300)
-
Green: (xG', yG') = (0.3000, 0.6000)
-
Blue: (xB', yB') = (0.1500, 0.0600)
-
White Point D65: (xW', yW') = (0.3127, 0.3290) (与BT.2020一致)
-
-
-
-
颜色空间转换流程:
-
RGB 到 XYZ: 对于给定的RGB值(通常是归一化到 [0,1]),首先需要进行伽马校正(如果RGB值是非线性的)。然后,通过一个3x3的转换矩阵将线性RGB值转换到CIE XYZ三刺激值。这个矩阵由源/目标颜色空间的基色色度坐标和白点决定。
$$
\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = M_{RGB \to XYZ} \begin{bmatrix} R \\ G \\ B \end{bmatrix}
$$矩阵 M_{RGB \to XYZ} 的推导是一个标准过程,需要求解以下方程组(以源BT.2020为例):
$$
\begin{bmatrix} x_R/y_R & x_G/y_G & x_B/y_B \\ 1 & 1 & 1 \\ z_R/y_R & z_G/y_G & z_B/y_B \end{bmatrix} \begin{bmatrix} S_R \\ S_G \\ S_B \end{bmatrix} = \begin{bmatrix} X_W/Y_W \\ 1 \\ Z_W/Y_W \end{bmatrix}
$$其中 z_i = 1 - x_i - y_i,S_R, S_G, S_B 是缩放因子。然后转换矩阵为:
$$
M_{RGB \to XYZ} = \begin{bmatrix} S_R \cdot x_R/y_R & S_G \cdot x_G/y_G & S_B \cdot x_B/y_B \\ S_R & S_G & S_B \\ S_R \cdot z_R/y_R & S_G \cdot z_G/y_G & S_B \cdot z_B/y_B \end{bmatrix} \cdot Y_W
$$(通常 Y_W 设为1,代表白点的亮度) 需要为BT.2020 (M_{BT2020 \to XYZ}) 和普通显示屏 (M_{Display \to XYZ}) 分别构建这样的矩阵。
-
XYZ 到 RGB: 类似地,可以得到从XYZ到目标显示屏RGB的转换矩阵:
$$
\begin{bmatrix} R' \\ G' \\ B' \end{bmatrix} = M_{XYZ \to DisplayRGB} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}
$$其中 M_{XYZ \to DisplayRGB} = (M_{Display \to XYZ})^{-1}。之后可能需要进行伽马压缩。
-
完整转换: RGB_{BT.2020} \xrightarrow{\text{linearize}} R_{lin}G_{lin}B_{lin} \xrightarrow{M_{BT2020 \to XYZ}} XYZ \xrightarrow{M_{XYZ \to DisplayRGB}} R'_{lin}G'_{lin}B'_{lin} \xrightarrow{\text{gamma compress}} RGB'_{Display}
-
-
定义转换损失函数:
-
色彩转换损失应在感知均匀的颜色空间中定义,例如 CIELAB 或 CIELUV。CIELAB (L^*a^*b^*) 是常用的选择。
-
XYZ 到 CIELAB:
-
$$
L^* = 116 \cdot f(Y/Y_n) - 16
$$
$$
a^* = 500 \cdot [f(X/X_n) - f(Y/Y_n)]
$$
$$
b^* = 200 \cdot [f(Y/Y_n) - f(Z/Z_n)]
$$
其中 X_n, Y_n, Z_n 是参考白点(D65)的XYZ值,函数 f(t) 定义为:
$$
f(t) = \begin{cases} t^{1/3} & \text{if } t > (6/29)^3 \\ (1/3)(29/6)^2 t + 4/29 & \text{otherwise} \end{cases}
$$
-
色差公式 (\Delta E): 推荐使用 CIEDE2000 (\Delta E_{00}^*),因为它比早期的 \Delta E_{ab}^* (CIE76) 或 \Delta E_{94}^* 更能准确反映人眼对色差的感知。其公式较为复杂,包含对亮度 (L^*)、色度 (C^*) 和色调 (h^*) 差异的加权,以及交互项。具体公式可以查阅相关文献或标准 (例如 Sharma et al. 的实现说明)。
-
损失函数构建: 可以选择在一系列代表性的BT.2020色域内采样点上计算 \Delta E_{00}^*。损失函数可以是这些采样点上 \Delta E_{00}^* 的平均值、最大值或某种加权和。
$$
Loss = \frac{1}{N} \sum_{i=1}^{N} \Delta E_{00}^*(Lab_{orig,i}, Lab_{disp,i})
$$其中 $Lab_{orig,i}$ 是原始BT.2020颜色在CIELAB空间中的值,$Lab_{disp,i}$ 是其在显示屏上再现的颜色(经过转换和可能的色域映射后)在CIELAB空间中的值。
-
色域映射 (Gamut Mapping Algorithm - GMA):
-
由于BT.2020色域远大于普通显示屏(如sRGB)的色域,许多BT.2020中的颜色无法在目标显示屏上精确再现(即 R'_{lin}G'_{lin}B'_{lin} 值可能超出 [0,1] 范围)。
-
需要设计或选择一个GMA,将超出目标色域的颜色映射到目标色域边界或内部。
-
常见的GMA策略包括:
-
Clipping (裁剪): 将超出范围的 R', G', B' 值直接裁剪到 [0,1] 区间。这很简单,但可能导致色调偏移和细节丢失。
-
Linear Compression (线性压缩): 将整个源色域线性压缩到目标色域。
-
Hue-preserving/Chroma-dependent mapping (保色调/色度相关映射): 例如,保持色调角 (hue angle) 和亮度 (L^*) 不变(或按比例变化),将色度 (C^*) 压缩到目标色域边界。常见的有点是沿着恒定色调角和恒定亮度的直线,将颜色拉向亮度轴上的中性点或色域边界上的某点。
-
-
映射目标: 使上述定义的损失函数最小化。
-
映射过程可能在XYZ空间、CIELAB空间或其他中间颜色空间进行。
-
-
设计转换映射:
-
如果只是线性转换,则转换矩阵是固定的。此时,色彩损失主要是由色域裁剪或简单压缩造成的。
-
如果采用更复杂的GMA,"设计转换映射"可能指选择合适的GMA及其参数,以最小化定义的损失函数。这可能涉及到对不同GMA策略的评估,或对某个参数化GMA的参数进行优化。
-
代码逻辑思路:
-
数据准备:
-
定义BT.2020和sRGB(或其他选定显示屏)的基色色度坐标 (x,y) 和白点。
-
计算从BT.2020 RGB到XYZ的转换矩阵 (M_{BT2020 \to XYZ})。
-
计算从XYZ到显示屏RGB的转换矩阵 (M_{XYZ \to DisplayRGB})。
-
-
实现颜色转换函数:
-
bt2020_to_xyz(rgb_bt2020)
: 输入BT.2020 RGB值,输出XYZ值 (包括线性化)。 -
xyz_to_display_rgb(xyz)
: 输入XYZ值,输出显示屏线性RGB值。 -
xyz_to_lab(xyz, white_point_xyz)
: 输入XYZ值和参考白点,输出CIELAB值。 -
calculate_ciede2000(lab1, lab2)
: 输入两组CIELAB值,输出 \Delta E_{00}^*。
-
-
实现色域映射算法 (GMA):
-
apply_gamut_mapping(rgb_display_linear, target_gamut_primaries_xyz)
: 输入线性显示屏RGB值(可能超出[0,1]),应用所选的GMA(如裁剪、压缩等),输出在目标色域内的线性RGB值。这部分可能需要在CIELAB空间进行判断和调整。
-
-
损失函数评估:
-
生成一系列BT.2020色域内的采样颜色点 (例如,均匀分布的RGB立方体格点)。
-
对于每个采样点:
-
将其从BT.2020 RGB转换为XYZ (XYZ_{orig})。
-
将 XYZ_{orig} 转换为目标显示屏的线性RGB (RGB'_{lin, ideal})。
-
应用GMA得到实际能在显示屏上显示的线性RGB (RGB'_{lin, mapped})。
-
将 RGB'_{lin, mapped} 转换回XYZ (XYZ_{disp})。
-
将 XYZ_{orig} 和 XYZ_{disp} 分别转换为 Lab_{orig} 和 Lab_{disp}。
-
计算 \Delta E_{00}^*(Lab_{orig}, Lab_{disp})。
-
-
计算所有采样点的平均/最大 \Delta E_{00}^* 作为损失。
-
-
优化 (如果GMA有可调参数):
-
如果GMA有参数(例如压缩算法的压缩点或曲线形状参数),可以使用优化算法(如Nelder-Mead、梯度下降等,取决于问题复杂性)来调整这些参数,以最小化损失函数。
-
参考网络资料:
-
BT.2020 标准文档 (ITU-R BT.2020)
-
sRGB 标准文档 (IEC 61966-2-1)
-
CIEDE2000 色差公式的相关论文和实现说明(如上搜索结果)。
-
关于色域映射算法的综述和论文(如上搜索结果)。
问题二:颜色空间转换 (4通道RGBV 到 5通道RGBCX)
问题描述: 摄像机可输出四基色视频源RGBV,坐标分别为R:(Y_R, x_R, y_R), G:(Y_G, x_G, y_G), B:(Y_B, x_B, y_B), V:(Y_V, x_V, y_V)。设计五基色显示屏RGBCX。定义合适的颜色转换映射,将4通道信号转换到5通道LED显示器上,使颜色转换损失最小。
建模思路:
-
定义源和目标颜色空间的基色:
-
源4通道RGBV:
-
题目已给出每个基色的亮度和色度坐标 (Y_S, x_S, y_S),其中 S \in \{R, G, B, V\}。
-
首先需要将每个基色的 (x_S, y_S, Y_S) 转换为XYZ值: X_S = (x_S / y_S) \cdot Y_S Y_S = Y_S Z_S = ((1 - x_S - y_S) / y_S) \cdot Y_S
-
构成源转换矩阵 M_{Source} (3x4),其列向量为各基色的XYZ值: M_{Source} = \begin{bmatrix} X_R & X_G & X_B & X_V \\ Y_R & Y_G & Y_B & Y_V \\ Z_R & Z_G & Z_B & Z_V \end{bmatrix}
-
一个源颜色信号 [r_s, g_s, b_s, v_s]^T (各分量在[0,1]之间,代表各基色的强度) 对应的XYZ值为: \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}_{Source} = M_{Source} \begin{bmatrix} r_s \\ g_s \\ b_s \\ v_s \end{bmatrix}
-
-
目标5通道RGBCX显示屏:
-
题目中未明确给出C(Cyan)和X(可能是Yellow或其他颜色)基色的 (Y, x, y) 坐标。这些坐标是建模的关键,必须假设已知或从其他途径获取。
-
假设已知C:(Y_C, x_C, y_C) 和 X:(Y_X, x_X, y_X),以及显示屏的R,G,B基色(可能与问题一中的不同,也可能相同,设为 R_d, G_d, B_d)。
-
同样将这五个基色转换为XYZ值,构成目标转换矩阵 M_{Display} (3x5): M_{Display} = \begin{bmatrix} X_{Rd} & X_{Gd} & X_{Bd} & X_C & X_X \\ Y_{Rd} & Y_{Gd} & Y_{Bd} & Y_C & Y_X \\ Z_{Rd} & Z_{Gd} & Z_{Bd} & Z_C & Z_X \end{bmatrix}
-
显示屏通过驱动信号 [r_d, g_d, b_d, c_d, x_d]^T (各分量在[0,1]) 产生颜色: \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}_{Display} = M_{Display} \begin{bmatrix} r_d \\ g_d \\ b_d \\ c_d \\ x_d \end{bmatrix}
-
-
-
颜色转换映射 (色彩分离 Color Separation / Decomposition):
-
目标是对于一个由源信号 [r_s, g_s, b_s, v_s]^T 产生的XYZ颜色 (XYZ_{Source}),找到一组显示驱动信号 [r_d, g_d, b_d, c_d, x_d]^T 使得 M_{Display} \cdot [r_d, ..., x_d]^T \approx XYZ_{Source},并且颜色转换损失最小,同时满足 0 \le r_d, ..., x_d \le 1。
-
这是一个欠定问题 (XYZ_{Source} 是3维的,而驱动信号是5维的),如果 XYZ_{Source} 在显示屏色域内,通常有无穷多组解(metamers)。
-
优化目标:
-
主目标: 最小化色差 \Delta E_{00}^* (Lab_{Source}, Lab_{Display})。
-
次要目标/约束 (可选,用于从metamers中选择):
-
最大化驱动信号的平滑度或最小化总能量 (e.g., \sum d_i^2 最小)。
-
优先使用某些基色组合。
-
保持颜色之间的相对关系。
-
-
-
-
定义转换损失函数:
-
同问题一,使用 CIEDE2000 (\Delta E_{00}^*) 在一系列采样点上进行评估。
-
-
色域映射:
-
如果 XYZ_{Source} 超出了五基色显示屏的色域,则需要进行色域映射。
-
多基色显示器的色域边界通常比三基色的更复杂 (例如,非凸的)。
-
GMA策略需要适应多基色系统。可能包括将颜色拉向色域表面,同时试图保持感知属性。
-
-
设计转换映射 (优化问题):
-
对于每个源颜色 C_{in} = [r_s, g_s, b_s, v_s]^T:
-
计算其对应的 XYZ_{Source} = M_{Source} \cdot C_{in}。
-
求解优化问题,找到 D_{out} = [r_d, g_d, b_d, c_d, x_d]^T: \min_{D_{out}} \Delta E_{00}^* (XYZ_{Source}, M_{Display} \cdot D_{out}) \text{subject to: } 0 \le d_i \le 1 \text{ for } i \in \{r,g,b,c,x\}
-
-
处理色域外颜色: 如果 XYZ_{Source} 无法在显示屏色域内精确匹配(即上述优化问题在 \Delta E_{00}^* = 0 时无解于约束内),则需要一个GMA策略。这通常意味着目标XYZ值需要被修改为显示色域内的一个点 XYZ'_{Source},然后再进行色彩分离。GMA本身也应以最小化感知差异为目标。
-
实现方法:
-
直接优化: 对每个点进行非线性优化。计算量可能较大。
-
查找表 (LUT): 预计算一个从源颜色空间(或某个中间空间如CIELAB)到目标驱动信号的LUT。LUT的构建过程本身可能涉及优化。
-
分段线性或多面体方法: 将色域划分为子区域,每个区域使用不同的策略。
-
-
代码逻辑思路:
-
数据准备与矩阵构建:
-
定义源RGBV基色的 (Y,x,y) 并计算 M_{Source} (3x4)。
-
定义目标RGBCX基色的 (Y,x,y) 并计算 M_{Display} (3x5)。 (需要明确C和X基色参数)
-
实现XYZ到CIELAB及CIEDE2000的函数(同问题一)。
-
-
色彩分离与色域映射核心逻辑:
-
calculate_display_signals(xyz_source, m_display, display_primaries_xyz)
:-
输入源XYZ值,显示屏基色矩阵 M_{Display},以及显示屏基色本身的XYZ值(用于定义色域边界)。
-
检查是否在色域内: 判断 xyz\_source 是否可以用 M_{Display} \cdot D_{out} (其中 0 \le d_i \le 1) 表示。这本身可能是一个线性规划问题。
-
如果在色域内: 这是一个欠定线性系统 M_{Display} \cdot D_{out} = xyz\_source。需要选择一个解。例如,可以求伪逆并加入约束,或者优化次要目标 (如最小化 \sum d_i^2)。
-
一个简单的方法是尝试将色域划分为由3个基色张成的子四面体(或5个基色情况下的更复杂单元),并判断颜色落在哪一个单元内,然后用该单元的基色进行分解。
-
-
如果色域外: 应用GMA。
-
将 xyz\_source 映射到显示屏色域边界上的点 xyz'_{source} (例如,通过保持色调和亮度,压缩色度)。
-
然后为 xyz'_{source} 进行色彩分离。
-
-
输出驱动信号 D_{out} = [r_d, g_d, b_d, c_d, x_d]^T。
-
-
-
损失函数评估:
-
生成一系列源RGBV颜色空间的采样点。
-
对每个采样点:
-
源RGBV \rightarrow XYZ_{Source} \rightarrow Lab_{Source}。
-
XYZ_{Source} \rightarrow (通过上述色彩分离与GMA) D_{out}。
-
XYZ_{Display} = M_{Display} \cdot D_{out} \rightarrow Lab_{Display}。
-
计算 \Delta E_{00}^*(Lab_{Source}, Lab_{Display})。
-
-
计算平均/最大损失。
-
-
可能的优化:
-
如果GMA有参数,或色彩分离中有加权/选择策略,可以尝试优化这些参数/策略以最小化整体损失。
-
参考网络资料:
-
多基色显示技术论文,特别是关于色彩分离 (color separation / decomposition) 和色域映射的算法。 (如搜索结果中提到的)
-
凸优化、线性规划等数学方法。
问题三:LED显示器颜色校正
问题描述: 利用(1)-(2)的色域转换结果,对64x64的显示数据模块进行全屏颜色校正。目标是使显示器在标定值 (如R,G,B各通道输入220) 下呈现均匀一致的颜色输出。附件提供了目标值和每个受扰动的屏幕显示的R,G,B值。
数据文件解读:
-
"RGB目标值.csv": 64x64矩阵,每个元素为220。根据说明,这代表当目标为纯红时,R通道输入220,G,B为0;目标纯绿时,G为220,R,B为0;目标纯蓝时,B为220,R,G为0。
-
"R_R.csv", "R_G.csv", "R_B.csv": 64x64矩阵,分别表示当输入为 (220,0,0) 时,各像素实际测量的R,G,B输出值。
-
"G_R.csv", "G_G.csv", "G_B.csv": 64x64矩阵,分别表示当输入为 (0,220,0) 时,各像素实际测量的R,G,B输出值。
-
"B_R.csv", "B_G.csv", "B_B.csv": 64x64矩阵,分别表示当输入为 (0,0,220) 时,各像素实际测量的R,G,B输出值。
建模思路:
-
像素级特性表征:
-
对于每个像素 (i,j)(其中 i,j \in [0,63]),我们可以构建一个3x3的响应矩阵 A_{ij}。
-
当输入为 R_{in} = [220, 0, 0]^T,实际输出为 RGB_{out,R,ij} = [R\_R_{ij}, R\_G_{ij}, R\_B_{ij}]^T。
-
当输入为 G_{in} = [0, 220, 0]^T,实际输出为 RGB_{out,G,ij} = [G\_R_{ij}, G\_G_{ij}, G\_B_{ij}]^T。
-
当输入为 B_{in} = [0, 0, 220]^T,实际输出为 RGB_{out,B,ij} = [B\_R_{ij}, B\_G_{ij}, B\_B_{ij}]^T。
-
假设像素响应是线性的(或在该工作点附近近似线性),则 A_{ij} 的列可以由这些响应构成(经过归一化处理,除以输入强度220): A_{ij} = \frac{1}{220} \begin{bmatrix} R\_R_{ij} & G\_R_{ij} & B\_R_{ij} \\ R\_G_{ij} & G\_G_{ij} & B\_G_{ij} \\ R\_B_{ij} & G\_B_{ij} & B\_B_{ij} \end{bmatrix} 这样,如果校正前的输入信号为 RGB_{raw\_input},则该像素的实际输出近似为 RGB_{actual\_output, ij} = A_{ij} \cdot RGB_{raw\_input}。
-
-
确定均匀目标颜色:
-
当输入标定值(如R=220, G=0, B=0)时,我们希望所有像素都显示一个统一的红色。这个“统一的红色”是什么?
-
选项1: 可以是所有像素在R=220输入下输出的 (R_R, R_G, R_B) 向量的平均值(转换到XYZ或LAB后平均,再转回RGB)。
-
选项2: 理想情况下,它应该是该显示屏色域定义的“纯红”,其RGB值可以通过问题一中显示屏的基色定义得到,例如,如果显示屏是sRGB,那么纯红的XYZ值由sRGB的R基色决定,然后可以转换回该显示屏的一个目标RGB值(可能不是简单的(220,0,0),而是考虑了亮度的目标)。
-
选项3 (更实际): 题目中图4.2显示了校正后的效果。如果能从图4.2中提取或定义一个目标RGB值 (例如 RGB_{target\_R}, RGB_{target\_G}, RGB_{target\_B},这些是显示器输出的理想均匀颜色值),那将是最好的。如果无法提取,则需基于输入(220,0,0)等来定义一个合理的、所有像素都应达到的输出。例如,对于R=220的输入,目标输出可能是 (Y_{avg\_R}, x_{avg\_R}, y_{avg\_R}) 对应的RGB值。
-
-
-
计算校正矩阵/LUT:
-
目标:对于一个期望的显示输出 RGB_{desired\_output, ij}(这个期望值对于所有像素是相同的,例如上面定义的 RGB_{target\_R}),我们需要找到一个校正后的输入信号 RGB_{corrected\_input, ij},使得: A_{ij} \cdot RGB_{corrected\_input, ij} = RGB_{desired\_output, ij}
-
因此,校正后的输入为: RGB_{corrected\_input, ij} = A_{ij}^{-1} \cdot RGB_{desired\_output, ij} 这里需要计算每个像素的 A_{ij} 矩阵的逆。
-
应用(1)-(2)的结果: 题目提到 "试根据你设计的(1)-(2) 色域转换结果应用在LED颜色校正中"。这可能意味着:
-
如果有一个来自视频源的颜色(经过问题1或2的转换和色域映射后),得到一个要在“理想均匀显示屏”上显示的 RGB_{ideal\_display} 值。
-
这个 RGB_{ideal\_display} 就作为上述的 RGB_{desired\_output, ij} (对于所有像素 (i,j) 都是这个值)。
-
然后,我们为每个像素 (i,j) 计算其特定的 RGB_{corrected\_input, ij} = A_{ij}^{-1} \cdot RGB_{ideal\_display}。
-
这样,尽管每个像素的物理特性 A_{ij} 不同,但通过给予它们不同的输入,它们都能产生(或接近)相同的 RGB_{ideal\_display} 输出。
-
-
-
处理约束和稳定性:
-
A_{ij}^{-1} 可能不存在或不稳定(如果 A_{ij} 是病态的)。
-
计算出的 RGB_{corrected\_input, ij} 必须在显示设备允许的输入范围(通常是[0, 255]或[0,1])。如果超出范围,需要进行裁剪或更复杂的调整,这可能引入额外误差。
-
校正模型可以是更复杂的,例如非线性模型或基于LUT的校正,特别是如果像素响应的非线性很显著。
-
代码逻辑思路:
-
加载数据:
-
读取全部10个CSV文件,将它们存储为64x64的NumPy数组。
-
-
像素特性表征:
-
对于每个像素 (i,j):
-
构建 A_{ij} 矩阵如上所述。
-
计算 A_{ij}^{-1}。注意处理可能存在的奇异或病态矩阵 (例如,通过正则化或检查条件数)。
-
-
-
定义目标均匀输出颜色:
-
当输入是 (220,0,0) 时,确定目标输出 RGB_{target\_R\_output}。
-
当输入是 (0,220,0) 时,确定目标输出 RGB_{target\_G\_output}。
-
当输入是 (0,0,220) 时,确定目标输出 RGB_{target\_B\_output}。
-
这些目标输出应该是均匀的,即对于所有像素都相同。例如,可以取所有像素在对应输入下的平均输出颜色(可能在XYZ或LAB空间平均)作为目标。
-
-
应用校正:
-
题目要求 "将全屏颜色进行校正并运用在给的64 × 64的显示数据模块上"。这可能意味着:
-
演示校正效果: 如果现在要显示一个纯红屏幕,理想输入是 Input_R = (220,0,0)。校正后的操作是,对每个像素 (i,j),计算其应接收的输入 RGB_{corrected\_input, ij} = A_{ij}^{-1} \cdot RGB_{target\_R\_output}。然后,理论上每个像素都会显示接近 RGB_{target\_R\_output} 的颜色。
-
应用到一般图像: 如果有一个任意的目标图像,其每个像素 (i,j) 的目标颜色是 RGB_{desired,ij} (这可能来自问题1或2的输出,即已经是目标显示屏色域内的颜色)。那么实际发送给该像素的信号将是 RGB_{corrected\_input, ij} = A_{ij}^{-1} \cdot RGB_{desired,ij}。
-
-
-
结果评估与可视化:
-
评估校正后,当输入标称值 (如220,0,0) 时,各像素输出的颜色是否更均匀 (例如,计算校正后输出颜色两两之间的 \Delta E_{00}^* 或与平均输出颜色的 \Delta E_{00}^*)。
-
可视化校正前后的显示效果(如果可以模拟)。
-
注意事项:
-
LED的RGB值通常是整数(如0-255)。在计算中可能需要浮点数,最终输入时可能需要量化。
-
实际LED响应可能存在非线性,线性模型 RGB_{out} = A \cdot RGB_{in} 只是一个近似。如果效果不佳,可能需要更复杂的模型(如Gamma校正后再线性变换,或每个像素一个3D-LUT校正)。
-
问题中提到的 (1)-(2) 的色域转换结果,主要是为了确定一个在目标普通显示屏色域内的、经过合理色域映射的 RGB_{desired} 值。然后问题三的目标是让这个不均匀的物理显示屏能够准确、均匀地再现这个 RGB_{desired}。