Camera 画面偏红、偏紫怎么查?——从 IRCUT 未切换到多原因定位

Camera 画面偏红、偏紫怎么查?——从 IRCUT 未切换到多原因定位

导读:先回答三个问题

Camera 画面偏红、偏紫,很多人第一反应是调 ISP 的 R/G/B 增益、AWB 或 CCM。但在带红外夜视功能的 Camera 模组中,IRCUT 是否真正切换到正确位置,往往应该是最先确认的事项。

本文按照下面的思路展开:

text

 

问题:画面到底出现了什么现象?

  ↓

分析:光学、硬件、Sensor 和 ISP 哪一层可能导致偏色?

  ↓

解决:如何设计最小成本的验证实验并修复?

  ↓

进一步判断:如果不是 IRCUT,还可能是哪一种问题?如何区分?

 

核心原则: 先确认进入 Sensor 的光学条件和 RAW 数据是否正确,再调整 ISP。不要用 ISP 参数去掩盖 IRCUT 机构、滤片装配或控制时序问题。

本文使用的原始资料没有提供具体芯片、Sensor、IRCUT、开发板、GPIO 和 SDK 信息。因此,文中的 GPIO、电压、动作时间和寄存器配置均不写死,具体平台需要以硬件资料和实测结果为准。

 

一、问题:画面偏红、偏紫时,先观察什么?

1.1 典型现象

需要重点关注以下表现:

• 白天画面整体偏红、偏紫或偏红紫;

• 对着窗户、室外或自然光时,偏色明显加重;

• 白色、灰色和黑色物体的颜色还原异常;

• 日夜状态已经切换,但画面颜色没有随之恢复;

• 同一套 ISP 参数在室内看起来正常,换到自然光下又异常;

• 手动推动或强制控制 IRCUT 后,画面颜色发生明显变化。

这些现象可以帮助我们建立方向,但仅凭一张图片不能直接证明根因。偏红、偏紫可能来自 IRCUT,也可能来自 Bayer Pattern、Sensor 数据链路、ISP 参数、镜头或显示后处理。

1.2 原始资料中的现象对比

IRCUT 红片状态示例

ircut-红片.png 

IRCUT 红片正常图

 

IRCUT 白片状态下的偏紫示例

ircut-白片.png 

IRCUT 白片偏紫图

 

原始技术资料的结论是:IRCUT 没有切到红片、切换位置不准、机构卡住/偏移/松动,或者红片/白片装配异常,都可能导致画面偏紫或偏红紫。

1.3 先做三个快速判断

判断一:问题是否只在白天或自然光下明显?

如果室内普通光源下不明显,而窗边、室外或自然光下加重,应优先关注滤片状态和光学路径。

判断二:强制切换 IRCUT 后,画面是否变化?

在光源、曝光和 ISP 参数尽量不变时,分别采集红片和白片状态的画面:

• 红片正常、白片偏紫:优先检查白天是否误停在白片位置;

• 软件状态变化但画面不变化:检查机构是否实际动作、控制极性和驱动链路;

• 两个状态都没有明显变化:先确认 IRCUT 是否被真正驱动,也要考虑测试光源差异不足;

• 两个状态都异常:不要继续只盯着 IRCUT,应扩大排查范围。

判断三:问题是“切换后出现”,还是“从启动就存在”?

• 日夜切换后出现: 优先查 IRCUT、切换时序、ISP Profile 同步;

• 从启动开始一直异常: 同时检查 Bayer Pattern、Sensor 数据格式、镜头/滤片装配和基础 ISP 配置;

• 只在最终显示画面异常: 还要检查 YUV/RGB、色彩空间、编码和显示链路。

 

二、分析:从基础光学理解 IRCUT 为什么影响颜色

2.1 光从哪里到哪里?

可以把 Camera 成像链路简化为:


 

场景光线

  ↓

镜头

  ↓

IRCUT / 其他光学滤片

  ↓

Sensor 感光面

  ↓

RAW Bayer 数据

  ↓

ISP:AE、AWB、去噪、CCM、Gamma 等

  ↓

YUV/RGB、编码或显示

 

偏色可能在这条链路的任何一层产生。因此,排查时不能只看最终画面,还要尽可能判断偏色最早在哪一层出现。

2.2 可见光和近红外光

人眼主要感知可见光,而 Camera Sensor 通常还会对一定范围的近红外光产生响应。自然光和一些人工光源中都可能包含近红外成分,只是比例不同。

