【ISP】ISP pipeline(AI)

news2025/4/13 21:04:45

ISP Pipeline 全流程概览

ISP(Image Signal Processing,图像信号处理)流程通常从原始 Bayer 数据出发,经过一系列模块处理,逐步完成图像校正和增强,最终生成用于显示或编码的标准图像。常见处理模块包括:

DPC(Defect Pixel Correction) – 坏点检测与修复
BLC(Black Level Correction) – 黑电平校正
NR(Noise Reduction) – 降噪处理
LSC(Lens Shading Correction) – 镜头阴影校正
AWB(Auto White Balance) – 自动白平衡
Demosaic – 彩色插值
CCM(Color Correction Matrix) – 颜色校正矩阵
Gamma Correction – 伽马校正
EE(Edge Enhancement) – 边缘增强
YUV/CSC – 颜色空间转换(RGB→YUV)


MTK67/68 平台 ISP Pipeline 调试大纲

1. ISP Pipeline 总览

  • 定义与流程
    • 解释 ISP Pipeline 的基本概念,即如何从原始 Bayer 图像(Raw Image)经过逐级处理(如 DPC → BLC → NR → LSC → AWB → Demosaic → CCM → Gamma → EE → YUV/CSC)最终输出标准图像。
  • 整体目标
    • 保障图像质量、色彩还原、亮度调节与噪声控制。

2. 各模块详细参数说明

针对 MTK67/68 平台,列出常用的各模块及其调试参数:

2.1. DPC(Defect Pixel Correction,坏点修复)

  • 常见参数:
    • DPC_Enable:启用/禁用坏点修复。
    • DPC_Threshold:坏点检测的阈值。
    • DPC_Mode:修复模式(静态/动态)。
  • 作用与场景:
    • 自动检测传感器中的异常像素,修复后减少图像出现亮点或暗点。
    • 适用于生产及后期图像质量提升。
  • 预期效果:
    • 图像整体更干净,无明显坏点。

2.2. BLC(Black Level Correction,黑电平校正)

  • 常见参数:
    • BLC_Offset_R/G/B:各通道黑电平偏移量。
  • 作用与场景:
    • 校正传感器输出的基准电平,确保暗部正确还原。
    • 应用于低照度或暗场环境下的图像调优。
  • 预期效果:
    • 暗部细节更加丰富,无灰雾或色偏。

2.3. NR(Noise Reduction,降噪处理)

  • 常见参数:
    • NR_Luma_Strength:亮度降噪强度。
    • NR_Chroma_Strength:色度降噪强度。
    • NR_Spatial_WeightNR_Temporal_Weight:空间与时间降噪权重。
  • 作用与场景:
    • 抑制高 ISO 或低光环境下产生的噪点,保证图像清晰。
    • 涉及多场景下的降噪调优。
  • 预期效果:
    • 图像噪点减少,细节保留更好。

2.4. LSC(Lens Shading Correction,镜头阴影校正)

  • 常见参数:
    • LSC_Gain_Map:增益映射表(例如 17×17 矩阵)。
    • LSC_Center_XLSC_Center_Y:镜头中心坐标。
  • 作用与场景:
    • 补偿因镜头结构造成的边缘暗角现象。
    • 广角镜头、大光圈镜头典型应用。
  • 预期效果:
    • 图像中心与边缘亮度衔接自然,无明显暗角。

2.5. AWB(Auto White Balance,自动白平衡)

  • 常见参数:
    • AWB_Gain_R/G/B:各通道增益。
    • AWB_Light_Source:光源类型选项(如日光、阴天、白炽灯)。
  • 作用与场景:
    • 自动调节白平衡,确保在不同光照条件下色彩还原准确。
    • 较为复杂的环境调整中尤为重要。
  • 预期效果:
    • 白色物体保持中性,整体色彩自然。

2.6. Demosaic(彩色插值)

  • 常见参数:
    • Demosaic_Algorithm:插值算法选择(线性、边缘感知等)。
    • Demosaic_Threshold:边缘检测阈值。
  • 作用与场景:
    • 将原始 Bayer 数据转换为全彩图像,减少伪色和摩尔纹。
    • 特别需要在细节和边缘处理场景中调优。
  • 预期效果:
    • 图像细节恢复良好,伪色减少。

