结要:……
本文原载于《电脑高手》2003年2月
光电鼠标篇
光学成象式光电鼠标是继光机式鼠标发明之后,鼠标技术的最大发明,而它也以独特的优势在很短的时间内将光机式鼠标挤出了绝大多数鼠标市场。所以,对于这样一个重要的发明,我们单独用一章来进行详细的阐述。
光电鼠标的历史
第一代光电鼠标也就是传统的需要使用光电反射板的光电鼠标,虽然同是光电鼠标,但是它的原理和机电式鼠标其实是一样的,都是使用两组光电管获得横纵两向上的移动信号,只不过是将栅轮换成了带有栅格的垫板而已。和现在的光学成象式鼠标有本质的区别。
1991年,罗技公司开始研究使用最新的光电成象技术制造光学成象式定位引擎,其结果就是前面所述的Marble定位技术。不过此时由于前面所述的,其光电扫描电路扫描速度慢、成象尺寸小、所以还只能用在轨迹球这种对速度要求不很高的设备上。但其技术原理成为后来的光电成像引擎的共同原理。
1999年,微软与安捷伦公司合作,推出了一种名为Intellimouse Explorer的鼠标,它使用了一个名为IntelliEye的定位引擎,这是世界上第一个光学成象式鼠标引擎,它的高适应能力和不许清洁的特点成为当年最为轰动的产品,被多个科技评选评定为1999年最杰出的科技设计之一。不过在光学成象技术尚不完全成熟的当时,其成本与价格也都是极为额高昂的。笔者当年购买的价格接近100美元之高,这是今天只有100多元人民币的价格所不可想象的。
在很长的时间里,一直只有微软公司生产此类产品,但既然技术已经成熟,那么其他厂商的跟进也就只是时间的问题。
2000年,罗技公司也推出了同类的鼠标产品,它所使用的引擎是安捷伦公司所独立推出的光学成象引擎,在产品细节特别是DSP分析处理上有所差异,但基础指标都是一致的。同样是1500次的刷新频率、400CPI的精度和16X16的CMOS尺寸。
这一代产品是光学成象式引擎的第一代产品,它们拥有一些现在已经众所周知的缺陷——只有1500Hz的刷新频率导致快速移动时指针会丢失;400CPI的精度仍然相对机电式鼠标有一定的差距;CMOS尺寸太小导致对采样表面的适应性达不到宣传中的效果,不仅对镜面表面的适应力很差,而且对花纹表面的适应性也很不理想。
2001年,安捷伦和微软各自推出了自己的第二代光学成象引擎。首先推出产品的是安捷伦,安捷伦在CMOS和DSP引擎都没有重大变化的背景下,通过对引擎光学部分的重新设计,将引擎的CPI值提升到800CPI,同时将刷新频率提升到2000-2500Hz。不过由于重要的刷新频率和CMOS尺寸两大指标变化不大,所以在第一代光学成象引擎基础上的提升并不明显。为了弥补移动速度和表面适应性的缺憾,罗技公司在2002年初推出了含有两个光电头的极光飞貂鼠标,但这仍然只是权宜之计。所以在安捷伦的宣传中也没有对这第二代产品大肆宣传,只是无声无息的取代了第一代引擎。
2001年底,微软公司在与安捷伦停止合作以后,独立推出了第二代IntelliEye引擎,与前一代引擎相比,它的改变是极为重大的——微软重新设计了CMOS和DSP算法,将刷新率提升到前所未有的6000Hz,同时,将CMOS尺寸提高到22X22,从而一举解决了光电鼠标存在的指针丢失和采样表面适应性差的问题。同时将全部的控制电路整合到了同一块芯片上,大大提高了系统整合度,增强了电路设计的方便性和可靠性。不过第二代IntelliEye引擎的光学部分并没有重新设计,其CPI仍然为400CPI。但是之所以这样,并不是因为微软的技术做不到,而是在这个问题上微软与安捷伦/罗技有不同的认识,这一点我们在介绍其参数含义时将会讲到。
2002年下半年,安捷伦公司终于推出了它和罗技公司合作一年推出的新一代光电引擎——MX光学引擎。在保留上一代引擎的800CPI精度的前题下,MX引擎将像素处理能力提升到前所未有的470万/秒,同时将CMOS尺寸大为提升(一种传言为30X30),这样使得它取得了超过一切原有光学引擎的性能,同时在综合性能上已经不亚于传统的光机鼠标,成为历史上第一款完美的光学引擎。关于这种引擎的详细说明和测试,在本刊2002年11期杂志上有对罗技MX引擎系列数表的测试说明。
发展到MX光学引擎,光电鼠标的引擎设计已经基本定型,但是完善的引擎又带来了其他设计上的瓶颈。
光电鼠标的结构和原理
光电鼠标在主体结构上与传统的光机鼠标是一样的,所不同的就是它的定位机构。
光学鼠标的定位机构也就是所说的光电引擎,它由三个主要的子系统组成:
IAS系统,即成像系统(Image Acquisition System),这是光电引擎的的核心部分,也是决定光电引擎性能的主要系统,各代光电引擎几乎全是在IAS系统上进行的改进。同时,这也是光电引擎上唯一一个光学电子系统,结构最为复杂;
DSP系统,即信号处理系统(Digital Signal Processor)。这是将IAS系统生成的图像进行除噪与对比分析,得出位移数据的系统,是光电引擎中的主要运算部件。DSP的算法效率决定了光电引擎的数据处理能力,IAS引擎能提供的扫描数据越多,就越是需要高效率的DSP能力;
SPI系统,即接口系统(Serial Peripheral Interface)。这是光电引擎上最传统的系统,它的作用就是将DSP系统生成的位移信号和按键系统的按键信号进行编码然后传输给电脑。在安捷伦引擎上,SPI系统就是如光机鼠标一样的独立芯片。而微软引擎则将它与IAS中的电子部分、DSP系统整合到了一块芯片上。
由于光电引擎没有机械部分,所以它的重量要小与各种机电鼠标结构,为了使重量符合传统的需求,所以一般在光电鼠标内部上壳处后部都会安装一块用于配重的铁块以保证稳定。
IAS系统是三个系统中最核心也是最复杂的。它一般由三个部分组成:光源部分、纯光学部分、光学电子部分。
光源部分的作用是为了CMOS的成象提供一个稳定可靠的光源。它一般由IAS系统后部的一个高亮度LED和一组光学管道以及与采样表面呈30度角的聚光透镜组成,可以在成象镜头下方的采样表面上形成强烈的照射光。这样在粗糙的漫反射表面上就会形成有阴影的对比度强烈的影像,成为DSP判断移动的依据。为了节省电能,一般来说光电引擎都具有自动节能功能,当DSP长时间没有测出移动时就会将LED转为低发光状态以节省电力。
光源LED的选择与光电鼠标的“色盲”现象
一直以来,在很多人的心中都有一个疑惑——为什么几乎所有的光电鼠标的LED都是红色的?
其实,往往正确的答案就是最简单的答案——选择红色原因就是因为红色的高亮度LED是最成熟和最便宜的!
由于红色的高亮LED最早问世,所以它的成本要比其他颜色的更低,而且其制造材料发展成熟,使得红色高亮LED的使用寿命最长。而光电引擎的成象是单色的,无论什么颜色的光源都不会产生影响。在这种情况下,除了少数厂商为了制造卖点以外,大多数厂商当然会选择红色的产品了。
但使用红色LED也带来一个问题,由于有色光在不同颜色表面上的反射率并不一致,这就导致光电鼠标在某些颜色表面上由于光线反射率低导致DSP不能识别的“色盲”问题。
要根本解决这个问题,只能从根部入手,提高DSP的分析能力,但目前的光电引擎除微软自己以外,几乎所有的厂商都采用的安捷伦设计,其DSP算法完全一致。但在DSP相同的情况下,有些产品却没有这样的“色盲”问题,这是怎么回事呢?
其实原理非常简单——既然是光线反射率低带来的识别失败,简单的加大光源功率不就成了?就象旧光驱调大激光头的功率来提升读盘能力一样,换用更大功率的发光二极管——答案就是这么简单!
光电鼠标的光学部分主要就是指的它的成象透镜,由于是近距成象,所以这是一个高曲光率的透镜,其制造材料一般是有机玻璃。
光电系统就是IAS系统中的CMOS传感器,它是一个由数百个光电器件组成的矩阵,镜透镜成的采样表面像就在CMOS上转换为矩阵电信号,然后传输至DSP进行处理。
而光电引擎的工作原理,简单说起来就是:光源照亮采样表面,生成对比度强烈的待采样影像——通过透镜在CMOS上成象——CMOS将光学影像转化为矩阵电信号传输给DSP——DSP将此影像信号与存储的上一采样周期的影像进行比较,寻找相似点——如果发现存在移动,就发送一个位移距离信号到SPI,否则就什么也不做——继续下一个采样周期。
而SPI则对由DSP发来的位移信号进行整合处理,按鼠标接口采样频率将每个接口采样周期内积累的位移信号统一计算后输出到鼠标接口,然后再清零准备接受下一个周期的数据。
由于光学成象式光电鼠标的工作原理和传统鼠标有很大的不同,所以它的参数与传统鼠标相比也有很大的差别,我们下面就来看一看。
光电鼠标的参数
CPI:
与光机式鼠标一样,CPI也是光电鼠标的一个重要指标。不过对于光电鼠标的CPI,一直以来都有一种误解,例如当初在某个著名网站上曾有过的争论——为何安捷伦二代引擎比微软二代引擎的CMOS尺寸小,其CPI反而更高?
其实我们想一下就很容易明白了,光电引擎的成象其实就象是显微镜照像,其CPI水平就相当于照像的细节清晰度。那么——显微镜照像的清晰度会和照片的尺寸有关系吗?当然不会,它只会取决于显微镜的放大率,就算你把底片换成只有原来一半大的,也只会使得原来照片上的一些东西照不出来了,但照片的细节也不会变得更清晰或更模糊。
所以,上面的问题也就一点也不奇怪了,因为光电鼠标的CPI与CMOS的像素数毫无关系,它完全是由透镜的曲光率决定的。
同样,提高透镜的曲光率就可以提高鼠标的CPI数值,但是这种提升是有限制的,因为在CMOS尺寸不变的情况下,CPI越高,能够成像的范围就会越小,这样对下面我们将要提到的各项参数的要求也就越高。同时,由于光电引擎的成象是单镜头近距成象,所以它的图像实际为鱼眼图像,透镜曲光率越是提升,其图像变形和像差也就越严重,最终其图像就会变得毫无用处。所以除非对其光学结构作出大的调整,否则很难期望光电鼠标的CPI达到与高CPI机电鼠标相当的水平。
采样频率:
这是光电鼠标独有的参数,它代表的是CMOS每秒钟对采样表面“拍照”的次数和DSP相应的每秒运算处理能力。
早期的光电鼠标,存在着高速移动鼠标时,就会出现鼠标指针不动甚至满屏幕乱飞的情况,出现这种情况,其道理也很简单,就是因为当鼠标高速移动时,很可能会出现CMOS接连两次拍摄的图像中没有任何共同采样点的情况,没有共同的采样点,当然也就无从比较移动的方向,就好像一个人在长途汽车上睡觉醒来不知身在何方一样。这样DSP当然无法正常处理,从而产生大量的错误信号。
解决这个问题的一个主要方法就是提升“拍照”的速度,“连拍”的速度越快,就越能在鼠标移出上次拍照的地区之前拍下下一张照片。微软的第二代IntelliEye引擎就一举将采样频率由1500Hz提升到了6000Hz,彻底解决了这个问题。
但是,从严格意义上说,只谈采样频率其实是不科学的,这也就是为什么光电引擎的原始设计者安捷伦公司现在已经不使用这个参数的原因,而道理就在下面。
CMOS像素数:
罗技最新的MX系列鼠标采样频率不及微软的鼠标(其实际采样频率应该在5000Hz左右,曾有的8000Hz传言被证实为谣言),但它们的最大移动速度却比微软鼠标更强?为什么?
因为要保证在高速移动鼠标下不出现相联两次采样下无共同采样点的情况,除了加快“拍照”速度以外,还有另一种方法,就是增大“照片”的尺寸。只要能够一次得到足够大范围的特征点,那么少“拍”几张也没什么大不了。
MX光电引擎就是依靠比微软更大的CMOS像素数取得了同样的效果,但提高CMOS像素数的意义并不只在于此。
前面说过,提高光电鼠标的CPI会缩小成象的范围,而成象范围的缩小又会减小采样的面积,这样为了防止指针失灵,就必须用两种方法来减小它的影响,即提升采样频率或是增大CMOS尺寸,而后者显然比前者在技术上容易得多。
老的第一代光电鼠标产品还存在着对表面适应力的问题,它们无法在镜面和透明材料上使用,同时也无法在具有复杂的花纹的表面(如木纹表面)上准确定位,而且还时不时的存在指针莫名其妙的抖动的问题。
之所以出现这种问题,还要从光电引擎的DSP对于图像的分析说起。
DSP系统之所以能够对前后两张图片作出准确的判断,除了DSP本身的模糊运算能力之外,更主要的还是依赖特征点的取样,越是能够取得更多的准确的特征点,就越是能够作出准确的判断。在透明表面和镜面上不存在可以使用的特征点,而复杂花纹表面的特征点重复性太强,也难以作出准确的判断。而在特征点不足的情况下,任何外界的影响如光照变化等都会引起“蛇影杯弓”的反应,从而引发自动的抖动。
要提高特征点的数量,有两种途径。一是提升引擎的CPI,CPI越高,对采样表面的细节分析就越透彻。但是正如前面所说的,单一提高CPI乃是一把双刃剑,带来的副作用也是很大的,而且对CPI的提升其实反倒会影响对细密的重复性表面的识别能力。那么可选的方法也就只剩下了一种,那就是提升CMOS像素数,“能拍的照片”越大,可采用的特征点当然也就越多。
所以,新一代的光电引擎全都提升了CMOS像素数,其中微软的第二代IntelliEye引擎提升到了22X22,而安捷伦的MX引擎则提升到了30X30(推算)。
像素处理能力:
正因为传统的采样频率已经不能说明光电引擎的实际性能,所以罗技和安捷伦已经废除了这个参数,将其与CMOS尺寸、DSP处理能力结合,整合为“像素处理能力”这个指标。代表其光学引擎的综合采样运算性能。应该说,这个参数是非常科学的。
目前,安捷伦MX引擎的像素处理能力是最强的,为470万/秒。微软没有使用这个参数,但估算其第二代IntelliEye引擎应该约为300万/秒左右。其他的老式引擎当然就更低了。
最大速度&最大加速度:
像素处理能力虽然十分科学,但毕竟不很直观,所以将其与CPI参数相结合,可以派生出最大速度和最大加速度两个参数,它们代表了鼠标在移动中不会出现误移动的最高速度和可以被识别的最大加速度。
根据实验,人手在使用鼠标时,最高的移动速度约为30”/s,但早期的光电鼠标可以承受的最大移动速度只有15”/s,这也就难怪它会到处乱跑。而微软第二代IntelliEye引擎的最大移动速度达到了37”/s,MX引擎则高达40”/s,最大加速度达到了10g,所以它们都不存在这些问题了。
接口速率:
在这个指标上,光电鼠标和传统的鼠标并无不同,之所以要在这里单独提出来是因为关系到微软IntelliEye为什么只停留在在400CPI上的问题。
首先,要做到更高的CPI数值,其实只是设计更高放大率的镜头的问题,所以IntelliEye引擎只采用400CPI是与其光电处理能力无关的。
按照前面我们介绍接口速率时所述的,USB接口对于鼠标移动参数的最大传输速率是有限制的。也就是说,每秒钟最多传输移动127X125点的记录。这样,要达到最大40”/s的速度,则CPI不能超过400。
按照微软的看法,要作到400CPI以上的分辨率而又不影响移动性能,只能通过在高速移动时丢弃某些采样数据来做到,换句话说,也就是在高速移动时,实际CPI达不到理论的最大值。所以微软认为与其在最需要高CPI的高速运动中达不到理论值,还不如根本不考虑提升CPI以换取在其他方面的性能。
对于此观点的正确性,笔者难以给予评价,但至少说明微软迟迟不肯在光电引擎上加入高分辨率设计,也是有所考虑的。
罗技极光飞貂,双光头的“独生子”
罗技极光飞貂,是光电鼠标中独一无二的双光头鼠标,它使用了和其他安捷伦引擎所不同的SPI芯片,两个第二代安捷伦IAS/DSP处理器。通过将两个SPI芯片交替运行来获得更高的处理速度。但在实际使用中,它仍然达不到单一高速引擎的性能。但由于两个光头采样在不同的采样位置上,所以尽管CMOS没有变化,但极光飞貂对于采样表面的适应性要比同时期的单光头光电鼠标来得好,但在高重复性表面上,大尺寸CMOS仍然会来的更好。
随着新一代MX引擎的出现,光电鼠标引擎已经非常成熟,所以双光头这种权宜之计很可能也将成为历史上独一无二的“怪胎”。
光电鼠标的附属用品
在光机鼠标时代,可能也没有人想到过,鼠标的附属用品居然也能成为一个大产业。
鼠标垫:
在光机鼠标时代,鼠标垫就是一种重要的物品,从最廉价的纸质鼠标垫到最高档的皮质鼠标垫,应有尽有。不过从没有像今天一样,鼠标垫竟能卖到比鼠标更贵的价格。
在光学成象式光电鼠标早期,流行的说法是这类鼠标不需要鼠标垫,而厂商所打的卖点之一也就是这个“能在几乎所有表面上使用”。不过人们很快就发现,光电鼠标同样有对移动表面的要求,甚至,它的要求还要更复杂一些。
首先,光电鼠标使用的鼠标垫应该有和传统鼠标垫一样的移动性能,因为就算没有鼠标球的要求了,鼠标垫脚对于鼠标垫摩擦性能的要求依然存在。
其次,除了表面摩擦性能之外,光电鼠标还增加了光学性能的要求——光电鼠标使用的鼠标垫应该具有纯色的理想漫反射表面。因为它同时要求具有足够的特征点密度和良好的光学一致性。这样才能得到平滑定位的效果。
镜面类的光面表面或对光吸收力强的表面是不行的,因为它们不能提供足够高的特征点密度,杂色表面也是不行的,因为它不能提供良好的光学特性一致性。
所以,IceMat,1030等高档鼠标垫也就应运而生,它们的手感和物理特性各不相同,但一个共同的特点就是都符合上面的机械性能要求和光学性能要求。
但其实,这些鼠标垫的真实成本并不高,而且,任何符合上面的两点要求的平面其实都能取得同样的效果。
如IceMat之类的致密漫反射表面存在一个有趣的现象,就是一些早期的光电鼠标在上面的性能不升反降,就算有800CPI的分辨率也无济于事。其实它的道理也很简单,因为这类表面上的光学一致性太高,固然取得了更平滑的效果,但如果采样范围不够大的话,其特征点区别就不够明显。早期的光学引擎其CMOS成象尺寸太小,不能得到足够多的特征差异,就算有800CPI的分辨率也无济于事,因为这和CPI根本没有关系。
鼠标贴脚:
本来在传统上,并没有这个东西,但随着IceMat等鼠标垫的问世,由于其磨砂表面硬度太高,导致鼠标垫脚的磨损速度大幅度增加,所以这种一次性的润滑贴脚也就成了新兴的耗材。
从使用的效果来看,即便不考虑鼠标垫,使用这些贴脚也是会带来好的影响的,所以也难怪它们会成为游戏高手所必备的东西。只是这种产品当真是名副其实的极度暴利——其实这不过是截成小块的工业胶带,其原来的价格一米也只有几十元,而在被切成垫脚大小的小块之后,价格竟然翻了几十倍!
总结
与发展了近20年的光机式鼠标相比,光学成象式光电鼠标短短4年的发展时间还是太短了,在很多方面,它仍然不能被认为是成熟了。但MX光学引擎的问世,使我们觉得其核心技术的发展已经准备进入一个平台期,那么,下一步所应该考虑的除了继续简化设计降低成本以外,更多的应该考虑核心技术以外的东西了。以罗技鼠标为例,尽管在功能和硬指标上已经提升了不知多少,但至今其光电鼠标还没有哪一款在手感上比得上当年的光机鼠标王者——罗技银貂。毕竟硬指标只要达到一定的程度,用户就不会再关心它的继续提高而会去为其用户界面的问题操心了。
|