如果白天没有正确过滤近红外光,Sensor 接收到的光谱就与正常白天状态不同。由于 Sensor 的 R、G、B 感光响应并不完全相同,光谱变化会改变三个颜色通道的相对比例,最终可能表现为:

• 红色增强;

• 紫色或品红倾向;

• 白色物体无法还原为中性白;

• AWB 在不同光源下表现不稳定。

可以用下面的关系理解:


 

滤片状态改变

  ↓

进入 Sensor 的光谱改变

  ↓

R/G/B 通道响应比例改变

  ↓

RAW 或 ISP 统计值发生变化

  ↓

最终画面出现偏色

 

 

这里讲的是通用原理,不等于对所有设备的颜色方向作绝对保证。最终偏红还是偏紫,还与 Sensor 光谱响应、镜头、滤片特性、AWB 和 ISP 配置有关。

2.3 IRCUT、红片和白片是什么?

带红外夜视功能的 Camera 通常在白天和夜间使用两种不同的光学状态:

状态

常见滤片称呼

主要目的

白天

红片、IR-CUT 片

过滤近红外成分,改善可见光颜色还原

夜间

白片、透光片

放行更多光线,配合红外灯提升夜视能力

本文沿用原始资料中的“红片”“白片”叫法。但不同厂家可能使用不同的外观、命名和控制逻辑,不能仅凭颜色名称推断功能,也不能直接推断 GPIO 高低电平。

工程上真正需要确认的是:

 

当前实际进入 Sensor 的光学状态是什么?

软件目标状态和机械实际位置是否一致?

当前 ISP Profile 是否与该光学状态匹配?

 

2.4 为什么不能先调 ISP?

AWB、CCM 和颜色增益是在某种光学条件下工作的。如果 IRCUT 没切到位,进入 Sensor 的光谱已经改变,ISP 看到的是一个与预期不同的输入。

此时强行调参数可能出现:

• 一个固定场景下暂时正常;

• 换光源后再次偏色;

• 日夜切换后颜色跳变;

• AWB 增益达到异常范围;

• 同一套参数在不同模组上表现不一致。

所以正确顺序应该是:

 

先确认光学状态

  ↓

再确认 RAW、Sensor 和数据格式

  ↓

再确认 ISP Profile、AWB 和 CCM

  ↓

最后做参数微调

 

 

三、解决:如何一步一步定位 IRCUT 问题?

3.1 第一步:固定测试条件

为了避免 AE/AWB 自动变化干扰判断,尽量固定:

• Camera 模组和镜头;

• 测试目标和光源;

• 曝光、模拟增益和数字增益;

• AWB 状态;

• 日夜模式;

• ISP Profile;

• 录像或抓帧方式。

建议至少准备:

1. 室内均匀光源;

2. 窗边或室外自然光;

3. 白色纸张;

4. 灰色或黑色目标;

5. 条件允许时,增加红外反射明显的目标。

每次只改变一个主要变量,避免同时切换 IRCUT、ISP Profile、曝光和 AWB,导致实验结果无法解释。

3.2 第二步:记录软件状态和实际状态

建议把以下信息记录下来:

项目

记录内容

软件日夜状态

白天/夜间/未知

目标 IRCUT 状态

红片/白片/未知

实际滤片位置

红片/白片/中间/未确认

控制输出

按实际平台填写

机构动作

正常/无动作/卡顿/未确认

画面现象

正常/偏红/偏紫等

ISP Profile

名称、版本和加载时间

AE/AWB

自动、锁定及统计值

结果

是否可复现

这里最重要的一点是:

软件打印“白天”不等于 IRCUT 已经物理切到红片;软件发送了命令也不等于机构已经到位。

3.3 第三步:强制对比红片和白片

先不要依赖完整的自动日夜流程,而是使用已有调试接口、驱动接口或受控硬件手段,分别让 IRCUT 进入两个状态:

 

目标状态 A:红片

等待机构稳定

采集画面和日志

 

目标状态 B:白片

等待机构稳定

采集画面和日志

 

对比时观察:

• 机构是否动作;

• 是否到达机械终点;

• 画面亮度是否变化;

• 颜色是否变化;

• 目标状态和实际位置是否一致。

不要在没有原理图或规格书的情况下直接断言“GPIO 高电平就是红片”。控制极性应由硬件定义和实测共同确认。

3.4 第四步:检查机械和装配