2.7. CCM(Color Correction Matrix,颜色校正矩阵)

  • 常见参数:
    • CCM_Matrix[3][3]:9元素颜色校正矩阵。
    • CCM_Offset_R/G/B:颜色偏移补偿。
    • CCM_Scenario_Mode:根据场景(如 Daylight、Fluorescent 等)切换矩阵。
  • 作用与场景:
    • 把传感器原始颜色转换为标准 RGB,确保色彩准确。
    • 依赖于不同光源场景的色温调整。
  • 预期效果:
    • 色彩还原真实,减少颜色偏差。

2.8. Gamma(伽马校正)

  • 常见参数:
    • Gamma_LUT[256]:查找表实现输入到输出映射。
    • Gamma_Segmented_Curve:分段伽马曲线设置。
    • Gamma_Scene_Mode:场景模式切换(Night/Normal/Outdoor)。
  • 作用与场景:
    • 调整图像亮度分布,使视觉感受更自然。
    • 针对不同场景设计不同的 gamma 曲线。
  • 预期效果:
    • 图像灰阶平滑过渡,细节表现更佳。

2.9. EE(Edge Enhancement,边缘增强)

  • 常见参数:
    • EE_Strength:增强强度(数值范围如 0-15)。
    • EE_Threshold:边缘触发门限。
    • EE_HPF_Gain:高频信号增益。
  • 作用与场景:
    • 强化图像边缘,使细节更加清晰。
    • 应用于文字、轮廓清晰要求较高的场景,但避免过度引起伪影。
  • 预期效果:
    • 图像锐度提升,但避免 halo 效果。

2.10. YUV/CSC(YUV 数据格式与颜色空间转换)

  • 常见参数:
    • YUV_Format:格式选择(NV21、NV12、422 等)。
    • CSC_Matrix:RGB 到 YUV 的转换矩阵。
    • UV_Swap_Enable:是否交换 U/V 通道。
    • Range_Mode:全范围与限范围设定。
  • 作用与场景:
    • 将 RGB 数据转换为适合显示或编码的 YUV 格式。
    • 在实时预览、视频编码中尤为关键。
  • 预期效果:
    • 色彩、亮度精准还原,格式符合输出要求。

3. 调试脚本示例(MTK67/68 平台案例)

3.1. MTK 平台配置示例(配置文件格式)

  • 示例文件:
    [ISP_DPC]
    Enable = 1
    Threshold = 16
    Mode = Dynamic
    
    [ISP_BLC]
    R_Offset = 64
    G_Offset = 64
    B_Offset = 64
    
    [ISP_NR]
    Luma_Strength = 5
    Chroma_Strength = 3
    
    [ISP_AWB]
    Enable = 1
    Mode = Auto
    R_Gain = 1.15
    B_Gain = 0.98
    
  • 说明:
    • 通过修改配置文件来导入调试工具进行参数烧写与实时测试。

3.2. 高通平台配置示例(XML 格式)

  • 示例文件:
    <module name="DPC">
        <enable>1</enable>
        <threshold>18</threshold>
    </module>
    <module name="BLC">
        <r_offset>64</r_offset>
        <g_offset>64</g_offset>
        <b_offset>64</b_offset>
    </module>
    <module name="AWB">
        <r_gain>1.2</r_gain>
        <b_gain>1.1</b_gain>
        <mode>gray_world</mode>
    </module>
    <module name="LSC">
        <table>
            <!-- 17x17 表格数据 -->
        </table>
    </module>
    
  • 说明:
    • 高通平台通常通过 XML 配置,结合专用调试工具(如 QXDM 或 Camera IQ Tuning Tool)进行调参。

4. 主观测试图模板建议

