我是靠谱客的博主 内向电灯胆,最近开发中收集的这篇文章主要介绍ISP Pipeline lens shading,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于lens shading,我主要阐述lens shading产生的原因和shading 校正的简单模型,然后通过一个例子说明lens shading调试的注意点。

导致shading的几种原因

  • 机械安装:luma shading
  • Optical vignetting
    • lens shading
      lens 的各位置和中心的透射率不同 : luma shading
      lens 对不同光谱的shift不同 : color shading
    • IR filter
      lens 对不同光谱的shift不同 : color shading

shading correction的简单模型

在这里插入图片描述

由上图模型我们可得出lens shading 校准的公式:

gain_r1 = r1/R.* gain_radial

在chromarix 6调试中关于lens shading的校正是将其分为了17*13个区域分别进行对其校正。

初始调试

调试步骤如下:
lens shading模块也分两部分调试,分别调试normal和lowlight模式,操作具体见下图:
在这里插入图片描述

调试normal和lowlight模式的区别点在于Original Rolloff Curve的correction peroentage不一样,lowlight模式可将其设置为 75-90 之间合适,具体根据在暗光下边角noise多少决定,边角noise多的话,将其值设置的小一点。
在这里插入图片描述

example

当我们通过chromatix 6 校准出来后,代码如下所示:

/* Normal Light Rolloff */
   {
   ...
      /* TL84 Mesh Lens Rolloff */
      {
         221,
         /* R Gain */
         {
            3.756667f, 3.116342f, 2.659184f, 2.278639f, 2.008617f, 1.834949f, 1.750552f, 1.710917f, 1.721964f, 1.768556f, 1.864053f, 2.056765f, 2.314978f, 2.640778f, 3.104619f, 3.874564f, 4.954355f,
            ...
            6.335568f, 4.861440f, 3.734324f, 3.146051f, 2.859177f, 2.677176f, 2.564032f, 2.504067f, 2.497407f, 2.571602f, 2.680209f, 2.874211f, 3.141923f, 3.715159f, 4.426412f, 5.998119f, 7.900000f
         },
         /* GR Gain */
         {
            4.036563f, 3.426927f, 2.970608f, 2.571337f, 2.298463f, 2.146189f, 2.089377f, 2.064823f, 2.074510f, 2.094299f, 2.149194f, 2.319372f, 2.565494f, 2.886045f, 3.304882f, 3.997691f, 5.021236f,
            ...
            6.330090f, 5.035350f, 4.082458f, 3.630568f, 3.448388f, 3.335342f, 3.262710f, 3.224228f, 3.208900f, 3.255792f, 3.310359f, 3.416923f, 3.565569f, 3.992912f, 4.529787f, 5.950653f, 7.900000f
         },
         /* GB Gain */
         {
            4.285253f, 3.592642f, 3.062334f, 2.594782f, 2.265121f, 2.068959f, 1.975240f, 1.937340f, 1.948095f, 1.981425f, 2.069221f, 2.275585f, 2.581674f, 2.965362f, 3.450387f, 4.201347f, 5.290575f,
            ...
            6.358387f, 5.027366f, 4.001096f, 3.487785f, 3.238488f, 3.075759f, 2.961054f, 2.906108f, 2.894716f, 2.957007f, 3.047212f, 3.207128f, 3.406208f, 3.901353f, 4.486479f, 5.954483f, 7.900000f
         },
         /* B Gain */
         {
            2.589502f, 2.239432f, 1.982628f, 1.752804f, 1.591065f, 1.488403f, 1.445405f, 1.421534f, 1.431833f, 1.459512f, 1.507310f, 1.623027f, 1.768504f, 1.948858f, 2.198691f, 2.591533f, 3.140781f,
            ...
            3.901130f, 3.117857f, 2.507937f, 2.198531f, 2.052765f, 1.965928f, 1.909450f, 1.881775f, 1.870585f, 1.907899f, 1.957952f, 2.048897f, 2.168262f, 2.455119f, 2.780590f, 3.586250f, 5.249066f
         }
      },
      ...

上述代码编译后烧入设备后,发现校准后的效果不理想,见下图:
在这里插入图片描述

相应的报错日志:

    E/mm-camera: <ISP ><ERROR> 378: tintless40_algo_process_be: failed: update_func rc -4
    E/mm-camera: <ISP ><ERROR> 851: tintless40_algo_execute: failed: tintless40_trigger_algo
    E/mm-camera: <ISP ><ERROR> 98: isp_algo_execute_internal_algo: failed to run algo tintless
    E/mm-camera: <ISP ><ERROR> 710: isp_parser_thread_func: failed: isp_parser_process

从上面参数我们可以看到对应的R, GR, GB, B在边角的gain在(5, 8)之间超过了正常范围,正常范围在(1, 5)之间,所以需要进行调试,现给出以上两种思路:
1、软件调试,软件可以将边角的gain通过算法进行降低,但这样带来的后果是四个边角的亮度变暗,导致效果较差,但调试时间较短;

2、手动修改异常值:可以将对应的值按比例进行缩小即可,比如:我将最左下角的的B GAIN值除了1.5,那对应左下角的R, GR, GB也需要缩小1.5倍才可以,因为如果不按照这样修改,可能会带来边角会出现色彩异常的问题。

校准后的效果图:
在这里插入图片描述

LSC 常用算法的矫正公式

output = (input - 1) * ratio + 1

最后

以上就是内向电灯胆为你收集整理的ISP Pipeline lens shading的全部内容,希望文章能够帮你解决ISP Pipeline lens shading所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部