梦到别人的车翻了:pccam

来源:百度文库 编辑:中财网 时间:2024/05/03 19:54:24
PC Camera 开发文档

PDF下载

 PC Camera 开发文档
Autor:Richard
一、Gamma矫正(Gamma Correction)    所谓的Gamma矫正就是把输入的光线转化电信号后在修正为人眼睛可看到的色彩及亮度。在PC上的数字化图像中图像的色彩模式一般采用RGB的格式,每个 色值0~255,关于色彩的合成问题就不提了。RGB模式中个G是最重要的就如YUV里的Y一样G基本代表了亮度的也就是说G是人眼睛最敏感的。
    一个标准的计算机显示器的亮度显示不是线性的,所以就需要Gamma矫正,下图就是一般显示器的亮度响应近似的曲线,一个是理想的显示器曲线。

所以,在显示器上的一个黑点并不是完全黑色的或者一个白点不是全白的。对于这个问题就需要进行Gamma矫正了,把曲线的输入矫正成眼睛看上去是直线的输出效果。
    CMOS Sensor的结构原理。光电二极管只能感应光线亮度,不能感应色彩信息。因此,必须使用某种机制以人工的方式增强它对不同色彩的灵敏度,从而向人眼呈现 不同的颜色。色彩滤镜阵列的作用是确保每个传感器像素只会收到一种颜色的光:通常是红蓝绿三种颜色。色彩滤镜阵列可以使用不同的模式。由于人眼感 应色彩的方式以及人眼对绿色的灵敏度是其对红色和蓝色灵敏度二倍这一事实,要模仿人眼的感应方式。因为绿色比较敏感所以需要更多的绿色Color Filter来模仿人的眼睛的工作原理   

    实际算法,在PCCamera里的Sensor主要采用CMOS的Sensor,其色彩响应值一般在0~255之间,一般需要对Sensor 输出的Low data进行一个Gamma矫正,然后再对Low data 进行插补点算法产生一幅完整的彩色图象,一般的Sensor的对每种色彩的输出也不是平行线性的。所以针对这种Sensor还须分别对每种色彩进行 Gamma矫正。使输出的色彩相对平衡。

二、自动曝光补偿(AE)
    自动测光,是利用了物体对光线的反射原理,来判断。所有的物体对光线都有反射,绝对不反射的物体在地球表面是没有的,测光有2种;1、是全窗 口分析。2、就是对某一部分进行分析,测出该物体的(一般是被摄主体)的反射率。将光线强弱信号转化成电信号,这就是自动测光。
    通过测量的信号进行自动调整曝光时间及增益(AGC),1步测量出该Sensor最佳AGC值,一般在AGC最大与最小的中间值,然后对 Sensor 设置AGC为查考值。然后对Sensor的exposure timer 进行调整,如果到了下限或上限再对AGC进行相应的调整,注意AGC调整太高了容易造成图象低噪信号。
  

 PCCAM的自动算法:
计算RGB中的亮度值也就是计算G的累计值B,
EVpre为上一次的EV值,Bpre为对应的上次的亮度值。
Bopt为当前计算的亮度值。

三、自动白平衡(AWB)
    自动白平衡校正可以确保影像中的白色与观察者看到的真正的白色一样。下图中左侧的影像是在2856K卤钨灯照明的条件下拍摄的,但是对它进行 了标准的自动白平衡处理。一个高级的自动白平衡(AWB)系统,可根据影像拍摄的照明条件,使影像几乎呈现为真正的白色。 下图中右侧的影像为 经过改进的自动白平衡处理后的影像。