针对每个模块,在日常调试中可使用以下测试图模板评估效果:

  • DPC:

    • 测试图: 暗场图(黑布或盖镜头)
    • 作用: 检查坏点修复是否正常,是否仍有漏修或误修现象。
  • BLC:

    • 测试图: 灰卡或黑场拍摄
    • 作用: 检查各通道黑电平是否准确,避免暗部偏色。
  • NR:

    • 测试图: 高 ISO 条件下的细节图(如书架、桌面)
    • 作用: 检测降噪效果,比较细节保留与噪声抑制的平衡。
  • LSC:

    • 测试图: 均匀白墙或灰卡图像
    • 作用: 评估中心与边缘亮度补偿效果,检查是否存在明显暗角。
  • AWB:

    • 测试图: 灰卡、色卡(如 X-Rite 标准色卡)
    • 作用: 判断白平衡准确性,验证不同光源下的颜色还原。
  • Demosaic:

    • 测试图: 梳子、报纸、线条图
    • 作用: 检测伪色和摩尔纹情况,观察细节的完整性。
  • CCM:

    • 测试图: X-Rite 24色卡
    • 作用: 评估整体色彩还原准确性,量化 DeltaE 值。
  • Gamma:

    • 测试图: 灰阶图、黑白对比图
    • 作用: 检查图像亮度分布,确保灰阶过渡自然。
  • EE:

    • 测试图: 高对比边缘图(如毛发、金属边缘)
    • 作用: 判断细节锐化效果与副作用(如 halo 效应)。
  • YUV/CSC:

    • 测试图: YUV 格式测试图
    • 作用: 校验输出格式是否正确、颜色是否存在偏差或 UV 交换错误。

5. 总结与后续建议

  • 整体调试流程:

    • 先从基础模块(如 DPC、BLC)入手,再逐步调优细节(NR、AWB、CCM 等)。
    • 结合主客观测试(测试图与量化指标)综合判断调参效果。
  • 调试工具推荐:

    • MTK 平台: 使用专用配置文件、CameraTool 与调试软件。
    • 高通平台: 使用 XML 文件配合 QXDM、Camera IQ Tuning Tool 进行逐寄存器调试。
  • 进阶需求:

    • 根据不同传感器及场景,进一步优化各模块参数。
    • 针对具体问题(如坏点漏检、色偏异常),调整对应参数并使用相应测试图进行验证。

6. 附录:关键术语释义

  • Bayer 格式: 摄像头常用的颜色滤光片排列方式。
  • DeltaE: 颜色差异的量化指标。
  • LUT(查找表): 用于转换输入输出值的预设数据表。
  • 动态与静态模式: 动态模式通常根据实时场景调整参数;静态模式则使用固定配置。

下面提供一份详细的 ISP Pipeline 每一部分算法原理解析,从整体流程、关键步骤讲解,到伪代码示例与详细注释,方便初学者从代码层面和理论原理上全面理解各模块的作用。


ISP Pipeline 全流程概览

ISP(Image Signal Processing,图像信号处理)流程通常从原始 Bayer 数据出发,经过一系列模块处理,逐步完成图像校正和增强,最终生成用于显示或编码的标准图像。常见处理模块包括:

  1. DPC(Defect Pixel Correction) – 坏点检测与修复
  2. BLC(Black Level Correction) – 黑电平校正
  3. NR(Noise Reduction) – 降噪处理
  4. LSC(Lens Shading Correction) – 镜头阴影校正
  5. AWB(Auto White Balance) – 自动白平衡
  6. Demosaic – 彩色插值
  7. CCM(Color Correction Matrix) – 颜色校正矩阵
  8. Gamma Correction – 伽马校正
  9. EE(Edge Enhancement) – 边缘增强
  10. YUV/CSC – 颜色空间转换(RGB→YUV)

各模块既有其独立的功能,又需要前后相互配合,下面按模块详细解析其算法原理并附上伪代码示例及注释说明。


1. DPC – Defect Pixel Correction(坏点修复)

算法原理

  • 目标:检测并修复传感器中由于制造缺陷或老化导致的坏点,避免这些异常像素影响最终图像质量。
  • 实现思路:对于每个像素,通过比较与其邻域像素的差异来判断其是否为坏点;一旦判定为坏点,则用邻域像素的中值或加权平均值替代。

伪代码示例(C-like 风格)

