1、锐化的作用及做锐化的原因
锐化实际就是对边界的增强,它会增加边界的锐利度,但不会带来更多的内容,做锐化的原因是由于一开始 isp从 sensor 采数据的时候,
就做了下采样,这对边界来说是有损失的,边界不可能和刚好和每一个 pixel 重合,大部分的边界在 sensor 采样之后一般都会被分到两个 pixel 里面去了,
这时边界就被平滑掉了一次。采样频率的原理可以参考这篇文章:图像边缘锯齿及摩尔纹产生的原因
另外后面去噪的模块虽然都会考虑去做保边的处理,但在某些情况下多多少少都会对边界有所损失。
接着图像经过去马赛克的模块后实际人眼看是糊的,它是通过周围邻近的点去插值计算中心的点,会有低通的作用在里面,所以需要去增加边界的锐利度,把边界的差异给凸显出来。
2、锐化调试过程总结
锐化调试过程主要需保证3点,避免假纹理、锯齿、噪点的产生。
以我目前调试的平台为例,锐化模块主要分为 raw域+yuv域的锐化,raw域的锐化主要是保证更多的弱细节不受损失,在经过 demosaic 模块之前,将弱边界先进行一个增强,使之后模块的处理,弱边界可以被看到。
yuv域是主要的锐化模块,有包含亮度、运动区域、有方向,无方向梯度控制分别去做锐化,及黑白边的控制。
a、调试过程中先调弱 yuv域锐化或 baypass yuv域锐化的基础上,去调整 raw域的锐化,但要保证不能有白边的情况下,去展现更多的细节,否则后续的锐化会将白边做强。
b、接着将黑白边的控制,调到最高,避免被截止(这里是 overshoot 的控制,是将前面的亮度、运动、梯度的锐化处理后的数据再次做了一个限制,处理后的数据和原始数据的差值大于设定的 overshoot 的值,就用这个设定值)。
c、调试yuv域锐化时,调试顺序可以是先调整有方向梯度的锐化,保证大边界的完整。
运动区域的锐化 、亮度区域的锐化、无方向的锐化,这些都是相互叠加的,调试一个参数时,可以将其他参数都设成1或一个尽量小的值后(保证其他模块都有去用到),
依次分步长去增加,在保证假纹理、锯齿、噪点合适的情况下找到其临界点。
d、调整运动区域锐化时,分步长(比如5)逐级去增加,不能调的很大,确认其黑白边的临界点;
e、调整亮度区域锐化时,也是一样分步长(比如5)逐级去增加,可以所有亮度一起增加,调到合适的值后,再去减弱两边的部分;
f、再接着去调整有方向的锐化,保证大边缘的锐利度,且不能有锯齿出现,也是按步长是一步步增强。
g、再接着去调整无方向的锐化,增加高频纹理无规则的边界部分,注意不能有黑白边,假纹理出现,按步长调到一个合适的值为止;
h、再接着去慢慢按步长去降低,overshoot 的值,到一个临界值。
i、调试过程中,可拍照对比之前调试的效果,编码参数都设置成16M,避免呼吸效应导致的信息丢失,看两张图内容的多少、及图片的 size,
若按上述调整后内容增加了,但 size 还比原来的小,则是原来调整的带来了很多无用的,假的信息 。