四、坏点处理
    对于CMOS的Sensor或多或少都会有小坏点,这样就造成了显示图象的一个固定的亮点或带固定颜色的小点。
    处理方法,首先申请一块Sensor大小空间数组,用于保存坏点的位置及。
    判断流程,驱动在启动用首先对该数组进行清零,然后对帧图形进行扫描判断,当一个点与它最近的一个相同色彩的点进行差值比较判断,如果在 1000次内该值始终处与旁边的点的值有比较高差值段且有一段时间没有变化就认为是一个坏点。注意必须是对Low data进行分析。
    对坏点的修补工作,在插补算法的过程中对该坏点采用与该点最进的相同色点的值进行替换以达到坏点修复方法。




下面是 PCCAM的流程
首先从初始化USB、IC 、Sensor并设置一些配置功能。


     Sensor以接收的时序的不同,可分为主动模式(Master)与被动模式(Slave),主动模式的Sensor的时序产 生,主要是接收系统的时钟(Clock),产生输出资料的时钟(Pixel Clock)及垂直(V Sync)几水平(H Sync)的同步信号。而被动模式的Sensor的时序主要是接收系统的时序(Clock) 垂直(V Sync)几水平(H Sync)的同步信号然后输出图象数据,一般而言主动模式Serson内部有比较多的寄存器、除频器及一些影像处理功能,而被动式Sensor一般只有控 制曝光(Shutter)几信号放大 (Gain)的功能,所以内部的寄存器也比主动式的要少,当然价格肯定也会更低。
    注意每个Sensor都有个有效的感应区域所以在设置Sensor时需要设置好有效的起始位置,且要注意与插补算法对应否则会出现色彩不正确的问题!

I2C 通讯协议:
I2C通讯协议是标准的IC之间通信的一种协议。其由8个bit为单位进行传输。
EX61X251/151的I2C协议的设置。
在寄存器的0X01地址的第3个bit ,I2C 或串接式输入设定 (Serial InterfaceMode,0:SSI,1:SI),把该字节设置为1就是I2C模式否则为SI模式。
    具体代码:
        wIndex=0x01; byValue=0x10; ulSize=1;
        ET150CAM_RegisterWrite(pDC,wIndex,&byValue,ulSize);

3、Sensor Gamma
从Low data输入数据后根据对应的Gamma Table来修改输出的值。




4坏点补偿
    首先申请一块Sensor大小空间数组,用于保存坏点的位置及。
    判断流程,驱动在启动用首先对该数组进行清零,然后对帧图形进行扫描判断,当一个点与它最近的一个相同色彩的点进行差值比较判断,如果在 1000次内该值始终处与旁边的点的值有比较高差值段且有一段时间没有变化就认为是一个坏点。注意必须是对Low data进行分析。
    对坏点的修补工作,在插补算法的过程中对该坏点采用与该点最进的相同色点的值进行替换以达到坏点修复方法。

5、插补算法
从最下一行开始编码,采用3*3的方阵插补成一个点的颜色。
G=((g11+g13+g31+g33)/4+g22)/2,B=(b12+b32)/2,R= (r21+r23)/2,其他行的依次类推。

6、Color Gamma
    对插补算好的每个点RGB进行Color Gamma 调整。
7、AGC、EXP控制。
Gain增益控制,0~255值越大其增益就越小。增益太大容易造成低噪。
EXP自动曝光时间。0~1024值越大曝光时间越小。
该控制采用I2C协议进行传输。
注:该值是对特点的Sensor而言。
8、AWB自动白平衡控制。
判断R、G、B之间的差异并相应对比低的色值调整其输出的增益(RGB Gain)

9、Frame Rate调整
    当调整曝光时间和AGC都到了最低值或最高值时可以通过调整Frame Rate,来适当调整曝光时间,但是曝光时间太长了会引起图像有拖影的问题!
    
10、最后图像输出
由 于在Sensor会产生许多细小的噪点,所以需要在最后输出时对图形进行一个轻微的模糊处理,让图像看起来比较柔和一点。另外当光线第于30Lux时 Sensor会产生大量的噪点所以通过判断AGC和AEC的值来判断是否进入了光线比较暗的环境来打开一个4*4的模糊处理。