// 输入:raw_image[][] 为原始传感器数据,threshold 为坏点检测阈值
for (int i = 1; i < height - 1; i++) {
    for (int j = 1; j < width - 1; j++) {
        // 获取像素 (i,j) 周围3x3邻域数据(不包括自身也可包括)
        int neighbors[8];
        int idx = 0;
        for (int m = -1; m <= 1; m++) {
            for (int n = -1; n <= 1; n++) {
                if (m == 0 && n == 0)
                    continue; // 排除自身
                neighbors[idx++] = raw_image[i + m][j + n];
            }
        }
        // 计算邻域中值
        int median = compute_median(neighbors, 8);
        // 如果当前像素与中值差异超过阈值,则认为是坏点
        if (abs(raw_image[i][j] - median) > threshold) {
            // 修复:用中值替换坏点
            raw_image[i][j] = median;
        }
    }
}

注释说明:

  • compute_median:计算数组中值的函数(可用排序或者选择算法实现)。
  • 通过比较当前像素值与邻域中值的差距判断是否异常,简单有效但实际算法可能会结合更多统计特性或动态阈值。

2. BLC – Black Level Correction(黑电平校正)

算法原理

  • 目标:校正每个通道(R、G、B)的基准黑电平,消除传感器在暗部输出的偏置。
  • 实现思路:从图像的每个像素中减去预先测量得到的黑电平偏移量,通常对不同颜色通道采用不同的偏移值。

伪代码示例

// 假设 black_offset_R, black_offset_G, black_offset_B 为各通道的校正值
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        // 读取当前像素的 Bayer 格式值,根据位置判定其颜色通道
        if (isRedPixel(i, j)) {
            raw_image[i][j] = max(raw_image[i][j] - black_offset_R, 0);
        } else if (isGreenPixel(i, j)) {
            raw_image[i][j] = max(raw_image[i][j] - black_offset_G, 0);
        } else if (isBluePixel(i, j)) {
            raw_image[i][j] = max(raw_image[i][j] - black_offset_B, 0);
        }
    }
}

注释说明:

  • isRedPixel/isGreenPixel/isBluePixel:判断像素在 Bayer 格式下的颜色位置(如RGGB、BGGR等排列规则)。
  • 使用 max 保障输出不为负数。

3. NR – Noise Reduction(降噪处理)

算法原理

  • 目标:减少图像中由于高 ISO、低光等条件下产生的随机噪声,同时尽量保留细节。
  • 实现思路:常见方法包括空间滤波(如均值、Gaussian或中值滤波)、时间滤波(帧间降噪)以及结合两者的混合方法。

伪代码示例(使用 3x3 高斯滤波)

// 定义一个简单的 3x3 Gaussian 模板
float kernel[3][3] = {
    {1/16.0, 2/16.0, 1/16.0},
    {2/16.0, 4/16.0, 2/16.0},
    {1/16.0, 2/16.0, 1/16.0}
};

for (int i = 1; i < height - 1; i++) {
    for (int j = 1; j < width - 1; j++) {
        float sum = 0.0;
        // 对 3x3 邻域做卷积
        for (int m = -1; m <= 1; m++) {
            for (int n = -1; n <= 1; n++) {
                sum += raw_image[i + m][j + n] * kernel[m + 1][n + 1];
            }
        }
        // 将滤波结果存入降噪图像(可以直接覆盖或存到另一个缓冲区)
        denoised_image[i][j] = (int)sum;
    }
}

注释说明:

  • 实际中会针对亮度(Luma)和色度(Chroma)分别设定不同的降噪强度。
  • 空间滤波虽简单,但可能造成细节损失,故高端方案会采用自适应或多尺度方法。

4. LSC – Lens Shading Correction(镜头阴影校正)

算法原理

  • 目标:补偿由于镜头光照不均(中心亮、边缘暗)产生的暗角现象。
  • 实现思路:预先标定或计算得到一个增益表(Gain Map),每个位置对应一个增益因子,处理时将该因子与原始像素值相乘。

伪代码示例

// 假设 gain_map 是一个二维数组(例如 17x17),需通过插值映射到整幅图像上
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        // 根据 (i, j) 坐标计算在 Gain Map 中的对应位置,并进行双线性插值获取增益值
        float gain = interpolate_gain(gain_map, i, j, height, width);
        // 应用校正:乘以增益
        corrected_image[i][j] = raw_image[i][j] * gain;
    }
}

注释说明:

  • interpolate_gain:将图像坐标映射到较小增益表,并通过双线性插值计算增益;该函数依赖于标定数据。
  • 校正后注意边缘可能需裁剪或平滑处理。