原始资料列出的常见机械原因包括:

1. IRCUT 没有切到红片;

2. 切换位置不准;

3. 机构卡住、偏移或松动;

4. 红片/白片装配异常。

进一步检查:

• 滤片是否完整移动到限位;

• 电机是否只有声音而没有到位;

• 机构是否回弹;

• 镜头座、支架或螺丝是否挤压机构;

• 红片和白片是否装反或位置异常;

• 连接器和排线是否松动。

如果手动将滤片调整到红片位置后画面恢复,说明应优先沿 IRCUT 机构、装配、驱动和供电方向继续排查,而不是先改 CCM。

3.5 第五步:检查 GPIO、驱动和供电

在硬件允许并具备测量条件时,检查:

• GPIO 是否初始化成功;

• GPIO 方向是否正确;

• 控制极性是否符合原理图;

• 两路控制是否同时处于冲突状态;

• 驱动芯片输入和输出是否符合预期;

• IRCUT 动作期间供电是否稳定;

• 连接器、排线和地线是否可靠;

• 控制命令是否被其他模块覆盖。

当前资料没有提供具体 GPIO、驱动芯片、电压和动作波形,因此这些值必须由项目资料或实测补充。

3.6 第六步:检查日夜切换时序

一个完整的切换过程通常类似:

 

检测亮度

  ↓

确定目标日夜状态

  ↓

控制 IRCUT

  ↓

等待机构到位并稳定

  ↓

切换 Sensor/ISP 配置

  ↓

丢弃过渡帧

  ↓

等待 AE/AWB 稳定

 

如果 ISP Profile 在 IRCUT 到位前就切换,可能出现:

• 切换过程画面短暂偏色;

• 切换后持续偏色;

• 机构还在动作但 ISP 已按新状态工作;

• 日夜状态反复跳变;

• GPIO 命令被下一次状态更新覆盖。

建议增加:亮度滞回、连续多帧确认、最小状态保持时间、切换锁、动作超时和异常告警。实际等待时间应以器件规格和实测为准。

3.7 第七步:确认修复结果

修复后不能只看一张“正常截图”,至少要重复验证:

• 室内均匀光源;

• 窗边或室外自然光;

• 白天到夜间切换;

• 夜间到白天切换;

• 多次重复切换;

• 冷启动和热启动;

• 不同亮度临界条件。

建议保存:画面、切换日志、软件状态、实际位置确认、ISP Profile、AE/AWB 统计和版本信息。

 

四、进一步判断:偏红、偏紫还可能是什么原因?

4.1 先建立候选原因树

最终画面偏红或偏紫,可能来自以下层级:

 

光学层:IRCUT 状态、滤片装配、镜头和反射

  ↓

机械/电气层:机构卡滞、GPIO、驱动、供电

  ↓

Sensor/数据层:Sensor 配置、RAW 格式、Bayer Pattern

  ↓

ISP 层:AWB、CCM、R/G/B 增益、日夜 Profile

  ↓

输出层:YUV/RGB、色彩空间、编码、显示和后处理

 

 

排查的关键不是列出尽可能多的原因,而是设计实验,判断偏色最早出现在哪一层。

4.2 IRCUT 未切换与其他问题的对比

候选原因

典型表现

常见触发时机

优先验证方法

IRCUT 未切到红片

白天偏红/偏紫,自然光下加重

日夜切换后或白天

强制切换并确认实际滤片位置

IRCUT 机构不到位

偶发、状态不稳定、重复切换结果不同

机构动作时

观察机械位置、动作时间和供电

红片/白片装配异常

更换或拆装后异常,状态与预期不符

装配后一直存在

与正常模组对比、确认滤片位置

Bayer Pattern 错误

红蓝关系明显错误,可能整体偏紫或伴随条纹

上电出图即存在

核对 Sensor 输出和 ISP Bayer 配置

Sensor 数据格式错误

颜色和图像结构同时异常

Sensor/驱动配置变更后

抓 RAW,核对 mbus code、位宽和格式

AWB 异常

颜色随场景变化,收敛慢或增益极端

光源变化、模式切换后

锁定 AWB,观察统计值和 R/G、B/G 增益

CCM/Profile 错误

整体色调固定异常,换参数后变化

ISP 参数加载后

确认 Profile、CCM 版本和实际生效寄存器

镜头/滤片反射或光学问题

局部红斑、鬼影、边角异常

强光源或特定角度

