2025年“深圳杯”数学建模挑战赛B题国奖大佬思路助攻

完整版万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712071/

建模思路

问题一:颜色空间转换 (BT.2020 到普通显示屏RGB)

问题描述: 设计从BT.2020标准的高清视频源三基色颜色空间到普通显示屏RGB三基色空间的转换映射,使得色彩转换损失最小。普通显示屏的色域小于BT.2020,因此色彩损失不可避免。需要定义合适的转换损失函数。

建模思路:

  1. 定义源和目标颜色空间:

    • 源颜色空间 (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一致)

  2. 颜色空间转换流程:

    • 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}

  3. 定义转换损失函数:

    • 色彩转换损失应在感知均匀的颜色空间中定义,例如 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空间中的值。
  1. 色域映射 (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空间或其他中间颜色空间进行。

  2. 设计转换映射:

    • 如果只是线性转换,则转换矩阵是固定的。此时,色彩损失主要是由色域裁剪或简单压缩造成的。

    • 如果采用更复杂的GMA,"设计转换映射"可能指选择合适的GMA及其参数,以最小化定义的损失函数。这可能涉及到对不同GMA策略的评估,或对某个参数化GMA的参数进行优化。

代码逻辑思路:

  1. 数据准备:

    • 定义BT.2020和sRGB(或其他选定显示屏)的基色色度坐标 (x,y) 和白点。

    • 计算从BT.2020 RGB到XYZ的转换矩阵 (M_{BT2020 \to XYZ})。

    • 计算从XYZ到显示屏RGB的转换矩阵 (M_{XYZ \to DisplayRGB})。

  2. 实现颜色转换函数:

    • 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}^*。

  3. 实现色域映射算法 (GMA):

    • apply_gamut_mapping(rgb_display_linear, target_gamut_primaries_xyz): 输入线性显示屏RGB值(可能超出[0,1]),应用所选的GMA(如裁剪、压缩等),输出在目标色域内的线性RGB值。这部分可能需要在CIELAB空间进行判断和调整。

  4. 损失函数评估:

    • 生成一系列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}^* 作为损失。

  5. 优化 (如果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显示器上,使颜色转换损失最小。

建模思路:

  1. 定义源和目标颜色空间的基色:

    • 源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}

  2. 颜色转换映射 (色彩分离 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 最小)。

        • 优先使用某些基色组合。

        • 保持颜色之间的相对关系。

  3. 定义转换损失函数:

    • 同问题一,使用 CIEDE2000 (\Delta E_{00}^*) 在一系列采样点上进行评估。

  4. 色域映射:

    • 如果 XYZ_{Source} 超出了五基色显示屏的色域,则需要进行色域映射。

    • 多基色显示器的色域边界通常比三基色的更复杂 (例如,非凸的)。

    • GMA策略需要适应多基色系统。可能包括将颜色拉向色域表面,同时试图保持感知属性。

  5. 设计转换映射 (优化问题):

    • 对于每个源颜色 C_{in} = [r_s, g_s, b_s, v_s]^T:

      1. 计算其对应的 XYZ_{Source} = M_{Source} \cdot C_{in}。

      2. 求解优化问题,找到 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的构建过程本身可能涉及优化。

      • 分段线性或多面体方法: 将色域划分为子区域,每个区域使用不同的策略。

代码逻辑思路:

  1. 数据准备与矩阵构建:

    • 定义源RGBV基色的 (Y,x,y) 并计算 M_{Source} (3x4)。

    • 定义目标RGBCX基色的 (Y,x,y) 并计算 M_{Display} (3x5)。 (需要明确C和X基色参数)

    • 实现XYZ到CIELAB及CIEDE2000的函数(同问题一)。

  2. 色彩分离与色域映射核心逻辑:

    • 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。

        1. 将 xyz\_source 映射到显示屏色域边界上的点 xyz'_{source} (例如,通过保持色调和亮度,压缩色度)。

        2. 然后为 xyz'_{source} 进行色彩分离。

      • 输出驱动信号 D_{out} = [r_d, g_d, b_d, c_d, x_d]^T。

  3. 损失函数评估:

    • 生成一系列源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})。

    • 计算平均/最大损失。

  4. 可能的优化:

    • 如果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输出值。

建模思路:

  1. 像素级特性表征:

    • 对于每个像素 (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}。

  2. 确定均匀目标颜色:

    • 当输入标定值(如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值。

  3. 计算校正矩阵/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} 输出。

  4. 处理约束和稳定性:

    • A_{ij}^{-1} 可能不存在或不稳定(如果 A_{ij} 是病态的)。

    • 计算出的 RGB_{corrected\_input, ij} 必须在显示设备允许的输入范围(通常是[0, 255]或[0,1])。如果超出范围,需要进行裁剪或更复杂的调整,这可能引入额外误差。

    • 校正模型可以是更复杂的,例如非线性模型或基于LUT的校正,特别是如果像素响应的非线性很显著。

代码逻辑思路:

  1. 加载数据:

    • 读取全部10个CSV文件,将它们存储为64x64的NumPy数组。

  2. 像素特性表征:

    • 对于每个像素 (i,j):

      • 构建 A_{ij} 矩阵如上所述。

      • 计算 A_{ij}^{-1}。注意处理可能存在的奇异或病态矩阵 (例如,通过正则化或检查条件数)。

  3. 定义目标均匀输出颜色:

    • 当输入是 (220,0,0) 时,确定目标输出 RGB_{target\_R\_output}。

    • 当输入是 (0,220,0) 时,确定目标输出 RGB_{target\_G\_output}。

    • 当输入是 (0,0,220) 时,确定目标输出 RGB_{target\_B\_output}。

    • 这些目标输出应该是均匀的,即对于所有像素都相同。例如,可以取所有像素在对应输入下的平均输出颜色(可能在XYZ或LAB空间平均)作为目标。

  4. 应用校正:

    • 题目要求 "将全屏颜色进行校正并运用在给的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}。

  5. 结果评估与可视化:

    • 评估校正后,当输入标称值 (如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}。

完整版万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712071/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值