5. AWB – Auto White Balance(自动白平衡)

算法原理

  • 目标:在不同光照条件下自动调整各色通道增益,使得白色或中性区域呈现中性灰色。
  • 实现思路:常用的方法有灰世界假设(所有颜色平均值应相等)、最大白补偿法等;计算各通道平均值后,确定增益补偿。

伪代码示例

// 统计图像中各通道的平均值
long sum_R = 0, sum_G = 0, sum_B = 0;
int count_R = 0, count_G = 0, count_B = 0;

for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        if (isRedPixel(i, j)) {
            sum_R += raw_image[i][j];
            count_R++;
        } else if (isGreenPixel(i, j)) {
            sum_G += raw_image[i][j];
            count_G++;
        } else if (isBluePixel(i, j)) {
            sum_B += raw_image[i][j];
            count_B++;
        }
    }
}

// 计算平均值
float avg_R = (float)sum_R / count_R;
float avg_G = (float)sum_G / count_G;
float avg_B = (float)sum_B / count_B;

// 根据灰世界假设,理想状态各通道平均值应相等,这里采用绿色作为参考
float gain_R = avg_G / avg_R;
float gain_B = avg_G / avg_B;

// 对图像所有相应通道应用增益补偿
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        if (isRedPixel(i, j)) {
            awb_image[i][j] = raw_image[i][j] * gain_R;
        } else if (isGreenPixel(i, j)) {
            awb_image[i][j] = raw_image[i][j];  // 通常保持不变
        } else if (isBluePixel(i, j)) {
            awb_image[i][j] = raw_image[i][j] * gain_B;
        }
    }
}

注释说明:

  • 此处采用简单灰世界算法,实际系统可能结合局部统计和区域分割对不同区域分别调节。
  • 调整后的结果需进一步与色卡比对验证准确性。

6. Demosaic – 彩色插值

算法原理

  • 目标:将拜耳格式的单色通道数据重建为全彩(RGB)图像。
  • 实现思路:根据 Bayer 模式(如 RGGB),使用邻域插值方法(例如双线性插值、方向插值等)填充各像素缺失的颜色信息。

伪代码示例(简单双线性插值示例)

// 输出三通道图像 rgb_image[h][w][3]
for (int i = 1; i < height - 1; i++) {
    for (int j = 1; j < width - 1; j++) {
        // 根据 Bayer 排列判断当前像素类别
        if (isRedPixel(i, j)) {
            rgb_image[i][j][0] = raw_image[i][j]; // red
            // 绿色取左右或上下的平均
            rgb_image[i][j][1] = (raw_image[i][j - 1] + raw_image[i][j + 1] +
                                  raw_image[i - 1][j] + raw_image[i + 1][j]) / 4;
            // 蓝色取对角线平均
            rgb_image[i][j][2] = (raw_image[i - 1][j - 1] + raw_image[i - 1][j + 1] +
                                  raw_image[i + 1][j - 1] + raw_image[i + 1][j + 1]) / 4;
        } else if (isGreenPixel(i, j)) {
            // 类似算法,依据具体位置计算缺失通道
            //……
        } else if (isBluePixel(i, j)) {
            rgb_image[i][j][2] = raw_image[i][j]; // blue
            // 补充 red 和 green 通道同上操作
            //……
        }
    }
}

注释说明:

  • 此示例仅展示一种简单的双线性插值方法,实际应用中可采用方向敏感插值以减少马赛克伪影。
  • 分别对不同 Bayer 格式需要区分算法细节。

7. CCM – Color Correction Matrix(颜色校正矩阵)

算法原理

  • 目标:使用颜色校正矩阵将传感器采集的原始 RGB 数据转换为标准颜色空间,以达到色彩还原的目的。
  • 实现思路:对每个像素的 RGB 分量做线性变换,公式为:
    在这里插入图片描述

伪代码示例