改变光源角度、替换镜头/模组

显示/后处理问题

RAW/ISP 输出正常,最终画面异常

编码、显示或后处理后

对比 RAW、YUV/RGB 和显示结果

表中的“典型表现”只是定位线索,不是绝对判据,最终仍需实验确认。

4.3 如何区分 Bayer Pattern 错误?

Bayer Pattern 不匹配时,Sensor 实际输出顺序与 ISP 解码配置不一致。例如实际输出和 ISP 配置使用了不同的 RGGB、BGGR、GRBG 或 GBRG 顺序,可能产生:

• 红蓝关系明显错误;

• 整体异常偏紫;

• 颜色区域伴随条纹噪声;

• 从设备开始出图就异常;

• 强制切换 IRCUT 对红蓝关系没有根本影响。

因此:

 

从启动开始持续反色/偏紫

    → 优先核对 Bayer Pattern 和 RAW 数据格式

 

日夜切换后才偏色,且改变滤片位置会改变画面

    → 优先检查 IRCUT 和切换时序

 

 

这两种问题也可能同时存在,不能只凭一个现象排除另一种可能。

4.4 如何区分 AWB/CCM 问题?

可以尝试在平台支持的情况下固定 AE、增益和 AWB:

• 固定后偏色仍随滤片位置变化:优先关注光学路径和 IRCUT;

• 固定后颜色稳定但整体色调仍固定错误:检查 CCM、颜色增益和 Profile;

• AWB 增益达到极端值且随光源变化:检查输入光谱、AWB 统计区域和算法配置;

• 日夜切换时 Profile 与滤片状态不一致:先修正状态同步,再讨论调参。

不能把“调到某个场景正常”当作根因已经解决。应验证多个光源和多个场景。

4.5 如何用 RAW 和分层输出定位?

如果平台支持,建议同时保存:

• RAW Bayer 数据;

• ISP 输出的 YUV/RGB;

• AWB/AE 统计值;

• 日夜状态和 IRCUT 控制日志;

• 最终显示或编码后的画面。

可以按下面的逻辑判断:

 

RAW 已经偏色

    → 优先查 IRCUT、镜头、滤片、Sensor 和模拟链路

 

RAW 颜色关系正常,ISP 输出异常

    → 优先查 Bayer 解码、AWB、CCM、Profile 和 ISP 配置

 

ISP 输出正常,最终显示异常

    → 优先查色彩空间、编码、显示和后处理链路

 

 

这里的“RAW 正常”需要有合适的参考物和对比条件,不能仅凭肉眼查看一张未经处理的 RAW 图像下结论。

4.6 用“只改变一个变量”的实验建立证据链

进一步定位最重要的不是一次性检查所有项目,而是控制变量:

实验

只改变的变量

可以回答的问题

A

IRCUT 状态

颜色是否与滤片状态相关?

B

ISP Profile

是否是日夜参数不匹配?

C

AWB 开关/锁定状态

是否是自动白平衡放大了问题?

D

镜头或 IRCUT 模组

是否是光学件或机构问题?

E

Bayer 配置

是否是 RAW 解码顺序错误?

F

输出链路

偏色最早出现在哪个数据节点?

每次实验都记录:输入条件、唯一变量、输出画面、日志和结论。这样才能从“猜原因”变成“用证据排原因”。

 

五、让问题更容易复现和定位

5.1 建立三层 IRCUT 状态

不要只维护一个 day/night 变量,建议分别记录:

 

目标状态:系统希望 IRCUT 处于什么位置

控制状态:当前输出了什么 GPIO 或驱动命令

实际状态:机构实际到达了什么位置,或当前是否未知

 

 

例如:

 

目标状态:DAY_FILTER

控制命令:已发送

机构反馈:无

实际状态:未知

 

 

这比直接打印“切换到白天成功”更准确。

5.2 建议增加的日志

 

环境亮度和日夜判定结果

目标 IRCUT 状态

控制输出

命令发送时间

机构稳定时间

动作耗时

实际或推断位置

当前 ISP Profile

Sensor 模式

AE/AWB 状态

切换超时次数

重复切换次数

 

 

示例:

 

[IRCUT] target=DAY_FILTER

[IRCUT] control_output=

[IRCUT] command_sent

[IRCUT] settle_done

[ISP] profile=DAY

[AWB] state=

 

只是占位符,不能直接作为实际 GPIO 或状态值使用。

