要求申请人2001年4月27提交的、名称“Input Methods UsingPlanar Range Sensors”的共同未决U.S.临时专利申请序列号No.60/287,115,2001年2月27日提交的、名称为“VerticalTriangulation System for a Virtual Touch-Sensitive Surface”的共同未决U.S.暑专利申请序列号No.60/272,120以及2000年9月7提交的、名称“Application of Image Processing Techniquesfor a Virtual Keyboard System”的共同未决U.S.临时专利申请序列号No.60/231,184的优先权。另外,本申请是2000年2月11日提交的、名称“Method And Apparatus for Entering data a VirtualInput Device”的共同未决U.S.专利申请序列号No.09/502,499的部分延续。所述申请的每一个在此合并作为参考。
具体实施方式
图1A描述准平面三维检测系统10的优选实施例,在结构光源系统实施例中,包括第一光学系统(OS1)20,发射平行于平面工作面40的光能的扇形射束平面30,在扇形射束平面30上定义了虚拟输入设备50和/或50′和/或50″。最好,扇形射束定义扇形角Φ并与工作面分开小平衡(stand-off)距离ΔY。试图触摸工作面的任何对象(例如,用户手指或铁笔)必须首先接触扇形射束,从而将被发射的光能照亮(可见或不可见)。尽管在图1A中示出了水平放置扇形射束平面以及工作面平面40,但这两个平面可以垂直或甚至以系统期望的任何其他角度来放置。注意,没有限制,工作面40可是工作台的一部分、台面、交通工具的一部分,例如,飞机中的托盘、挡风玻璃或仪表板、墙、包括放映影象的显示器、或如CRT、LCD等等的显示器。如在此所使用的,应当将术语“平面”理解成包括全部平面的子集。例如,将扇形射束平面30称为平面,即使它具有有限的宽度而且在所有方向中不是无限地扩展。
对“虚拟输入设备”,它的意思是可将输入设备的图象呈现在工作面40上,可能通过放置含有印刷图象的纸,或可能系统10将输入设备的可视图象投影在工作面上,或完全没有无论如何在工作面40上可见的图象。同样地,虚拟输入设备50、50′、50″不需要诸如工作按键的机械部件且不需要对手指或铁笔的触摸灵敏;简单地说,虚拟输入设备最好是无源的。
在图1A的例子中,虚拟输入设备50是可是原尺寸或由实际大小键盘放大或缩小的计算机型键盘。如果需要的话,虚拟输入设备可包含或包括虚拟跟踪球50′和/或虚拟触摸键盘50″。当系统10与虚拟键盘输入设备50,或虚拟跟踪球50′或虚拟触摸键盘50″一起使用时,约50°至90°的扇形角Φ,最好是约90°将确保扇形射束30以通常使用的距离包围整个虚拟输入设备。另外,对这种虚拟输入设备,达到几mm的平衡距离ΔY工作良好,最好是约1mm。
系统10还包括第二光学系统(OS2)60,通常是具有平面传感器的摄象机,最好是与OS120分开放置且位于OS1之上,并且以约10°至约90°,并且最好是25°的角度θ朝工作面40和平面30倾斜。系统10还包括电子处理系统70,在其他任务中,监视OS1和OS2。系统70最好包括至少一个中央处理单元(CPU)以及能包括只读存储器(ROM)以及随机存取存储器(RAM)的相关的存储器。
在图1A中,示出了系统10元件OS1 20、OS2 60以及处理单元70放置在设备80上或位于设备80中。设备80可是系统10的独立实现或实际上是虚拟输入设备50用来输入数据或命令的系统或设备。在后一种情况下,设备80可是但不局限于计算机、PDA(如图1A中所示)、移动电话、乐器等等。如果系统或设备80不受虚拟输入设备的控制,受控的设备90可电耦合到系统/设备80以便从虚拟设备50接收数据和/或命令输入。在虚拟设备是跟踪球(或鼠标)50′或触摸键盘50″的情况下,用户与这些虚拟输入设备50′或50″的交互作用可直接输出由设备80使用的触摸坐标(x,z)的原信息或数据。例如,用户与虚拟输入设备50′或50″的交互作用可在显示器140上重新定位光标160,或者改变由设备80执行的应用程序,或拟定所谓的数字标记180的位置,该位置沿用户可能使用虚拟鼠标或跟踪球50′或使用铁笔120′和虚拟触摸键盘50″“书写”的位置。系统/设备90可通过媒介100电耦合到系统80,媒介100并无限制,可包括导线或无线的,或能是包括Internet的网络。
在结构光源的实施例中,OS1 20在平行于x-z平面30的扇形射束30中发射光能。OS1可包括激光线发生器或LED线发生器,尽管其他光能源也可用于发射平面30。线发生器OS1如此称谓是因为它发射光平面,当与第二平面交叉时,光平面照亮使OS的平面,使得OS2的平面视为第二平面上的线。例如,如果圆柱形对象与平面30交叉时,OS2将事件看作椭圆弧的照亮部分,椭圆弧的长宽比将由平面30和表面40上的OS2的距离而定。因此,除环境光外,由平面30上的椭圆弧的OS2的检测表示触摸事件,例如,对象如120R已经接触或穿过平面30。尽管可使用各种光发射器,可使用波长在300nm至1000nm间也许3mW平均功率的激光二极管输出。虽然也可使用环境光波长(例如,也许350nm至700nm),如果没有避开这些波长的话,没有过滤或遮光器,会最小化环境光的影响。因此,可使用约600nm(可见红光)至约1,000nm(远红外线)。输出850nm波长光能的激光二极管将代表经济发射器,尽管OS2最好包括过滤器以减小环境光的影响。
虽然在结构光实施例中OS1最好是固定的,但应当理解可通过机械扫描光能的单个发射线来限定扇形射束平面30以生成扇形射束30。如图2B所示,OS1实际上可包括发射扇形射束的光能发射器20-A以及控制扇形射束30基本上平行于表面40的反射镜20-B。对本发明来说,在结构光实施例中,由OS1 20发射的光能对人来说是可见的或不可见的。OS2 60最好包括摄象机系统,对由OS1 20发射的波长的光能起响应。对于“响应”,它的意思是OS2识别出由OS1发射的相同波长的能源,并且理想地,将不识别或响应实质上不同波长的能源。例如,OS2可包括过滤系统以便不检测除由OS1发射以外的波长的光能,例如滤色镜。
如果需要的话,通过在例如单元70的控制下,同时同步开和关OS1和OS2,可使OS2实质上仅对由OS1发射的光能起响应。OS1和OS2最好包括遮光器机构,如元件22所示,将以同步的方式功能性地打开和关闭。例如,通过想要的占空比,电子处理系统70可同步地接通OS1、OS2,或遮光器机构22持续时间周期t1,其中t1或许在约0.1ms至约35ms的范围内,然后断开Os1和OS2。如果需要的话,可在任何时间操作OS1,其中允许平面30仅在OS1 20前部的遮光器22打开时辐射。在各种遮光器结构中,同时开关的重复率最好在20Hz至大概300Hz的范围内以便促进适当的帧数据采集率。为守恒操作功率并降低计算开销,大概30Hz至100Hz的重复率表示可接受的比率。当然,也可使用用于确保OS2实质上仅响应由OS1发射的光能的其他设备和方法。为便于描述,将遮光器22描述成机械元件,但实际上遮光器的概念应当是包括以多种方式的任何一种接通和断开光源。
如果需要的话,可使用与本发明一起使用的光能源具有所谓的标记以便更好地从环境光能识别出这种能源。例如并且并不局限于,可以固定频率调制这种光源以便与本发明一起使用的摄像机或其他传感器单元能更容易识别这种能源同时由于缺少这种标记,能充分地抑制环境光能。简单地说,标记技术如选择用于光能的不同于环境光的波长、涉及光源和摄像机传感器的同步操作的技术、以及调制或者标记光源能源均能提高由本发明获得的信息的信号/噪间比。
注意,不要求工作面40可发射或不可发射关于由OS1发射的波长,因为扇形射束或者光能的其他发射不能到达表面本身。也注意最好虚拟输入设备是完全无源的。因为设备50是无源的,能将其比例化到小于实际大小的设备,如果需要的话。另外,无源虚拟输入设备的成本能为零,特别是如果“设备”只不过是一张含有实际输入设备的印刷图形图象的纸的话。
在图1A中,假定最初系统10的用户不是与虚拟输入设备极其接近。在结构光实施例中,尽管OS1可发射光能扇形射束平面30,OS2检测不到任何东西,因为没有对象与平面30交叉。现在假定用户的左或右手120L、120R的手指部分向下移动以便触摸在虚拟输入设备50上限定的工作面40的区域部分。另外,用户控制的铁笔120′部分110′可向下移动以触摸工作面40的相关部分。在本发明的情况中,当请求将键盘事件发送到在伴随设备或系统80或90,例如笔记本、PDA、移动电话、信息站设备、销售点等等上运行的应用程序时,由与本发明有关的软件来解释触摸。
在图1A中当用户手指向下移动并开始与光能平面30相交时,面对OS1的手指尖部分现在将反射光能130。OS2将检测到至少一些反射的光能130,因为反射能源的波长与由OS1反射的能源相同,而且OS2对这种波长的能源起作用。因此,平面准三维检测系统10检测由用户控制的对象(例如手指、铁笔等等)的交互作用反射的光能,交互作用发生在由扇形射束平面30定义的感兴趣的平面(plane ofinterest)处。在任何其他平面上可发生的交互作用被视为不相关且可被本发明忽略。
因此,直到诸如用户手指或可能铁笔部分的对象与由OS1 20发射的光能平面30相交为止,将没有反射光能130用来OS2 60检测。在这种情况下,系统10知道当前没有用户输入。然而,一旦穿过光能平面,OS2 60就能检测到穿过的对象(例如,手指尖、铁笔尖等等)的交互作用,以及可由与系统10有关的处理单元70确定穿过的位置(x,z)。在图1A中,如果用户左食指正触摸在定义为坐标(x7,z3)的虚拟输入设备50部分上,那么与本发明有关的软件能确定已经“按压”字母“t”。由于没有同时按“换档键”,因此按压的字母将被理解为小写“t”。
在所示的实施例中,系统10可生成表示用户将在实际键盘上输入的数据和/或命令的键击并输入到系统80或90中。这种对系统80或90的输入可用来在显示器150上显示信息140,当用户在虚拟输入设备50上输入信息时。如果需要的话,可实现放大的光标区160以提供另外的可视输入以帮助输入信息的用户。如果需要的话,处理单元70可使系统80和/或90发射可听的反馈以帮助用户,例如,与在虚拟输入设备50上按下的虚拟键一致的电键声170。应当理解如果系统80或90是乐器而不是计算机或PDA或移动电话的话,将发射音乐声170,并且虚拟输入设备50可另外具有与合成音乐发生器有关的琴键类似的结构。
图1B描述非结构有源光系统10,其中在第一光学系统OS1中的摄像机20′定义感光趣的平面30′,该平面30′实际上代替由图1A的实施例中的光发射器OS1定义的平面30。摄像机20′OS1最好与摄像机60 OS2类似,可与图1A的实施例中的摄像机60 OS2类似。例如,OS1 20′可具有传感器阵列,包含至少一条线并且最好是若干线的象素检测器元件。图1B的实施例是有源的,因为放置在OS1 20′和OS260中间的一个或多个光源190产生可由摄像机OS1 20′和摄像机OS260检测的波长的光能。为减小摄像机OS1和OS2检测时环境光的影响,最好通过例如单元70使最好每个摄像机以及每个光能发射器190与遮光器机构协同同步操作。因此,在遮光器22允许来自发射器190的光能辐射到虚拟输入设备50、50′、50″的时间期间,类似的遮光器22将允许摄像机OS1和OS2检测光能。由OS1和OS2检测用户-对象,例如120L与平面30′的交互作用。然后使用例如在此稍后所述的三角测量方法,来计算相交点的位置。
在图1B中,示出了用户-对象120L的接触点110附近的工作面40的平面中的连续冲击或不规则性。存在第二摄像机OS1 20′的好处在于可能通过单元70选择感光趣的平面30′以便正好位于工作面40的最不规则部分上。如果在图1A的实施例中在工作面40中存在不规则性,将有必要相对于工作面稍微重新定位激光面30。但在图1B中,简单地通过从具有OS1 20′的检测器阵列选择适当的象素线,则可电子地获得这种重新定位的效果。
注意图1B的结构本身适用于各处方法来提高信号/噪声比。例如,遮光器22能允许摄像机OC1和OS2在通过例如控制单元70断开发射器190的时间期间收集图象数据。然后由OS1和/或OS2采集的任何图象数据将表示由环境光引起的背景噪声。(同样,应当理解为最小化环境光的影响,发射器190以及摄像机OS1、OS2最好以从环境光去除的波长状态操作)。可将已经采集的数据称为背景噪声信号,摄像机OS1和OS2现在可正常操作并与发射器190同步。由与发射器190同步的摄像机OS1和OS2采集的图象数据将包括实际数据如用户-对象与平面30′的交互作用,加上由于环境光而导致的任何(期望的)结果。然后处理器70(或另一单元)可动态地将背景噪声信号从实际数据加上噪声信号中去除,以得出实际的数据信号,从而提高信号/噪声比。
图1C描述本发明的非结构无源实施例。图1C中的系统是无源的,因为存在的任何环境光源195提供在成象过程中使用的光能。与图1B的系统10类似,OS1是定义感兴趣的平面30′的摄像机20′以及OS2是摄像机60。通常,将平面30′定义成工作面40上的距离ΔY′,通常是几mm的距离。用户-对象与平面30′的交互作用由OS1和OS2使用来自环境光源195的光能检测。然后可使用三角测量方法来定位与平面30′的交互作用或交叉点,如本文中别处所述。
图2A描述几何结构,通过该几何结构,可使用三角测量来确定用户手指或对象120R以及平面30间的交点的位置(x,z)。图2A和图2B可用来描述图1A-1C所示的各种实施例的分析。
如在此所使用的,三角测量通过由投影光线如两个光学系统如OS1 20、OS2 60的R1、R2形成的三角形的几何分析,帮助确定感兴趣视场内表面的形状。基线B表示连接两个光学系统OS1、OS2的投影中心的已知长度的线。对感兴趣视场中可视面上的点(x,z),可用点的位置和OS1及OS2的位置来定义三角形。三角形的三个边是B、R1和R2。OS1和OS2可确定三角形到基准面的角距离,以及由投影光线形成的角度α1和α2,投影光线将表面点与两个光学系统的投影中心连接起来。角度α1和α2以及基线B完全确定三角形的形状。能使用简单的三角法来得出到表面点(x,z)的距离以及投影光线R1和/或R2的长度。
不需要以单个单元实现OS 120。例如,图2B描述结构化光实施例,其中第一光学系统分成两部分:一个部分OS1-A 20-A是与OS2和OS1-B 20-B相距距离B放置的光发射器,光反射设备诸如反射镜。由OS1-A生成的入射扇形射束由反射镜20-B偏转以形成平面30。在图2B的方向中,相对于水平面倾斜反射镜20-B约45°,以及从实质上垂直的平面偏转到实质上水平的平面。在图2B以及真正的无源光实施例中,OS2 60将是针对通常朝向感兴趣的视场的角度Φ的摄像机,即其中用户手指或铁笔将使用放置在扇形表面30下的虚拟输入设备。
根据本发明的三角测量最好使用具有如OS2 60的平面传感器的标准摄像机。OS1 20的特性区分两种相当宽的三角测量。在结构光三角测量中,OS1 20通常是其光束可是单线形状的激光器等等,移动光束以便将移动点投影在表面上。另外,激光束可是平面的并移动来投影平面曲线。如所提到的,另一种三角测量系统可称为无源三角测量,其中将摄像机用作OS1 20。结构光系统倾向于更复杂以便构成并消费更多的操作功率,因为需要投影光平面。无源系统很低廉,并消费较少的功率。然而,无源系统必须解决所谓的对应问题,例如,确定两个图象中的哪对点是真实世界中的相同点的投影。如将描述的,根据本发明,可使用无源非结构光三角测量实施例。
不管将系统10实现为其中OS1有源发射光以及OS2是摄像机的结构光系统,还是按其中OS1和OS2均是摄像机的无源系统来实现,都将把来自OS2和OS1的信息耦合到处理单元,例如70上,处理单元能确定正发生什么事件。在另一实施例中,当对象如120R和与OS120有关的投影面30交叉时,可检测交叉。在结构光实施例中,其中OS1发射光能,由从相交对象120R反射的光能表示交叉并由通常为摄像机的OS2检测。在无源光实施例中,由OS1、摄像机察看交叉同时由OS2、摄像机察看。在每个实施例中,检测与平面30的交叉,就象在(x,z)平面交叉下的表面40的区域被对象120R触摸过一样。系统10最好包括计算系统70,从OS1、OS2接收数据并使用几何结构来从结构光实施例中的反射图象坐标,或从无源系统中的摄像机图象坐标确定平面交叉位置(x,z)。同样地,从而可实现检测初始和连续接触以及穿透平面30(例如,触摸事件)以及确定平面上交叉点坐标位置的双重任务。
至此总之,当OS1识别出平面30与闯入对象如120R的交叉,检测并说明触摸事件。在两个摄像机的系统中,建立来自OS1的感知的图象与来自OS2的感知的图象间的对应关系。此后,将OS2摄像机坐标转换成触摸区(x轴,z轴)坐标以定位平面30中感兴趣的区域内事件的(x,z)坐标位置。最好,由处理单元70执行这些变换,处理单元执行算法来从对OS2可见的点的图象坐标计算平面30中交叉位置。另外,无源光系统必须将闯入对象与来自OS1和OS2的图象中的背景区分开来。在系统10是无源光系统的情况下,需要建立来自摄像机OS1和来自摄像机OS2的图象间的对应关系。在系统10是结构光系统的情况下,希望最小化来自环境光的干扰。
现在考虑计平面30上(x,z)交叉点或尖端位置。在透视投影中,通过称为单应的变换将世界上的平面及其图象关联。使该平面上的点(x,z)用列向量P=(X,Z,1)T表示,其中上标T表示对换。同样地,使相应图象点用P=(x,z,1)T表示。
然后,单应是线性变换P=Hp,其中H是3×3矩阵。
可用校准程序找出该单应矩阵。由于将传感器建立在表面上,相对于表面的传感器位置是恒定的,以及校准程序仅需要执行一次。对于校准,将已知行距的网格放在其上放置传感器的平面上。在图象中测量与网格顶点P1对应的图象点的坐标pi。可使用直接线性变换(DLT)算法来确定单应矩阵H。这种DLT变换在本领域是公知的,参见例如Richard Hartley以及Andrew Zisserman.,名为MultipleView Geometry in Computer Vision,Cambridge University Press,Cambridge,UK,2000。
只要H是已知的,那么与图象中的点p一致的表面点P可通过上述矩阵矢量乘法直接计算出来。最好这种计算由系统70执行。
现在将描述用于无源光实施例的图象对应关系。摄像机OS1 20和OS2 60察看空间中相同的平面。结果,来自OS1的行扫描摄像机图象以及来自OS2的摄像机图象间的映射本身将是单应的。这与上面描述过的关于尖端相交位置的计算,OS2摄像机图象以及平面30触摸表面间的映射类似。因此类似的程序可用来计算该映射。
注意由于行扫描摄像机OS1 20实质上察看或掠过折叠成单线的触摸表面,两个图象间的单应是退化。对每个OS2摄像机点,有一个OS1行扫描图象点,但对每个OS1行扫描图象点,有OS2摄像机点的全部线。由于这种退化,将修改上述DLT算法以得出点对线的对应关系。
通过定义,本发明的无源光实施例在环境光上没有控制,以及能要求将闯入的交叉对象或尖端与一般背景区分开来。简单地说,如何断定OS1图象或OS2中的具体图象象素表示对象z如120R上的点的图象,还是一般背景中的点,现在将描述可由系统70执行的算法。
最初,假定仅具有看得见的平面30的触摸表面部分的一个或多个背景图象I1,...,In。假定摄像机OS1和OS2能对颜色起响应,并使Rbi(x,z)、Gbi(x,z)、Bbi(x,z)为在象素位置(x,z)的背景图象亮度的红、绿以及蓝分量。使Sb(x,z)为所有图象上Rbi(x,z)、Gbi(x,z)、Bbi(x,z)的总和。例如,Sb(x,z)可以是具有平均值、中间值或可能标准化以降低图象亮度方面的变化的所有背景图象I1,...,In上象素位置(x,z)处Rbi(x,z)、Gbi(x,z)、Bbi(x,z)的统计数。
接着,收集用于新的图象序列J1,...,Jm上尖端象素的类似总和St。该第二总和是单个矢量,而不是关于Sb(x,z)的矢量图象。换句话说,St不依赖于象素位置(x,z)。可通过例如要求用户将手指尖或铁笔放在表面的敏感区中、并仅记录在其颜色非常不同于在(x,z)处背景总和Sb(x,z)的象素位置(x,z)处的值、并计算j,x,z的所有值上的统计来计算该新的总和。
然后,假定具有颜色分量c(x,z)=(R(x,z),G(x,z),B(x,z)的新图象),通过适当的判别规则,将在(x,z)的具体象素归因于尖端或背景。例如,可定义三个矢量间的距离d(c1,c2)(Euclidan距离是一个例子),以及基于下述示例规则分配象素:
背景 如果 d(c(x,z),Sb(x,z))<<d(c(x,z),st)
尖头 如果 d(c(x,z),Sb(x,z))>>d(c(x,z),st)
未知 其它
现在将描述用于降低环境光干扰,特别是用于结构光三角测量实施例的技术。在这种实施例中,OS2需要区分环境光和由线发生器产生的并由闯入对象再反射回来的光。
使用第一种方法,OS1在例如,在近红外区中的其中环境光具有较小的功率的光谱区域中发射能源。在摄像机OS2上的红外过滤器能确保由OS2传感器检测到的光主要从对象(例如,120R)发射到摄像机OS2的镜头中。
在第二种方法中,OS1在光谱的可见部分中操作,但比环境光要亮得多。尽管原则上这可通过任何颜色的光源来实现,但对室内应用,它可用来看见用于OS1(500nm至550nm)的蓝-绿光源,因为标准的荧光灯在该波段具有相对低的发射。最好,OS2将包含匹配的过滤器以确保充分衰减对其他波长的响应。
减小环境光影响的第三种方法将标准的可见激光源用作OS1,以及将彩色摄像机传感器用作OS2。该方法使用如上所述的相同的背景减算法。使用与上相同的术语学来定义下述组合。
C(x,z)=min{d(c(x,z),sb(x,z)),d(c(x,z),st)}
当c(x,z)等于代表的对象尖总和St(由于d(st,st)=0)以及对于背景图象Sb(x,z)(因为d(Sb(x,z),Sb(x,z)=0)时,该组合正好为零,以及对其他对象尖图象行距以及对背景的可见部分,该组合将接近于0。换句话说,对象尖和背景在图象C(x,z)中很难看见。通过比较,在来自激光发射器OS1的投影面30与对象尖120R相交的位置,项d(c(x,z))将是较大的非零值,反过来获得用于C(x,z)的相当大的非零值。该方法学实现期望的基本上只识别由激光(或其他发射器)OS1)照亮的对象尖象素的目的。可改变该方法以便利用不同颜色的光发射器,以便使用用于距离d的其他距离定义,以及以便使用不同总和Sb(x,z)和St。
在图1A中,如果设备80是诸如PDA或移动电话的袖珍系统,就特别需要来降低需要来实现本发明的大小。如果如图1A-1C、2A、2B所示,将OS2相对于平面30或表面40倾斜某一角度θ,能产生较小的总体构成事实。但是当角度θ减小时,摄像机OS2从更窄的角度察看平面30。对用于平面30的敏感区的固定大小,即,由用户对象“触摸”以操纵下面的虚拟输入设备的表面矩形,当距离B和角度θ减小时,由视场对着的有效面积减小。该结果是减小有效的OS2分辨率,从而减小z深度测量的准确性,如图3A所示,其中L表示与OS2有关的摄像机镜头,其象素检测器的平面如用OS2标记的直线所示。
如图3A中提到的,将OS2移动到更靠近平面30导致更窄的视点以及更小和、更不准确感知的摄像机图象。这些不利的副作用可通过倾斜摄像机OS2中的象素检测器的平面、真正倾斜使其几乎平行于平面30来减小,如图3B所示。通过图3B的倾斜结构,注意实质上更多的图象扫描线与来自平面30上的敏感区的射线的锥形部分交叉,这相应地增加了深度分辨率。例如,将图3A中相对小的距离Dx与图3B中较大的距离Dx′进行比较,表示现在正在使用更多的图象扫描线。另外,当OS2摄像机传感器平面更平行于触摸面的平面或平面30时,导致较少的触摸面图象失真。这意味着触摸面(或平面30)上的平行线在OS2摄像机图象中仍然平行。优点是简化对仿射变换(移动和比例化)的单应H。另外,使得在感兴趣的视场内的整个敏感区上的图象分辨率更一致。
现在考虑图3C的结构。在平面30上感兴趣的触摸敏感区上的不同点处于与摄像机OS2的镜头L不同的距离是显而易见的。这意味着如果镜头L如图3A或图3B所示定位的话,则不能精确地集中于感兴趣的整个敏感区。虽然关闭摄像机光圈能增加视野的深度,合成图象将变得更模糊,并且将减小图象的信号/噪声比。
因此,可采用图3C的结构,其中相对于图3B重新定位透镜L。在该结构中,假定触摸表面30、摄像机OS2传感器、以及摄像机镜头L均满足所谓的scheimpflug条件,其中它们的各自的平面沿公共线、在图3C中无限远距离处的线交叉。另外,关于scheimpflug条件的详细情况可在The Optical Society of America、Handbook ofOptics,Michael Bass,Editor in Chief,McGraw-Hill,Inc.,1995中找到。在图3C中,当相关的光学系统满足该条件时,在触摸表面30上的所有点将焦点对准。因此,通过使用适当的倾斜传感器OS2,满足Scheimpflug条件的适当定位的镜头S、由表平面30上感兴趣的点的OS2所见的图象将焦点对准,并且显示出高分辨率以及较小失真。但满足Scheimpflug条件将导致损失图象亮度,因为当从平面30上的敏感区的中心看时,镜头对着的角度相对于图3B的结构被减小。因此,最好,可在某些应用中,通过将OS2摄像机镜头放在图3B和图3C的OS2摄像机镜头中间的方位中来实现焦点的锐度与图象亮度间的平衡。图3D描述一种这样的中间结构,其中相对于OS2的平面30,故意将镜头L稍微远离满足Scheimpflug的方向。
这种中间方位不满足Scheimpflug条件,但通过更小的角度并因此仍然显示出比镜头轴点直接对着平面3的敏感区的中心的结构更好的聚集。图3E描述另一种中间结构,其中精确地验证Scheimpflug条件,但倾斜摄像机传感器OS2使其远离水平方向。图3E的结构能实现精确的聚集但具有稍微低一些的图象分辨率并且比图3C的结构具有更大的失真。
图4是描述系统10中处理器单元70的操作部分的框图,处理器单元最好执行各种三角测量以及在此描述的其他计算以检测和识别与感兴趣的平面30的(x,z)截距。如图4的左边部分,分别将来自OS1 20和OS2 30的信息输入到象素图200-1、200-2中。在图4中,根据本发明,OS1和OS2输入指的是由平面距离传感器系统10中的光学系统1(20)以及光学系统2(60)生成的数字化图象帧流。在优选实施例中,光学系统每秒生成至少约30帧(fps)。需要较高的帧频,因为在30fps,用户手指或铁笔尖能移动几个象素同时在两帧之间在虚拟输入设备上“健入”。象素图模块200-1、200-2在与计算单元70有关的存储器中处理来自OS1和OS2的数字帧。合成器模块210确保两个光学系统在大约相同的时间产生数字化图象帧。如果需要的话,可实现双缓冲系统以允许在构成一帧的同时由其他模块(及时)处理在前帧。当手指尖或铁笔的轮廓出现在选定的帧行中时,触摸检测模块220检测触摸(例如,用户手指或铁笔与由OS1感测到的光平面的交叉点)。当检测到触摸时,尖端检测模块230将相应的手指尖的轮廓记录到适当的象素图200-1或200-2中。在图4中,在结构光实施例中,其中OS1是光束发生器,不产生象素图,以及触摸检测将使用来自OS2的输入而不是OS1的。
当报告不自触摸检测模块220的触摸时,触摸位置模块240使用来自尖端检测模块230的尖端象素坐标以找到触摸表面上触摸的(x,z)坐标。如所提到的,在结构光实施例中,触摸相当于穿透与光发射器OS1有关的平面,以及在无源光实施例中,相当于穿透与摄像机Os1的视图平面有关的平面。在本文的别处描述将象素坐标转换成X-Z触摸位置的数学方法。
键识别模块260使用触摸的X-Z位置并使用最好存在与计算单元70有关的存储器中的键盘布局表250映射位置以便键识别。键盘布局表250通常相对于零原点定义每个键的上/下/左和右坐标。同样,键识别模块260的功能是执行表250的搜索并确定哪个键包含触摸点的(x,z)坐标。当识别出触摸过的(虚拟)键时,变换模块270将键映射到预定的KEYCODE值。将该KEYCODE值输出并传送给正伴随设备或系统80上执行的应用程序(正在伴随设备上执行),应用程序正在等待接收键入事件的通知。正在执行的应用程序解释击键事件并赋予其含义。例如,文本输入应用程序使用该值来确定输入了什么符号。电子琴应用程序确定按下了什么音符并演奏那个音符等等。
另外,如图4所示,可直接将X-Z触摸坐标传送给应用程序280。在虚拟鼠标或虚拟跟踪球的初稿例中,应用程序280使用坐标数据来控制显示器上光标的位置,或在虚拟笔或虚拟铁笔的实施例中,用来控制数字标记源,对制图或手写输入应用程序,在显示器上显示其轨迹。
图5A是简化的系统10的图,其中虚拟设备50现在用5个区域控制,以及其中伴随设备80、90包括监视器。在该实施例中,所示的伴随设备80或90具有显示器150,显示器150可包括图标140,其中一个图标由光标310包围以及用户能使用虚拟设备50′移动,在此虚拟设备50′为虚拟跟踪球或鼠标。例如,在虚拟设备50′中,如果用户手120的(或铁笔)部分按压虚拟区300-1,将命令在伴随设备80工中显示的光标310向左移动。如果按压虚拟区300-2,光标应当向右移动,例如,选择一块面包的图标,以及如果按压虚拟区300-4,光标应当移向在设备80、90上的显示器的底部。如果用户按压第五区300-5,“翘拇指”区域,伴随设备80或90知道现在结束用户选择。在图5A中,如果用户现在按压区域300-5,选择“热狗”图标。如果设备80、90是在超级市场中的信息站,例如,选择“热狗”图标将使显示器显示在市场中何处可找到热狗,或正出售的各种商标的热狗的价格,或设备80、90可甚至分发热狗。如果设备80、90用在运输配置中,图标(或字)可是各种目的地,以及设备80或90可表示路线、时间表以及对目的地的费用,甚至可分发用于汽车、地铁、飞机、船等等的车票。例如,用户能按压表示行程起点和行程目的地点的输入设备50′的两个区,据此,系统10能使显示器显示适当的运输车辆、时间表、费用等等,以及如果需要的话,打印出来。将意识到由系统10生成的信息可简单的是由伴随设备执行的软件应用程序用来重新定位显示器上的光标或其他信息的原始(x,z)坐标。
在图5A中将理解到虚拟设备50′是无源的;其轮廓可是印刷或涂在下面的工作面上,或可能其轮廓可由系统10投影。虚拟设备50中的感兴趣的各种区可根据相对于x-z平面的坐标识别。考虑下面表1中的信息,其对应于图4中的键盘布局250中的信息。
表1
当用户手指(或铁笔)触摸虚拟输入设备50的区域时,触摸位置模块240(见图4)确定触摸点的(x,z)坐标。在图5中,触摸点110位于“B”区300-4中。在如表1所示的例子中,键识别模块260使用键盘布局250信息来确定在相关(x,z)平面中,何处产生触摸点坐标。通过例子,假定触摸坐标(x,z)为(1.5,0.5)。最好存储在与单元70有关的存储器(见图1A)中并由单元70执行的搜索例程确定1<x<2以及-1<z<1。搜索表1中的信息,键识别模块将确定触摸点110是否落在记录中。在该例子中,伴随设备80和90从通知已经触摸过区域B的系统10接收数据。系统10中的处理器单元能使伴随设备接收可能需要来执行与事件,例如,在显示器上向下移动光标有关的任何的其他信息。
图5B描述与图1A所示的类似的系统10的实施例。在图5B中,虚拟输入设备50是计算机键盘以及伴随设备80、90是例如移动收发器、移动电话。将理解到系统10实际上能在设备80、90内实现。同样地,OS1可从设备80、90的下面部分发射扇形射束30,以及OS2可放置在同样的设备的上面部分。如果需要的话,可从设备80、90任何投影虚拟输入设备50。另外,虚拟输入设备50可印刷在可折叠的衬底例如塑料、纸等等,其能保留在设备80、90中,然后去除或展开或铺开并放在设备80、90的前端的平的工作面上。在设备80、90的前部的虚拟输入设备50的位置可是OS1能发射包围虚拟输入设备的扇形射束30以及OS2能检测对象,例如用户手指或光标等等与覆盖在虚拟输入设备50中的任何感兴趣区的扇形射束中的位置的交点110。
在图5B中,OS2将不检测反射的光能直到对象120R与扇形射束130相交为止,因此,将反射(130)由OS1发射的一些光能并将由OS2检测。相对于图1A中所示的系统的(x,z)坐标,交叉点110约为位置(13,5)。参考图4,将理解到键盘布局表250将具有至少一条用于虚拟输入设备50上定义的每个虚拟键,如“1”、“2”,...,“Q”、“W”...“SHIFT”的记录。最好通过单元70执行与参考图5A描述的类似的记录搜索过程并能识别在触摸点110下的相关虚拟键。在图5B中,相关键是“1”,在显示器150上显示的字母“1”作为正由用户的手120R(或通过铁笔)部分输入到移动电话0、90中的e-mail消息正文140部分。与使用移动电话键盘费力地输入消息相比,使用虚拟键盘50将提高快速将消息盲打到移动电话80、90中的能力。
在图5C中,示出了系统10的实施例,其中工作间40是垂直墙,可能在商店或商场中,以及虚拟输入设备也是垂直放置。在该实施例中,所示的虚拟输入设备50具有几个图标和/或字320,当由用户的手120,例如在触摸点110上触摸时,将使适当的文本或/或图形图象140出现在伴随设备80、90中的显示器150上。在所示的例子中,图标320可表示商店中的位置或部门,以及响应图标区的用户触摸,显示器150将交互式地提供另外的信息。在商场中,各种图标可表示整个商店或部分或商店内的区域等等。最好如参考图3A和3B的实施例所述,执行诸如110的触摸点的检测和定位。最好,系统10内的处理器单元70执行存储在或下载到处理器单元70中的软件以确定已经触摸过虚拟输入设备50的什么图标或文本部分,以及应当将什么命令和/或数据传送到主机系统80、90中。
在图5C的实施例中,如果虚拟输入设备50适用于频繁改变,例如,可能是饭店中的菜单,其中显示器150可提供详细的信息如卡路里、调味器含量等等,设备50可是从墙40内向后凸出。理解到如果各个图标320的布局和位置改变,存储在系统10的单元70内的映射信息也将改变。快速改变虚拟输入设备的属性以及内容而不需要锁定为在固定的位置中具有固定大小的图标的能力非常有用。如果需要的话,在设备50上可真正固定一些图标的大小和位置,它们的通过用户触摸可用来选择重新映射在输入设备50上显示的东西以及通过单元70内的软件来映射。应当理解除简单地显示可包括广告的信息外,伴随设备80、90可用来向用户发行宣传性赠券330。
现在转到图6,在某种程度上,根据系统10是结构光系统还是无源光系统,由系统确定登记触摸事件以及定位其位置的方式。如前面所提到的,在结构光系统中,OS1可是线发生激光系统,以及在无源光系统中,OS1可是数字摄像机。每个系统定义平面30,当与120R的对象相交时,平面30将定义以后将确定其(x,z)坐标的触摸事件。只要确定虚拟触摸的(x,z)坐标,本发明能确定使用该系统,该个人打算什么输入或命令。这种输入或命令可传递到伴随设备,该设备实际上也可嵌入本发明。
如果系统10是无源光系统,当手指尖的轮廓出现在选定的OS1,数字摄像机的帧行中时,登记触摸事件。当在OS1中检测到触摸时,通过OS2中相应的对象尖端(例如,120R)的象素位置确定触摸的(x,z)平面30位置。如图6所示,从摄像机OS1到触摸点的范围或距离是来自象素帧的“近”端的象素的数量的仿射函数。
如所提到的,在结构光实施例中,OS1将通常是激光线发生器,以及OS2将为主要对由OS1发射的光能的波长敏感的摄像机。如所提到的,这可通过将窄波段光过滤器安装在OS2上以便仅与由OS1发射的波长一致的波长能通过来实现。另外,可将OS2理解成包括与OS1的脉冲输出同步打开和关闭的遮光器,例如,OS2能仅在OS1发射光能时察看光能。在结构光系统的实施例中,OS2最好将仅检测与平面30相关的对象并因此反射由OS1发射的能源。
在上述情况下,由系统10执行触觉检测和距离计算。因此,当对象的轮廓如手指尖120R出现在OS2的察看范围内时,记录触摸事件。如在上述例子中,可按来自象素帧的“近”端的象素的数量的仿射函数计算距离。
现在将给出由本发明执行的图4中的分析步骤的另一个例子。假定虚拟输入设备5O是键盘,如图1A中所述,以及希望系统10输出由至少与用户在虚拟键盘50上“触摸”过的虚拟键对应的扫描码组成的信息。在图1A和图2A中,假定上面部分(例如,具有虚拟键“ESC”、“F1”、“F2”等等的行)与光学系统OS1 20相距约20cm。假定摄像机OS2 60安装在PDA或高约10cm的其他设备80上,以及以相对于平面30的已知角α1=120°来放置。同时假定摄像机OS2 60具有焦距为4mm的镜头,以及按480行和640列排列的摄像机传感器。
按照惯例,将虚拟键盘50的左上角的Z坐标设置为x=0以及z=0,例如(0,0)。将图象中的点映射到虚拟设备上的点的单应性取决于摄像机OS2 60的倾斜。用于上述结构的示例性单应性矩阵如下:
上述矩阵最好在校准过程期间仅需要确定一次,如本文别外所述。
现在参考图1A和图7,假定用户120L触摸与字母“T”一致的虚拟键盘50的区域,字母“T”可印刷在衬底上以引导用户手指或可是可能由系统10投影的虚拟输入设备的图象部分。使用如上定义的坐标系统,键“T”可假定为位于水平坐标Xmin=10.5以及Xmax=12.4cm之间以及位于垂直坐标Zmin=1.9和Zmax=3.8cm之间,如图7所示。
现在参考图6,在用户手指120L(或铁笔)与传感器OS1 20的平面相交前,后者检测到没有光,以及察看由黑色象素组成的图象,如图底部处的晕影(vignette)340所示。然而,只要用户-对象与光平面30相交,相交事件或界面变为对OS1 20来说可视。OS1 20现在产生与在图6的底部晕影350中所述的类似的图象。当用户对象(如手指120L)的向下移动尖端110到达表面40,手指变得更可视。现在可通过例如单元70使用边缘检测来确定手指轮廓。这种确定在图6的底部描述为“触摸”事件晕影360。然后图4中的触摸检测模块220确定用户对象已经触摸过表面40,并将该发生的事件通知尖端检测模块230。
如图1中所看到的,在虚拟键盘50的第二行中找到虚拟“T”键,因此相当接近于传感器0S1 20。在图6中,该位置与位置110′中的手指尖一致。如图6中进一步所示,在光学系统O82 60的传感器上的手指尖位置110′的底部投影相对接近于图象的顶部。因此产生的手指尖图象的边缘与在图6的顶部的晕影370中所示的类似。在晕影370中,所示的两个灰色方形表示手指尖的底部边缘象素。
使用户代替击非常接近于虚拟键盘50的底部的空格键或一些其他键,即,更远离传感器OS1 20,由图6中的手指尖位置110所述的位置将出现。将虚拟键盘上相对远的位置映射到更接近于图象的底部的象素,以及将出现与\在图6的顶部的晕影380中勾画出的类似的边缘图象。中间虚拟键接触情况将产生与图6的顶部的晕影390所述的非常类似的边缘图象。
在上述例子中,其中按虚拟键“T”,图4中的尖端检测模块230运行边缘检测算法,从而找出表示将在图象行65和列492处接触的概括区域的“模糊点”的底部中心。单应的图象坐标矢量p,假定由以下形成:
然后将单应图象坐标矢量p乘以单应矩阵H以得出在虚拟键盘的基准帧中用户手指尖的坐标P。
因此确定用户-对象或手指120L已经在具有坐标x=11.53以及z=2.49cm的位置点触摸过虚拟键盘50。图4中的键盘识别模块260在键盘布局中搜索a键以便xmin≤11.53<xmax以及ymin≤2.49<ymax。
虚拟“T”键满足这些条件,因为10.5<11.53<12.4并且1.9<2.49<3.8。参考图4,因此虚拟识别模块60确定用户对象正触摸虚拟键盘50上的虚拟键“T”,并通知变换模块270发出了该事件。
该事件不必是击键。例如,用户对象或手指可以前接触过“T”键并在此后保持该键接触。在这种情况下,不应当将击键事件传送给在伴随设备80或90上运行的应用程序280。
键变换模块270最好存储每个键固有的释放状态(up-state)或按下状态(down-state)。该模块确定在每帧处任何键是否已经改变过状态。在上述例子中,如果发现键“T”处于当前帧中的按下状态中且处于在前帧中的释放状态中,变换模块270将KEYCODE消息发送给应用280。KEYCODE码将包括“KEY DOWN”事件标识符以及标识“T”键的“KEY ID”标记,从而通知应用程序280“T”键正好已经由用户对象“按压”过。如果发现“T”键在在前帧期间已经处于按下状态中,KEYCODE将包括“KEY HELD”事件标识符以及与“T”键有关的“KEY ID”。将在其中键处于按下状态的每个帧(除第一帧外)处的“KEY HELD”事件将应用程序280从必须保持有关键的任何状态解脱出来。只要发现“T”键在当前帧中处理释放状态以及在在前帧中处于按下状态,变换模块270发送KEYCODE以及“KEY UP”事件标识符以及识别“T”键的“KEY ID”标记,通知应用程序280“T”键刚好由用户对象“释放”。
从上文,将意识到满足帧图象仅由用户对象的尖端例如手指尖组成。本发明的各个实施例小于全部三维图象信息,三维图象信息是从虚拟输入或虚拟传送设备上稍微定义的相对窄的容积内采样的。能相对便宜地制作实现这些实施例的系统并由自带的电池源操作。实际上,系统能构造在通用设备如PDAs、移动电话等等中以快速由用户输入或传送信息。如所提到的,在有源光实施例中,来自环境光的不希望的效果可通过选择波长、通过使摄像机和光源同步、通过采集并减去表示背景噪声的图象的信号处理技术来降低。
在不脱离由下述权利要求书定义的本发明的主题和精神的情况下,可对公开的实施例做出修改和变更。