// 假设 ccm_matrix 为 3x3 浮点数组,ccm_offset 为 3 元素的偏移数组
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        float R = rgb_image[i][j][0];
        float G = rgb_image[i][j][1];
        float B = rgb_image[i][j][2];
        
        // 线性变换计算
        float new_R = ccm_matrix[0][0] * R + ccm_matrix[0][1] * G + ccm_matrix[0][2] * B + ccm_offset[0];
        float new_G = ccm_matrix[1][0] * R + ccm_matrix[1][1] * G + ccm_matrix[1][2] * B + ccm_offset[1];
        float new_B = ccm_matrix[2][0] * R + ccm_matrix[2][1] * G + ccm_matrix[2][2] * B + ccm_offset[2];
        
        // 限制输出范围在 [0,255]
        rgb_image[i][j][0] = clamp(new_R, 0, 255);
        rgb_image[i][j][1] = clamp(new_G, 0, 255);
        rgb_image[i][j][2] = clamp(new_B, 0, 255);
    }
}

注释说明:

  • clamp 函数确保校正后数值在有效显示范围内。
  • 校正矩阵和偏移值通常在标定阶段确定,并可能根据不同场景(如日光、荧光灯等)动态切换。

8. Gamma Correction(伽马校正)

算法原理

  • 目标:调整图像的亮度分布,使图像更符合人眼对明暗非线性感知的特点。
  • 实现思路:通过预先计算的 Gamma LUT(查找表)实现非线性映射,将输入像素映射到新的输出值上。

伪代码示例

// 假设 gamma_LUT 为 256 元素的查找表(预先根据所需 gamma 值生成)
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        // 对每个颜色通道应用 Gamma LUT
        rgb_image[i][j][0] = gamma_LUT[rgb_image[i][j][0]];
        rgb_image[i][j][1] = gamma_LUT[rgb_image[i][j][1]];
        rgb_image[i][j][2] = gamma_LUT[rgb_image[i][j][2]];
    }
}

注释说明:

  • Gamma LUT 可通过公式生成,例如:
    [
    LUT[i] = \text{round}(255 \times (\frac{i}{255})^{\frac{1}{\gamma}})
    ]
  • 使用查找表比实时计算更高效。

9. EE – Edge Enhancement(边缘增强)

算法原理

  • 目标:提高图像边缘的清晰度,使物体轮廓更明显。
  • 实现思路:先提取图像中的细节信息(例如通过高通滤波),然后将细节信息按一定比例增强后加回原始图像,实现增强效果。

伪代码示例

// 采用简单的 unsharp mask 算法
// blurred 为对原始图像进行低通滤波后的结果(如使用 Gaussian 模糊)
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        // 细节 = 原图 - 模糊图
        int detail = original_image[i][j] - blurred_image[i][j];
        // 增强后的图像 = 原图 + 增强因子 * 细节
        enhanced_image[i][j] = original_image[i][j] + EE_Strength * detail;
        // 限制范围,防止溢出
        enhanced_image[i][j] = clamp(enhanced_image[i][j], 0, 255);
    }
}

注释说明:

  • 关键参数 EE_Strength 控制增强幅度,过高会产生 halo 效果。
  • 低通滤波的选择(如 Gaussian、均值滤波)直接影响最终效果。

10. YUV/CSC – 颜色空间转换(RGB to YUV)

算法原理

  • 目标:将 RGB 图像转换为 YUV 格式,便于后续视频编码或显示。
  • 实现思路:使用线性转换公式将 RGB 分量转换为 Y(亮度)、U/V(色度)分量。

伪代码示例

for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        int R = rgb_image[i][j][0];
        int G = rgb_image[i][j][1];
        int B = rgb_image[i][j][2];
        
        // 根据 BT.601 标准的常用转换公式
        int Y = ( 66 * R + 129 * G +  25 * B + 128) >> 8;      // 右移8相当于除以256
        int U = (-38 * R -  74 * G + 112 * B + 128) >> 8;
        int V = (112 * R -  94 * G -  18 * B + 128) >> 8;
        
        // 在输出时加上偏移量(通常 Y: 16-235, U/V: 16-240)或直接根据 Full Range 映射处理
        yuv_image[i][j][0] = clamp(Y + 16, 0, 255);
        yuv_image[i][j][1] = clamp(U + 128, 0, 255);
        yuv_image[i][j][2] = clamp(V + 128, 0, 255);
    }
}

