关于DM36x IPNC中IRCUT的使用

来源:互联网 发布:sql的九个常用语句 编辑:程序博客网 时间:2024/04/30 05:32

IPNC一般都需要使用IRCUT的,当滤光片切换、红外灯开启的时候,如果视频还是彩色的,会出现严重到偏色现象。此时需要将视频转换为黑白的,以前一直是在驱动层实时检测ircut的状态动态设置

        DRV_reszLock();        if(gio59)        {            CSL_RszHandle->regs->YUV_C_MIN = 0x00;            CSL_RszHandle->regs->YUV_C_MAX = 0xFF;        }        else        {            CSL_RszHandle->regs->YUV_C_MIN = 0x80;            CSL_RszHandle->regs->YUV_C_MAX = 0x80;//ircut        }        DRV_reszUnlock();
注:gio59为GPIO59的状态,低电平表示滤光片已经切换,红外灯已经开启,视频需要转换为黑白

来实现视频转换为黑白.

后来在TI文档中发现(如下图):

如上所述,只需要在应用层将CSL_IpipeRgb2YuvConfig结构体中rgb2yuv.matrix[1]、rgb2yuv.matrix[2]均赋值为0(其他值与原值相同):

CSL_IpipeRgb2YuvConfig rgb2yuv ;rgb2yuv.matrix[1][0]=rgb2yuv.matrix[1][1]=rgb2yuv.matrix[1][2]=0;rgb2yuv.matrix[2][0]=rgb2yuv.matrix[2][1]=rgb2yuv.matrix[2][2]=0;
然后再调用CSL_ipipeSetRgb2YuvConfig函数即可实现黑白视频.


其实,还有另外一种实现彩色转黑白的方法,当开启2A(AE+AWB均开启)的时候,用手挡住镜头,会发现当光线暗到一定程度的时候,图像也会自动转为黑白,

在DM36x VPFE文档中,有如下描述:


根据该公式,当
gain_RR==gain_RG==gain_RB,
gain_GR==gain_GG==gain_GB,
gain_BR==gain_BG==gain_BB,
offset_R==offset_G==offset_B

(对应值均相同)时,经过矩阵变换后,R_out、G_out、B_out也是相同的,当RGB三原色值相等的时候,视频图像也是黑白的.

2A算法里面的彩色转为黑白就是通过判断曝光时间&模拟增益和数字增益(当然根据不同的sensor可能有不相同的情况,如有些sensor不会调整数字增益,也就不用判断数字增益而只判断曝光时间和模拟增益就行了)均达到最大值时,设置RGB2RGB和RGB2RGB2参数来实现彩色转为黑白(RGB2RGB与RGB2RGB2的关系为:RGB2RGB->gamma校正->RGB2RGB2,其实只要保证RGB2RGB2输出RGB三原色值相同即可).


原创粉丝点击