|
对鼠标丢帧的一些看法和思考------期待大伙进来一起讨论
30
17806
楼主

本帖最后由 crossednick 于 2012-1-16 20:37 编辑
1. 我们知道鼠标做出的每一次物理移动,都会通过SENSOR扫描产生一系列的连续的画面,而引擎对每相邻的两帧画面进行比对的时候就会有一次COUNT,而每次COUNT的判断正确与否,就决定了鼠标的这一次物理移动会否产生丢帧。比如IE3.0做了一秒钟的移动,就产生了9000帧的画面,那如果这次物理移动是准确的,也就表示鼠标引擎对这9000帧画面的每一次COUNT都是准确无误的,而如果其中有一次COUNT错误,那这整个一次物理移动就是一次“丢帧移动”。所以对于COUNT而言,每一次“准确的物理移动”都不存在一个COUNT成功率问题。试想就算对于一次移动的COUNT有99.9%都是准确的,那这次移动依然是“丢帧移动”。
2. 对于每次COUNT,其判断成功的基础在于相邻两帧画面的面积重叠率(相同特征点比例),假设面积重叠率至少为60%的时候,这一次COUNT才会做出正确判断,也就是说,排除垫子表面局部特点造成的影响,那只要大于60%的面积重叠率都能保证COUNT的准确性。理论上说,相邻两帧画面的面积重叠率越高(相同特征点越多)也就越好。提高相邻两帧画面的面积重叠率的途径也就两个,一是CMOS面积一定时提高FPS,二是FPS一定时增加COMS面积。下面以IE.0和KINZU V2为例,简单推算一下两款鼠标各自的最小面积重叠率。
IE3.0
失效速度为1.5M/S,FPS为9000帧/S,CMOS点阵为22X22=484像素,最高每秒处理像素=484*9000=4356000像素
1500mm/9000=0.16667mm,25.4*0.0025=0.063mm,0.063*22=1.397mm,
最小面积重叠率为:(1.397-0.16667)/1.397=0.8807
KINZU V2
失效速度为1.97M/S,FPS为3600帧/S,CMOS点阵为32X32=1024像素,最高每秒处理像素=1024*3600=3686400像素
1970mm/3600=0.5472mm, 25.4*0.0025=0.063mm,0.063*32=2.016mm
最小面积重叠率为:(2.016-0.5472)/2.016=0.72856
由以上的推算可知增大CMOS面积可以带来的好处是可以有效降低“保证不丢帧所需的最小面积重叠率”和最高扫描速率(FPS)。对比IE3.0和KINZU V2的引擎还可以发现,其实IE3.0的引擎具有显著更高的图像处理速度,而KINZU V2的引擎则以较低的图像处理速度,取得了比IE3.0的引擎更优秀的失效速度并有效地节约了成本。所以增大CMOS芯片的面积所带来的好处的确是很明显的。
3.若鼠标CMOS面积为20X20像素,那每帧画面就包含400像素点,前后两帧画面比对时,是对每一像素点进行逐一比对,从而计算移动的坐标。光学鼠标所采用的光源基本都是单色光(红色光、蓝色光或者红外光)所以每帧图像也就是“黑白图像”。CMOS上的最小单位是像素,因此,引擎会对感光元件获得的每一帧图像上的每一像素点进行赋值,赋值的依据就是不同的“灰度值”,而灰阶等级划分得越细则灰阶分辨率越高,相应引擎对相邻两帧图像的比对准确率也就越高。鼠标垫表面对“灰阶分辨率”的影响包括两方面的因素,一是局部表面的“规则度”,这一表面特性直接影响到反射光从而也就影响引擎对每个像素点的赋值。假设某表面的物理结构(或者说表面纹理)非常的均一,就很可能导致反射光在COMS上连续几帧成像都非常相似的情况,那局部丢帧也就产生了。二是鼠标垫表面的某些颜色对鼠标光源的入射光有一定的吸收,这样就影响了引擎对反射光的灰阶分辨率,从而造成局部丢帧。
以上是我对鼠标丢帧的几点看法和思考,写出来与大家分享。其中肯定有不少错误,欢迎指正,也期待和大伙一起讨论和学习。 |
评分
-
查看全部评分
|