注释说明:

  • 上述转换公式中权重系数依 BT.601 标准,可根据不同标准(BT.709、BT.2020)调整。
  • “clamp” 用于防止数据超出 0~255 的范围。
  • 在实际运用中还要考虑 UV 通道是否需要交换顺序(例如 NV12 与 NV21 的差异)。

总结

  • 每个模块在 ISP Pipeline 中均承担着特定的任务,从基础的坏点修复、黑电平校正,到颜色调整、图像增强与格式转换。
  • 所有步骤可以串联形成一条完整的图像处理流水线,每步均可对输出图像质量产生显著影响。
  • 上述伪代码均为简化示例,实际代码中会涉及更复杂的边界处理、动态参数调整以及硬件寄存器的配置。

希望这份详细的解释和代码示例能帮助初学者从理论和实战两个角度掌握 ISP Pipeline 的各个算法原理及其实现方式。如果需要更具体的平台驱动代码或针对特定芯片(如 MTK67/68)的寄存器配置细节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RVOS-2.基于NS16550a ,为os添加终端交互功能。

2.1 实验目的 为os添加uart功能&#xff0c;通过串口实现开发板与PC交互。 2.1 硬件信息 QEMU虚拟SoC含有 虚拟NS16550A设备 。 不同的地址线组合&#xff08;A2、A1、A0&#xff09;对应的读写模式和寄存器如下所示&#xff1a; 2.2 NS16550a 的初始化 线路控制寄存器&#…

软件学报 区块链论文 截止2025年4月 录用汇总 附pdf下载

截止 2025年4月 软件学报 2024年 区块链论文 录用汇总 附pdf下载 1 Title: 基于多父链辅助工作量证明共识机制的后量子区块链系统 Authors: Key words: 区块链;后量子密码;共识机制;辅助工作量证明 Abstract: 随着量子计算机的发展,对于以传统椭圆曲线数字签名为基石的公…

【MySQL 数据库】增删查改操作CRUD(上)

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. CRUD 简介 2. Create -- 新增 2.1 语法 2.2 练习 3. Retrieve -- 检索 3.1 Select -- 查询 3.1.1 全列查询 3.1.2 指定列查询 3.1.3 表达式查询 3.…

pycharm 有智能提示,但是没法自动导包,也就是alt+enter无效果

找到file->settings->editor->inspections 把python勾选上&#xff0c;原来不能用是因为只勾选了一部分。

Linux网络编程——TCP协议格式、可靠性分析

目录 一、前言 二、TCP协议格式 三、TCP的可靠性 TCP协议的确认应答机制 总结 四、TCP协议的缓冲区及流量控制 五、 TCP流量控制 六、TCP报文类型 标记位 一、前言 在上一篇文章中&#xff0c;我们重点介绍了UDP协议格式的一些内容。在本文中介绍的便是TCP协议格式的…

【深度学习】Downstream Model:预训练模型的下游应用与微调技术

Downstream Model&#xff1a;预训练模型的下游应用与微调技术 文章目录 Downstream Model&#xff1a;预训练模型的下游应用与微调技术1 什么是Downstream Model&#xff08;下游模型&#xff09;2 预训练模型与下游任务的关系3 微调技术与迁移学习微调的必要性高效迁移学习参…

C# ref out关键字 理解学习记录

ref 在传参是可以以指针的方式传递&#xff0c;而不是传参数的值 举例&#xff0c;函数返回void ,局部变量要传参后得到结果&#xff1a; ref传参前要实例化赋值&#xff0c;而函数体内不一定要赋值 out 传参前不一定要赋值&#xff0c;而函数体内一定要赋值 &#xff0c;与r…

Python中的AdaBoost分类器:集成方法与模型构建

引言 在机器学习领域&#xff0c;集成方法&#xff08;Ensemble Methods&#xff09;是一种通过结合多个基学习器来提高模型性能的技术。AdaBoost&#xff08;Adaptive Boosting&#xff09;是集成方法中的一种经典算法&#xff0c;它通过迭代训练多个弱分类器&#xff0c;并将…

11:00开始面试,11:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

大模型本地部署系列(1) Ollama的安装与配置

