ISP Pipeline 功耗模型:像素处理流水线拆解

做 ISP 功耗优化,第一件事不是上手调代码。

你得先搞清楚——电都烧在哪儿了?

我个人习惯,拿到一个 ISP 设计,先画一张流水线拆解图。把每个模块的功耗占比测出来,再根据场景(预览、拍照、录像)去分析差异。这样后面做优化,才知道刀往哪儿砍。

ISP 像素处理流水线拆解

一个典型的 ISP Pipeline,从 Sensor 拿到 RAW 数据,到最终输出 YUV 或 JPEG,中间经过十几个模块。我把它分成三大阶段:

  • 前端预处理:BLC(黑电平校正)、DPC(坏点校正)、AWB Gain(白平衡增益)、Demosaic(去马赛克)
  • 中端核心处理:CCM(色彩校正矩阵)、Gamma(伽马校正)、LSC(镜头阴影校正)、WNR(亮度降噪)、CNR(色彩降噪)
  • 后端输出处理:Sharpen(锐化)、Scale(缩放)、Tone Mapping(色调映射)、YUV 转换、JPEG 编码

每个模块的硬件实现,说白了就是一堆 line buffer + 乘加器 + 查找表。功耗主要来自三部分:

  1. 数据搬运——DDR 读写、SRAM 读写、Line Buffer 刷新
  2. 计算单元——乘法器、加法器、比较器、LUT 查表
  3. 控制逻辑——状态机、寄存器配置、中断处理

我在项目中遇到过,有些团队一上来就优化计算单元,结果发现数据搬运占了 60% 的功耗。白忙活。

核心观点:ISP 功耗优化的第一原则——先看数据流,再看计算流。数据少搬一次,比省几个乘法器管用得多。

各模块功耗占比分析

下面这张表,是我基于一个 4K@60fps 的 ISP 设计实测数据整理的。不同分辨率、帧率下比例会有浮动,但大方向差不多。

模块 功耗占比 主要功耗来源 优化空间
Demosaic 18% - 22% 方向插值 + 边缘检测 中
降噪 (WNR+CNR) 15% - 20% 多级滤波 + 权重计算 高
LSC 8% - 12% 网格查表 + 双线性插值 低
CCM + Gamma 6% - 10% 3x3 矩阵乘 + LUT 中
Sharpen 5% - 8% 高通滤波 + 增益 中
Scale 4% - 7% Line Buffer + 系数计算 高
JPEG 编码 10% - 15% DCT + 熵编码 低
其他 (BLC/DPC/AWB等) 10% - 15% 查表 + 简单运算 低

你想想看,Demosaic 和降噪两个模块加起来就占了将近 40%。这俩是 ISP 的功耗大头,也是优化的主战场。

我曾经在一个项目中,把降噪模块的滤波窗口从 9x9 砍到 5x5,功耗降了 8%,画质损失肉眼几乎看不出来。嗯,这种 trade-off 值得做。

经验之谈:降噪模块的功耗和滤波窗口大小呈平方关系。窗口从 7x7 扩大到 9x9,功耗增加约 65%。但画质提升可能只有 5%。每次改窗口前,先问自己——这 5% 的画质提升,用户真的看得出来吗?

典型场景功耗差异:预览 vs 拍照 vs 录像

同一个 ISP,在不同场景下功耗差异巨大。我见过有人拿拍照场景的功耗数据去优化录像模式,结果方向全错了。

先看三个场景的核心差异:

  • 预览:分辨率低(通常是 1080p 或 720p),帧率 30fps,不需要 JPEG 编码,降噪可以轻量级
  • 拍照:全分辨率(比如 48MP),单帧处理,需要 JPEG 编码,降噪和锐化可以重一些
  • 录像:分辨率 4K 或 1080p,帧率 30/60fps,需要持续编码,降噪要平衡画质和功耗

下面这张 SVG 图,把三个场景的流水线差异画出来了:

ISP 流水线场景差异对比 预览场景 (Preview) Sensor RAW 前端预处理 轻量降噪 色彩处理 缩放 YUV输出 特点:低分辨率、轻降噪、无JPEG编码、帧率30fps 拍照场景 (Capture) Sensor RAW 前端预处理 重降噪 色彩处理 锐化 JPEG编码 特点:全分辨率、重降噪、需要JPEG编码、单帧处理 录像场景 (Video) Sensor RAW 前端预处理 平衡降噪 色彩处理 缩放 H.264编码 特点:4K/1080p、平衡降噪、需要视频编码、持续帧率30/60fps 不同场景下,ISP 流水线的模块组合和功耗权重完全不同,优化策略必须场景化

从功耗数据来看,三个场景的差异非常明显:

场景 典型分辨率 帧率 相对功耗 功耗热点
预览 1080p 30fps 1x (基准) 降噪 + 缩放
拍照 48MP 单帧 3x - 5x 降噪 + JPEG 编码
录像 4K 60fps 2x - 3x 降噪 + 视频编码

注意:拍照场景虽然单帧功耗最高,但因为不是持续运行,平均功耗反而可能低于录像。录像场景的持续高帧率才是真正的功耗杀手——发热、降频、掉帧,一条龙服务。

我做过一个项目,录像时 ISP 功耗超标,团队一开始去优化 JPEG 编码器。我说别急,录像又不用 JPEG。后来发现是降噪模块在 4K@60fps 下跑满了,滤波窗口从 7x7 降到 5x5,功耗直接降了 15%。

说白了,场景化优化才是 ISP 功耗设计的正确姿势。预览、拍照、录像,三个场景三套策略,不能一把抓。