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 参数实际不生效。应先旋转,再基于旋转结果做饱和度缩放。

相关推荐
安河桥。5 小时前
Android视频流处理模块硬件加速器数据流转技术说明
android·图像处理·isp
资质小秘书4 天前
2026 年全国 ISP 许可证办理周期深度解析与提速指南
isp·许可证·isp许可证·增值电信业务
一只嵌入式爱好者5 天前
深入理解ISP
图像处理·isp
AomanHao5 天前
【ISP】sensor高亮灰度溢出及anti-bloomimg功能
接口隔离原则·isp·sensor
大熊背8 天前
ISP FPN噪声消除逻辑
人工智能·isp·noise·fpn
橘色的喵10 天前
一根数据源,两条出图路:UVC(USB)与 CSI-2(MIPI)对比解读
usb·isp·mipi·uvc·csi-2
岁月蹉跎的一杯酒19 天前
模组选型指标对图像质量影响
isp
Industio_触觉智能1 个月前
瑞芯微ISP内核驱动深度解析|ISP39 AI协处理器与完整业务链路总结(下篇)
人工智能·嵌入式硬件·硬件架构·硬件工程·rk3588·isp·rk3576
AomanHao1 个月前
【阅读笔记】彩色转黑白Real-time Contrast Preserving Decolorization
图像处理·isp
Industio_触觉智能1 个月前
瑞芯微ISP内核驱动深度解析|RKISP39从架构到Probe初始化全流程(上篇)
linux·嵌入式硬件·硬件架构·摄像头·isp·瑞芯微·rk3576