高通平台ISP中的HNR模块算法原理
更新记录:
V1 2020.02.25 介绍高通平台ISP中的HNR模块降噪算法原理和理论背景;
关键字:
高通ISP,HNR,算法原理,denoise,
本文目录:
一、HNR算法原理及模块概述
二、HNR模块关键点
三、HNR模块架构
四、HNR模块架构图说明
五、基于DCT的理论背景
一、HNR算法原理及模块概述
- HNR全称Hybrid Noise Reduction,混合降噪;
- HNR模块是由基于DCT(离散余弦变换)的频域降噪,梯度平滑和空间域融合降噪共同组成;
- HNR模块是一种混合架构,在保留纹理细节的同时,只用于降低高频亮度噪声(luma noise);
- 845/855平台的HNR位于BPS的末尾,这意味着它仅适用于拍照模式,不能应用于预览和录像;
- 865平台的HNR位于IPE模块开始,这意味着它可以应用于所有模式,预览、拍照、录像;
- 与传统的空间域降噪不同,基于DCT的频域在区分弱纹理(texture是低频的细节)和噪声(noise)方面具有优势。 使用此功能,HNR可以在保留边缘和纹理的同时,减少噪声。
二、HNR模块关键点
- 空间和频域降噪
- 将输入图像与加权因子混合
- 用于锯齿边缘处理的渐变平滑
- 在降噪和混合阶段均具有多个子模块
- 只降低luma noise
- 10 bits YUV420 输入和输出,是8*8的grid
三、HNR模块架构
主要包括三个部分:
- Noise reduction controls: Level,radial,chroma,skin,flatness and frequency,即对应子模块是LNR,RNR,CNR,SNR,FNR,filtering_nr_gain_arr
- Blending controls: Level,chroma,skin,即对应子模块是Blend LNR, Blend CNR, Blend SNR
- Gradient smoothing: Percentage
四、HNR模块架构图说明
- HNR的输入是10 bits的YUV420,一路输入图经过基于DCT频域的NR filtering降噪之后,将10bits的Y亮度经过梯度平滑处理,输出10bits的Y;
- HNR的原始输入Y和上一路经过梯度平滑处理之后的10 bits Y经行空间域融合输出最终的HNR输出的Y;
- HNR的原始输入Cb/Cr,最终的HNR输出的Y叠加,形成输出10 bits YUV420;
五、基于DCT的理论背景
离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它与离散傅里叶变换类似,但是只使用实数。
这种变化经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损压缩。在压缩算法中,现将输入图像划分为8*8或16*16的图像块,对每个图像块作DCT变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;最后使用无失真编码来完成压缩任务。解压缩时首先对每个图像块作DCT反变换,然后将图像拼接成一副完整的图像。由于DCT使用8*8的分块,内核相对比较小了,所以检测到的内容都是图像的高频分量;
大多数自然信号(包括声音和图像)的能量都集中在余弦变换后的低频部分。由于人眼对于细节信息不是很敏感,因此信息含量更少的高频部分可以直接去掉,从而在后续的压缩操作中获得较高的压缩比。
以上标粗字体是我们HNR的原理,图像经DCT变换后,低频信息集中在矩阵的左上角,高频信息则向右下角集中;且是处理Y noise,因此需要做rgb2gray处理;从左上角到右下角的,从低频到中评,再到高频,系数的绝对值逐渐变小,能量集中在低频成分。低频系数提现图像中目标的轮廓和灰度分部特性,高频系数体现了目标形状的细节。
如果原始信号是图像等相关性较大的数据的时候,我们可以发现在变换之后,系数较大的集中在左上角,而右下角的几乎都是0,其中左上角的是低频分量,右下角的是高频分量,低频系数体现的是图像中目标的轮廓和灰度分布特性,高频系数体现的是目标形状的细节信息。DCT变换之后,能量主要集中在低频分量处,这也是DCT变换去相关性的一个体现。
另外:噪声形态都是比较接近的,所以其振幅越小越表明可能是噪声,能量比较集中的是物体的边缘和物体的细节,在不同方向的频带上会出现比较大的波动值;
但是噪声是随机的,形态是接近的,能量也就是比较分散的,在各频带上的值都比较小。
先写到这里吧,后续再更新,欢迎持续关注!