LDC矫正

来源:互联网 发布:山东大学齐鲁软件学院 编辑:程序博客网 时间:2024/04/27 14:28

LDC矫正

在做DM8127 SDK3.8开发时,有时更换一些镜头图像会出现不同的程度的失真,所以得把图像矫正过来,我在开发过程中遇到桶形失真,以下是我矫正过程。


一、    矫正工具

1、        ITT工具

2、        DCC工具(获取.YUV格式图片)

二、      CHART(在chart目录里面)

1、        如果是正常镜头,则选择LDCchart.pdf

2、        如果是16:9的镜头,则选择16_9chart

三、      矫正方法及步骤(以16:9的镜头为例)

1、        把Chart平整固定好,用相机照到chart上,调节好镜头焦距,使chart充满整个屏幕(如下图),然后把相机固定好。


2、获取所需.yuvTI图片:可以直接用ITT工具连接相机,打开ITT工具,进入ITT主界面,选择IPaddress,输入相机的IP地址

如果能成功连接到相机,然后就可以获取图片(选择save imgae date模块):


如果不能连接到相机,那就得用DCC工具获取.yuv格式图片.


3、在ITT工具上选择调节模块LDC Tuning。如:

        于是就弹出如下窗口:       

 

        选镜头类型: 16:9 Lens按钮;

 

4、选择文件(即第二步所获得的文件):

file(F)àOpen YUV  Image(o)。然后就会弹出一个窗口。如果是用DCC工具获取.yuv格式的图片,则在弹出的窗口里面的文件名后方的下拉框里面选择*.yuv

 

5、设置文件输入的大小及数据格式

     第4步,点击打开会弹出一个小窗口如下图,填写图片的原始大小及中心点等,然后点击OK.

       

然后就进入主调节界面如下:

 

 

6、设置调节参数:

     选择option—>ldc settings就会弹出一个窗口如下图,设置好自己想要设置的参数,然后点击OK。                                   

  

7、LDC调节

接下来有两种方法可以操作:一种是自动调节LDC,另一种是手动调节LDC

a、自动调节:以中心点为起点,向一个角(这里选取左上角)连续取16个点, 即3条线条交叉中心点,如下图。选择完16个点之后,ITT工具会自动计算LDC,也可以点击Calculate计算,如果想取消以选取的点,或重新选择,则点击clearOneEntry 或者ClearAllEntry按钮进行清除一个或者所有选取的点。

在窗体的右边就会出现调节LDC过后的效果图:

 

           b、手动调节:利用滑块慢慢的调节,如下图,移动滑块,确定好位置后,点击Run LDC

           

  在窗体的右边就会出现调节LDC过后的效果图:

如果感觉效果不理想,重新设置参数在进行计算调节(即重复6—7步骤),也可以重新开始调节,直到满意为止。

        

         8、获取参数及LUT表

             直到 LDC调节效果满意过后,把LDC   Calibrator 关掉,回到ITT主界面, 然后点击 save LDCTuning,然后在点击LDC SendParameter按钮,在主界面下放的文本框里面看到LDC的参数,如下图:



四、参数对应源码分析及现象分析

我把获得到的参数复制到编辑器里面,然后与源码的的结构体简单分析对应,

有些参数我也不知道有什么作用。对应结果如下:

 

      由第6步中的参数来确定源码ldc_params->ptLensDistortionParams->ptLutParams->unLdcK*参数的值;

    由参数来确定源码ldc_params->ptLensDistortionParams->ptLutParams->unLdcRth参数的值。

 

    如果图像出现如下现象:

   

 

   则是设置不当(过大)引起的。

 

五、ldc矫正源码修改:

1、首先要打开ldc矫正开关
    此开关参数是由上面应用程序传到ISP模块里的,也可以在Ti_mcfw_ipnc_main.c(source\ipnc_rdk\ipnc_mcfw\demos\mcfw_api_demos\multich_usecase)
    文件里面的入口函数里面直接赋值,如:gUI_mcfw_config.ldcEnable = TRUE;
 
2、修改ldc配置参数

LDC的所以配置参数都是在vnfLink_vnf.c (source\ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\links_m3vpss\vnf)文件里面进行修改、配置。


    用ITT工具生成LDC矫正所需的lut表,把ITT工具生成的table数据经过格式转化(转化为一维数组元素类型),然后把这些数据保存在一个静态的一维数组

    里面。如:const MSP_U16 vnf_ldc_lut_1[] = {#include "ldc_table.h"};  


   注:ldc_table.h里面存放的就是ITT生成的LUT表转化为一维数组后的数据。

   

可以在vnfLink_vnf.c里面相关于LDC配置参数代码上直接进行修改,也可以不用动原有的代码,自己在原有LDC配置代码配置完之后(调用库函数之前)重新

   对LDC参数进行配置(即覆盖原来的配置)。


    --------------------------------------------------------------------------转载请保留原链接----谢谢!---------------------------------------------------




0 0