一. Ollama简介 Ollama 是一个 本地化的大模型运行工具&#xff0c;可以让你在自己的电脑&#xff08;比如Mac、Windows、Linux&#xff09;上直接下载和运行各种开源的大型语言模型&#xff08;比如 LLaMA 3、Mistral、Gemma 等&#xff09;&#xff0c;而无需依赖互联网或云…

宝塔面板数据库管理页面打不开,提示405 Not Allowed

宝塔面板数据库的管理按钮打开&#xff0c;提示405 Not Allowed 一般是php版本不匹配。 PHPMyAdmin 4.x PHP 5.2&#xff1a;安装 phpMyAdmin 4.1 PHP 5.3/5.4&#xff1a;安装 phpMyAdmin 4.4 PHP 5.5&#xff1a;安装 phpMyAdmin 4.4 PHP 5.6&#xff1a;安装 phpMyAdmin 4…

文件上传漏洞原理学习

什么是文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件&#xff0c;并通过此脚本文件获得了执行服务器端命令的能力。“文件上传” 本身没有问题&#xff0c;有问题的是文件上传后&#xff0c;服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全&#…

数字的乘阶运算

求数字的乘阶&#xff1a; 例如&#xff1a;6的乘阶运算&#xff1a;6*5*4*3*2*1 例如&#xff1a;3的乘阶运算&#xff1a;3*2*1 class Program{static void Main(string[] args){Console.WriteLine("请输入数字&#xff1a;");int num_01 Convert.ToInt32 (Con…

OpenCV——图像融合

OpenCV——图像融合 一、引言1.1 图像融合分类 二、C代码实现三、效果展示3.1 标准球3.2 铝制底座 一、引言 在许多计算机视觉应用中(例如机器人运动和医学成像)&#xff0c;需要将来自多幅图像的相关信息集成到一幅图像中。这种图像融合将提供更高的可靠性、准确性和数据质量…

基于 Spring Boot 瑞吉外卖系统开发(四)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;四&#xff09; 新增分类 新增分类UI界面&#xff0c;两个按钮分别对应两个UI界面 两个页面所需的接口都一样&#xff0c;请求参数type值不一样&#xff0c;type1为菜品分类&#xff0c;type2为套餐分类。 请求方法都为POST。…

C语言for循环嵌套if相关题目

一、题目引入 以下代码程序运行结果是多少? 二、思路解析 进入一个for循环 a<100 进入第一个if b1不大于20为假 进入第二个if b4 a这时a自增为2 当b4时,满足第二个if条件 1.b4,a2 当b7时,满足第二个if条件 2.bb37,a3 当b10时,满足第二个if条件 …

springAOP终极总结

开头先大致说一下bean的生命周期 创建 Bean 实例 → 填充属性 → 初始化前&#xff1a; → 所有 postProcessBeforeInitialization(bean, name) 执行 init 方法&#xff08;比如 PostConstruct&#xff09; → 所有 postProcessAfterInitialization(bean, name) OK&#xff…

紫光展锐5G SoC T8300:影像升级,「定格」美好世界

影像能力已成为当今衡量智能手机性能的重要标尺之一。随着消费者对手机摄影需求日益提升&#xff0c;手机厂商纷纷在影像硬件和算法上展开激烈竞争&#xff0c;力求为用户带来更加出色的拍摄体验。 紫光展锐专为全球主流用户打造的畅享影音和游戏体验的5G SoC——T8300&#x…

视频设备轨迹回放平台用EasyCVR打造变电站智慧消防远程集中视频监控方案

一、方案背景 近年来&#xff0c;电力系统中变电站火灾事故频发&#xff0c;消防势态不容乐观。强化变电站的消防安全管理&#xff0c;成为电网企业核心的任务之一&#xff0c;预防火灾、消除隐患不容延缓。目前&#xff0c;我国消防安全领域仍面临着诸多的挑战&#xff0c;基…

每日定投40刀BTC(13)20250404 - 20250408

定投 坚持 《劲松吟》 千山寒雪覆虬枝&#xff0c; 犹自擎空展翠姿。 岂畏风霜摧瘦骨&#xff1f; 心如磐石立崖时。 十年蓄得凌云志&#xff0c; 终向苍穹吐碧丝。 莫道深冬无劲色&#xff0c; 长将孤影刻天墀。