在白平衡处理中,分块统计数据时引入**向下采样(Downsampling)**,核心目标是在保证统计有效性的前提下,解决“计算效率”与“统计鲁棒性”的矛盾,同时避免局部噪声对白平衡判断的干扰。要理解这一设计的必要性,需从白平衡分块统计的本质需求、向下采样的具体作用两方面展开分析:
如:SigmaStar
AE/AWB统计值在程序代码中定义如下,每张影像均会产生128*90笔取样数据。
在Pcupid、Macaron、Pudding、Ikayaki、Tiramisu中,AE统计值,每张影像只会产生32*32笔取样数据。
一、先明确:白平衡分块统计的核心需求
白平衡的核心逻辑是“通过统计图像中各区域的色偏,计算色温补偿系数,让白色物体在图像中呈现真实白色”。分块统计则是将整幅图像划分为多个子块(如16×16、32×32块),对每个子块的RGB通道均值、灰度值等特征进行计算,再基于这些子块特征筛选“中性色区域”(如白色、灰色区域,这类区域的RGB理论上应相等,是判断色偏的关键依据)。
这一过程对数据有两个核心要求:
- 统计有效性:每个子块需能代表“局部区域的真实色彩倾向”,而非被单个像素的噪声或异常色点(如光斑、污渍)干扰;
- 计算高效性:图像分辨率越高(如4K、8K),子块数量越多,若直接对原始分辨率子块计算,会导致计算量暴增,影响实时处理(如相机预览、视频拍摄)。
二、向下采样的3个核心作用:解决统计与效率的矛盾
向下采样(通常通过**均值池化、高斯滤波下采样**等方式实现,即将多个相邻像素合并为1个采样像素)的本质是“降低局部区域的分辨率,保留宏观特征、舍弃微观噪声”,恰好匹配白平衡分块统计的需求,具体作用可拆解为以下三点:
1. 降低计算复杂度,满足实时处理需求
高分辨率图像的原始像素数量极大,若直接按原始分辨率分块并统计每个子块的RGB均值/方差,计算量会随分辨率呈**平方级增长**(例如:4K图像(3840×2160)的像素数是1080P(1920×1080)的4倍,若分块大小相同,子块数量也会增加4倍,统计计算量随之翻倍)。
向下采样通过“合并像素”减少有效像素数:例如将2×2相邻像素合并为1个采样像素(下采样率2倍),图像像素总数变为原来的1/4,分块统计时的计算量也同步降低至1/4。这种优化对**实时设备(如手机相机、监控摄像头)** 至关重要——若不向下采样,高分辨率下的白平衡计算可能出现延迟,影响拍摄体验或视频流畅度。
2. 抑制局部噪声,提升统计鲁棒性
图像采集过程中(如传感器感光、传输)会不可避免地引入**噪声像素**(如单个亮斑、暗点),这些噪声像素的RGB值与周围正常像素差异极大。若直接对原始分辨率子块统计,噪声像素可能“污染”子块的色彩均值,导致该子块被误判为“有色偏区域”或“中性色区域”,进而影响整体白平衡补偿的准确性。
向下采样通过“像素融合”天然具备降噪能力:例如2×2均值下采样,会将4个相邻像素的RGB值取平均作为采样像素值——单个噪声像素的异常值会被3个正常像素的数值“稀释”,采样后的子块均值更接近该区域的**真实色彩倾向**,避免了局部噪声对统计结果的干扰,让中性色区域的筛选更可靠。
3. 保证子块“色彩一致性”,避免过度细分
白平衡分块统计的核心是“用子块代表局部区域的色彩特征”,这要求每个子块内的色彩应尽可能“一致”(即子块内像素的色彩倾向无显著差异)。若不向下采样,且子块划分过细(如原始分辨率下子块仅4×4像素),可能出现“子块内包含多种色彩”的情况(例如子块同时覆盖白色墙壁和红色家具),此时子块的统计均值无法代表任何单一区域的色彩,失去了分块统计的意义。
向下采样通过“扩大单个采样像素的覆盖范围”,间接提升了子块的“色彩一致性”:例如下采样率2倍后,原始4×4像素的区域被合并为2×2采样像素,子块内的色彩差异更小,更能反映局部区域的整体色偏,确保每个子块的统计数据都具有“代表性”。
三、反例:不向下采样会导致什么问题?
若省略向下采样,直接对原始分辨率图像进行分块统计,会出现两个典型问题:
- 计算过载:4K图像原始分块(如32×32子块)需统计约 (3840/32)×(2160/32)= 120×67.5≈8100个子块,每个子块需计算RGB均值、方差等,若设备算力不足,会导致白平衡计算延迟(如相机按下快门后1-2秒才出图);
- 统计失效:噪声像素导致部分子块均值异常,例如某白色墙壁区域的子块因包含1个红色噪声像素,均值偏红,被误排除在中性色区域外,最终白平衡补偿不足,图像整体偏蓝。
四、总结
白平衡分块统计中的向下采样,并非“可选优化”,而是平衡“计算效率”与“统计准确性”的**必要步骤**——它通过降低分辨率减少计算量、融合像素抑制噪声、提升子块色彩一致性,最终确保白平衡能快速、准确地判断图像色偏,生成符合人眼视觉习惯的无偏色图像。
另外一个就是统计数据的bit位数,也会对最终的白平衡效果有影响。如果8bit统计的话,有些细微的差别可能识别不了,10bit统计的话,能够区分细微差别。提高白平衡增益的计算精度。