5.3 日夜状态机要防抖和防重入

临界光照下,亮度可能在阈值附近波动,导致:

 

白天 → 夜间 → 白天 → 夜间

 

建议至少加入:

• 白天/夜间不同阈值的滞回;

• 连续多帧确认;

• 最小状态保持时间;

• 切换期间禁止重复触发;

• 机构到位等待;

• 动作超时;

• 失败重试或告警。

可以抽象成:

text

 

DAY_STABLE

    ↓ 连续满足夜间条件

SWITCHING_TO_NIGHT

    ↓ IRCUT 到位并完成稳定等待

NIGHT_STABLE

 

NIGHT_STABLE

    ↓ 连续满足白天条件

SWITCHING_TO_DAY

    ↓ IRCUT 到位并完成稳定等待

DAY_STABLE

 

5.4 处理“软件成功、硬件失败”

如果 IRCUT 没有位置反馈,软件通常只能知道命令是否发送,不能直接知道滤片是否到位。因此建议把状态分成:

 

命令发送成功 ≠ 机构动作成功 ≠ 滤片到位 ≠ 画面已稳定

 

必要时通过机械观察、电气测量、切换后画面、超时检测和维护测试建立间接确认机制。

 

六、常见误区

误区 1:所有偏红都调 R 增益

可能暂时改善一个场景,但不能修复滤片状态、机械不到位或光谱变化。

误区 2:所有偏紫都是 IRCUT

Bayer Pattern、Sensor 数据格式、AWB、CCM、镜头反射和显示链路都可能造成偏色。

误区 3:软件状态就是实际状态

软件显示“白天”不代表滤片已切到红片;发送 GPIO 也不代表机构已经到位。

误区 4:听到电机声音就是成功

电机有声音不等于滤片到达机械限位,仍需检查位置和结果。

误区 5:只在室内普通光源下测试

自然光和不同光源的光谱成分不同,建议至少增加窗边和室外场景。

误区 6:只看最终截图,不保存中间数据

没有 RAW、统计值、状态日志和版本信息,就很难判断偏色从哪里开始出现。

 

七、故障定位记录表

编号

检查项目

结果

1

白天是否偏红或偏紫

待填写

2

窗边/自然光下是否加重

待填写

3

问题从启动就存在,还是切换后出现

待填写

4

软件日夜状态

待填写

5

IRCUT 实际滤片位置

待确认

6

强制切换是否有机械动作

待填写

7

强制红片后画面是否恢复

待填写

8

GPIO 控制定义是否已核对

待填写

9

动作期间供电是否稳定

待测量

10

机构是否到达机械限位

待确认

11

红片/白片是否装配正确

待确认

12

日夜 ISP Profile 是否匹配

待填写

13

Bayer Pattern 是否与 Sensor 输出一致

待确认

14

AWB 增益是否异常

待填写

15

RAW 数据是否已经偏色

待填写

16

ISP 输出是否已经偏色

待填写

17

更换正常 IRCUT 后是否恢复

待验证

18

更换镜头/模组后是否恢复

待验证

 

八、结论

对于白天画面偏红、偏紫的问题,IRCUT 未切到红片是一个重要且应优先验证的方向。原因可能是滤片没有动作、切换位置不准、机构卡住/偏移/松动、红片白片装配异常,也可能是 GPIO、驱动、供电和日夜切换时序造成的。

但偏红、偏紫并不只由 IRCUT 引起。Bayer Pattern 配置错误、Sensor 数据格式错误、AWB/CCM/ISP Profile 异常、镜头或滤片光学问题以及显示后处理问题,都可能产生相似现象。

推荐的完整排查顺序是:

text

 

1. 固定场景,确认现象和触发条件

2. 确认软件目标状态与 IRCUT 实际物理位置

3. 强制切换红片/白片并对比画面

4. 检查机械结构、滤片装配和到位情况

5. 检查 GPIO、驱动、供电和动作时序

6. 确认 IRCUT 与 Sensor/ISP Profile 同步

7. 核对 Bayer Pattern 和 Sensor 数据格式

8. 对比 RAW、ISP 输出和最终显示链路

9. 最后再调整 AWB、CCM 和颜色增益

 

 

一句话总结: 先确认光学状态,再确认 RAW 和数据链路,最后才调 ISP;只有通过对比实验和数据分层,才能判断画面偏红、偏紫到底是 IRCUT,还是其他环节的问题。


评论交流 (共 0 条)