ISP—YUV Sharpen调试
实习的第13天,由于傍晚事请太多,没有来得及去写博客,就简单叙说吧,昨天把新拿到一个海思3516EV300芯片,用到的是Sony的sensor,然后把RAW图抓取,黑电平校准、AWB以及CCM重新复习了一边,操作的具体流程请看前几期博客。今天主要是对于YUV Sharpen这块的参数进行介绍,以及调试当中存在的一些问题。
查看当前时刻,sensor的感光度ISO,在越黑的情况下,ISO的感光度越大,在明亮的情况下,ISO的感光度较小。
上图为YUV Sharpen模块的系统框图
参数介绍
SkinVmin:肤色区域范围矩形窗的左下角的最小坐标的 V 值
重点:
EdgeFiltStr:边缘滤波强度调试参数:实现图像锐化边缘的范围 和边缘平滑强度的控制。该值越大,判为边缘的区 域越多、也越宽,EdgeStr 起作用的图像边缘就越 多,而且,该值越大,沿着边缘方向的平滑滤波强 度也越大,边缘就越平滑。反之,判为边缘的区域越少、也越窄,EdgeStr 起作用的图像区域越少,边缘平滑就越弱。
EdgeFiltMaxC:边缘滤波强度范围的调试参数:该值越大,边缘滤波的最大强度也最大,u8EdgeFiltStr 的可调试范围也越大;一般建议该值大小控制 30 以内。取值范围:[0, 47];建议值 18。
TextureFreq:图像的无方向细节纹理的增强频段控制。设置图像的细节纹理增强的频率。该值越大,细节纹理的增强就越偏向于高频增强,细节纹理就越细碎。反之,该值越小,细节纹理就越粗越圆润。u16TextureFreq 对应于强度参数 u16TextureStr。u16TextureFreq 越大,图像的细节纹 理就越细碎,该值过大,会导致图像的细节纹理过于细碎而不自然,甚至感觉模糊。
EdgeFreq:图像的带方向的边缘的增强频段控制。设置图像边缘增强的频率。该值越大,边缘的增强就越偏向于高频增强,图像的边缘就越纤薄越窄。反之,该值越小,边缘就越粗越圆润。u16EdgeFreq 对应于强度参数 u16EdgeStr。u16EdgeFreq 越大,图像的边缘就越纤薄越窄,该值过大,会导致图像的边缘过于纤薄而出现虚边现象。
OverShoot:设置图像的 overshoot(锐化后的白边白点)的强度。该值越小,锐化后的白边白点越弱,清晰度也会下降。该值过小,图像会呈油画效果。
UnderShoot:设置图像的 undershoot(锐化后的黑边黑点)的强度。 该值越小,锐化后的黑边黑点越弱,清晰度也会下降。该值过小,图像会呈油画效果。
ShootSupStr:图像锐化后的 overshoot 和 undershoot 的抑制强度。用于在保证清晰度不明显下降的前提下,抑制锐化后的图像的 overshoot 和 undershoot 的宽度和幅度。该值越大,锐化后的图像的 overshoot 和 undershoot的宽度越窄、强度越小。该值变大,理论上不会影响图像的清晰度,只是黑白边变窄以后,会减弱人眼的锐度感受。该参数需要和 ShootSupAdj 配合使用。
ShootSupAdj:图像锐化后的 overshoot 和 undershoot 的抑制强度的调节。该参数配合 ShootSupStr 使用,用于调节ShootSupStr 作用的区域范围。该值越小,则越多的纹理区域的 shoot 会被 ShootSupStr 抑制;该值越大,则只有很强的边缘的 shoot 会被 ShootSupStr 抑制,纹理区域的 shoot 不会被抑制。
DetailCtrl:图像的细节纹理区的 shoot 强度的控制。用于控制图像的细节纹理区域的 shoot 强度,shoot 越大,细节纹理区的清晰度越高。取值范围:[0, 0xFF]。该值等于 128,则图像的细节纹理区域的 shoot 强度和大边缘的 shoot 强度一致, 都分别等于 u8OverShoot 和 u8UnderShoot。该值大于 128,则图像的细节纹理的 shoot 强度大于大边缘,大边缘的 shoot 强度分别等于 u8OverShoot 和u8UnderShoot。该值小于 128,则图像的细节纹理的shoot 强度小于大边缘,大边缘的 shoot 强度分别等于 u8OverShoot 和 u8UnderShoot。
DetailCtrlThr:图像的细节纹理区的 shoot 强度的控制阈值。该值配合 DetailCtrl 使用,用于区分 DetailCtrl 所控制shoot 的纹理区和边缘,也即纹理区和边缘的区分阈值。小于该值的区域为纹理区,该纹理区域的 shoot会被 DetailCtrl 单独控制,而大于该阈值的边缘区域的 shoot 依然等于 u8OverShoot 和 u8UnderShoot。取值范围:[0, 0xFF],建议值 160。
RGain:深红色区域的锐化增益控制。该值越大,则深红色区域的锐化强度越大。取值范围:[0, 31];建议值 28。
GGain:绿色区域的锐化增益控制。该值越大,则绿色区域的锐化强度越大。取值范围:[0, 255];建议值 32。
BGain:深蓝色区域的锐化增益控制。该值越大,则深蓝色区域的锐化强度越大。取值范围:[0, 31];建议值 28。
SkinGain:肤色区域的锐化增益控制。该值越大,则肤色区域的锐化强度越大。取值范围:[0, 31];建议值 23。
MaxSharpGain:图像锐化的最大增益限制值。该值越大,图像的锐化幅度越大,反之,锐化幅度越小。适当的调小该参数,可以减少图像的过锐化,可以减少图像锐化后的黑白点。取值范围:[0, 0x7FF],建议值 160。
WeakDetailGain:对弱纹理单独进行锐化的增益控制。该值等于 0,图像弱纹理和图像其他区域的锐化程度相当,该值越大,图像弱纹理的锐化程度越大,当该参数过大,可能带来白边加重甚至虚边的副作用。取值范围:[0, 127],建议值 0。
TextureFreq VS EdgeFreq
TextureFreq :主要影响的是图像中的细节问题,是无方向的。
EdgeFreq:影响的是图像的边缘部分,是具有一定方向性的。
TextureFreq 越大,会导致图像中出现大量的噪声,但是影响图像的边缘部分较小。
EdgeFreq越大,在图像中会出现波纹现象
调试步骤
清晰 ,对图像增 强 就 会增 强噪 声, 也 更容 易 产 生黑白点 的 shoot ( 冲 激噪 声)。因此, 不同的 ISO 场景 下, sharpen 的各个调试参数 设置 都 会有 差别 。
- 调试图像的整体锐度:通过调节 TextureStr 和 EdgeStr 来设置图像整体的锐度。 TextureStr 决定了图像的无方向细节纹理区域的锐度,增大 TextureStr 能够增强无方向的细节纹理的清晰度,比如提高草地毛发等细节纹理的清晰度。EdgeStr 决定了图像的带方向的边缘的锐度。
- 调节细节纹理区域的细碎度风格:调节 TextureFreq 可以调节图像的无方向细节纹理的细碎度风格。TextureFreq 越大,图像的细节纹理就越细碎,否则细节纹理就越粗越圆润,但是 TextureFreq 过大,图像的细节纹理会过于细碎而不自然,图像的细节纹理过
于细 碎 会 给 人 眼 造 成图像模 糊 的 感 觉 。同时, TextureFreq 调 大后 ,图像的 清晰 度 也 会 提 高 。
-
调试边缘的纤细圆润风格: 调节 EdgeFreq 可以调节图像的 带 方 向 的 边缘 和细节的 纤薄 或 者 圆润 的 风 格 。 EdgeFreq 越 大 ,图像的 边缘 就越 锐利 越纤薄 、 边缘 的过 渡 更加细 窄 ,分 辨 率线 数 也 更 高 更 清晰 。 EdgeFreq 越 小,图像的 边缘 就越粗越圆润 。 但 是 E 过 大 ,图像的 边缘 会因为过于 纤薄 而 出现 虚 边现 象 ,图像会不自 然 。
-
控制锐化后图像的整体的shoot强度: 通 过调节 OverShoot 可以 控 制 锐化后 的图像整体 的 边缘 的 白边 和细节 纹理 区的 白点噪 声的 大 小。 通 过调节 UnderShoot 可以 控 制 锐化后 的图像整体的 边缘 的 黑边 和细节 纹理 区的 黑点噪 声的 大 小。 减 小 OverShoot 可以 减 弱 锐化后 的图像的 白边 和 白点噪 声, 减 小 UnderShoot 可以 减 弱 锐化后 的图像的 黑边 和 黑 点噪 声。 但 是, 减 小 OverShoot 和 UnderShoot ,图像的 锐 度 也 会 减 弱 , OverShoot 和 UnderShoot 的 值 过小,会导 致 图像 出现 油画 效果 。
-
锐度不明显下降的情况下跟据局部特征抑制边缘的黑白点: 增 大 ShootSupStr 并合 理 的调节 ShootSupAdj ,可以在图像 清晰 度不明 显 下 降 的 情况 下,使 锐化后 的图像 边缘 的 黑边白 边 的 强 度( 幅 度) 减 弱 、 宽 度 变 窄 。调 大 ShootSupStr 可以 收窄 边缘 的 黑白边 的 宽 度, 此时,为了 避免 细节 纹理 区的 shoot 被 ShootSupStr 抑 制而 影响 细节 纹理 区的 清晰 度, 应 当 适 当 调 大 ShootSupAdj 。 ShootSupAdj 设置较 小时, 草 地 毛 发等细节 纹理 的 shoot 也 会 被 ShootSupStr 抑 制而导 致 细节 纹理 的 清晰 度 被减 弱 ,此时可以调 大 ShootSupAdj 来 避免草 地 毛 发等细节 纹理 的 清晰 度的 损 失 ,一 般 ShootSupAdj 大 于 6 就 可以 避免草 地 毛 发等细节 纹理 的 清晰 度的 损 失 , ShootSupAdj 越 大 ,对 边缘 的 黑白边 的 抑 制 强 度 也 越 大 。 ShootSupStr 和 ShootSupAdj 太 大 ,会导 致 图像 边缘 的 shoot 都 被 抑 制, 从 而明 显 地 降低 图像的 锐 度。 视频 模式下,保 留 一定的 黑边白边 可以提升图像的 清晰 度,因 为 黑白边 的 存 在能 让 人 眼感 觉 锐 度更 高 ,所以, 视频 模式下, ShootSupStr 不 需 要 设 的 太 大 , ShootSupAdj 应 该设置 一个中 间值 。 当 ShootSupStr 等于 0 时, 该功 能关 闭 ,调 节 ShootSupAdj 无效 。
-
细节纹理区和大边缘shoot的单独调试: 在图像的整体 清晰 度和 shoot 都 调到合适 后 ,可以调节 DetailCtrl 和 DetailCtrThr 来 单 独 调节细节 纹理 区和 大边缘 的 shoot 强度。 一 般情况 下,建议 DetailCtrl 设 为128 。
-
边缘锐化后的平滑度调节: 通 过调节 EdgeFiltStr 可以调节图像 锐化后 的 边缘 的 平滑度。EdgeFiltStr 比 较 小时,图像的 边缘 都 会更 多 的 被当 成 无 方 向纹理 增 强 ,主要是TextureStr 起 作用, EdgeStr 参数 基 本不 起 作用, 边缘较锐 、同时 锯齿 和 边缘噪 声 会比 较大。 EdgeFiltStr 比 较大 时,图像的 边缘 会更 多 的 被 判断 成为有方 向 的 边缘来 增 强 ,此 时,图像的 边缘 的 锐化 主要 就 是 EdgeStr 起 作用,图像的 边缘 就 会 越 平滑 , 边缘噪声 就越 小。 EdgeFiltStr 越 大 , 边缘 越 平滑 , 边缘 过 渡 带也 相对 越 宽 。
-
对弱纹理单独进行锐化的增益控制: 图像的 弱 纹理 和 噪 声 很难 区分,可以 通 过调节WeakDetailGain 来 单 独 调节图像 弱 纹理 的 锐化 程度。 该值 等于 0 ,图像 弱 纹理 和图像其 他区域的 锐化 程度相 当 , 该值 越 大 ,图像 弱 纹理 的 锐化 程度 越 大 , 当该 参数过 大 ,可 能 带来白边 加 重甚 至 虚 边 的 副 作用
-
单独调节高饱和颜色区域和肤色区域的锐度 根据 深 红 色 区域、深 蓝 色 区域、 绿 色 区域和人 脸皮肤 区域的 噪 声 大 小 来 单 独 调节 RGain 、 Ggain 、 BGain 和 SkinGain ,以 让 深 红 色 区域、深 蓝 色 区域、 绿 色 区域和人 脸皮肤 区域的 噪 声和细节 轮廓 达 到最 佳 的 平 衡效果 。其中,由 SkinUmin , SkinVmin , SkinUmax 和 SkinVmax 这 4 个 坐 标所 圈 定的 矩 形 窗 范围 即 为 肤 色 区域的范围,可以 根据实 际 的图像的 肤 色 范围, 重 新 设置 SkinUmin , SkinVmin , SkinUmax 和 SkinVmax 这 4 个 值 , 从 而 重 新定义 肤 色 范围。