OpenISP 模块拆解 · 第15讲:色相饱和度控制 (HSC)

OpenISP 模块拆解 · 第15讲:色相饱和度控制 (HSC)

模块作用

HSC 是色相和饱和度控制模块,作用在 YUV 的 UV 色度通道。它用于整体颜色风格调整,例如让颜色更鲜艳、偏暖或偏冷。

openISP 实现

源码类名为 HSC(img, hue, saturation, clip)。输入是 UV 两通道图像。

它先构造 0..359 度的 sin/cos LUT,并乘以 256 用作固定点。

理论公式

将 UV 去中心:

text 复制代码
u = U - 128
v = V - 128

色相旋转:

text 复制代码
U' = u*cos(hue) + v*sin(hue) + 128
V' = v*cos(hue) - u*sin(hue) + 128

饱和度缩放:

text 复制代码
U'' = saturation * (U' - 128) / 256 + 128
V'' = saturation * (V' - 128) / 256 + 128

其中 saturation=256 表示 1 倍。

读源码注意点

openISP 源码先计算 hue 旋转,但随后又用原始 self.img 计算 saturation 并覆盖前面的结果。因此当前实现中 hue 旋转实际没有生效,主要生效的是 saturation。

参数说明

参数 含义
hue 色相旋转角度
saturation 饱和度增益,256 为 1 倍
clip 输出上限

面试问答

Q1: YUV 中如何调整饱和度?

以 128 为 UV 中性点,把 U/V 到 128 的偏移乘以饱和度系数,再加回 128。偏移越大,颜色越鲜艳。

Q2: 色相调整本质是什么?

在 UV 平面围绕中性点旋转向量,相当于改变颜色方向,但尽量保持色度幅度。

Q3: 饱和度过高有什么副作用?

会放大色噪、伪彩和压缩色块,也可能造成颜色 clipping,让肤色和自然物体不真实。

Q4: 为什么 HSC 常放在后段?

它属于风格调校,通常在基础颜色还原、降噪、伪彩处理之后做,避免把前面的问题放大。

Q5: openISP 的 HSC 有什么实现问题?

hue 旋转结果被 saturation 计算覆盖,导致 hue 参数实际不生效。应先旋转,再基于旋转结果做饱和度缩放。

相关推荐
pride.li8 小时前
ISP标定-AWB标定(Auto White Balance,自动白平衡校准)
图像处理·计算机视觉·isp
岁月蹉跎的一杯酒1 天前
未来ISP新方向的一些思考—2026年
isp
pride.li1 天前
ISP标定-NR标定(Noise Reduction,降噪校准)
算法·计算机视觉·isp
岁月蹉跎的一杯酒12 天前
ISPDiffuser:用扩散模型学习 RAW→sRGB 映射
图像处理·isp
FLJwu14 天前
传感器与图像 ISP 实战 03:运动相机图像量产一致性|批次色差、白平衡漂移、整机标定与出厂图像质检方案|20 年源头工厂量产经验
图像处理·经验分享·数码相机·相机·isp
岁月蹉跎的一杯酒16 天前
ISP 黑电平校正(BLC, Black Level Calibration/Correction)
论文阅读·图像处理·isp
AomanHao1 个月前
【ISP】compression artifact压缩失真情况
图像处理·数码相机·isp·sensor·图像压缩·压缩失真
岁月蹉跎的一杯酒1 个月前
格科微内置 ISP 图像效果调试(格科微 YUV Sensor)—GC2145
图像处理·isp·gc2145
FPGA开源工坊1 个月前
ISP图像处理--Bayer Raw格式
图像处理·人工智能·verilog·fpga·isp
安河桥。1 个月前
Android视频流处理模块硬件加速器数据流转技术说明
android·图像处理·isp