本发明的目的就是针对现有触摸屏或者电子白板所使用的各种定位***和方法的缺陷,公开一种综合成本低、适用性广的光电图像传感的方式,实现触摸物或者手写笔的位置坐标检测的定位***和方法,使其适用于多种通用物体作为定位标的物,并容易调整而通用于多种触摸或者手写尺寸。
为了实现上述发明目的,本发明采用了如下的技术方案:
整个光电检测定位***由光学元件、光电传感器阵列、光电信号处理电路、微控制器***等构成;其中光电传感器阵列至少有两套,分别安装在显示表面的两个角上;每套传感器中至少包含有一个像素尺寸已知的线阵,其中包含有内置或者外置的用于控制阵列中每个像素单元的选择和信号输出的伺服电路,其信号输出端与光电信号处理电路的输入端耦合连接;这里的光学元件,是与光电传感器阵列的感光面的距离为已知数的凸透镜或者小孔;与各自对应的光电传感器阵列组合而构成了光电传感***,其位置在参照坐标系中是已知的;光电信号处理电路包含有A/D变换电路,其输入端与光电传感器阵列的输出端耦合连接,其输出端与所述微控制器***的I/O端口相连接;同时该微控制器***通过控制线,分别与上述传感器阵列的控制输入端、A/D变换器的控制输入端连接;并且该微控制器***还有一个与使用该***的上位计算机之间进行数据交换的通信端口。
并且,在所述微控制器***及其使用该***的上位计算机的非易失性存储器内,存储有一组***控制代码、一组图像处理代码、一组数值计算代码、一组通信控制代码,以及上述各个已知数;这里***控制代码存储与所述的微控制器***的之内,用于控制光电传感器阵列和A/D变换器协调工作;图像处理代码存储在所述的微控制器***之内,包含有一段初始化数据存储代码,用于得到并存储自检阶段从光电传感器的每个有效单元得到的背景信号数据,一段数据比较代码,用于将当前从上述光电传感器阵列中每个有效单元的输出的信号数据,与所述存储在数据存储器中的相对应的背景数据相比较,从而得到是否有触摸物和在有触摸物时,触摸物的在光电传感器上形成的影像的轮廓数据,以及根据已经得到的触摸物的轮廓数据和光电传感器阵列中每个有效像素的实际尺寸,得到所述影像的几何中心点;数值计算代码存储在所述的微控制器***之内或者所述的上位计算机之内,包含有一段直线方程生成代码,用于根据前述的光学元件与所述光电传感器阵列的感光面的距离和已经得到的影像的几何中心点的数据,计算得到由光学元件的中心和触摸物的几何中心所确定的直线在参照坐标系中的方程;一段坐标值计算代码,用于根据从至少两个所述的光电传感***得到的直线方程,计算得到触摸物在参照坐标系内的坐标;所述通信控制代码,存储在所述的微控制器***之内,用于控制所述的通信端口,接收上位计算机的控制指令,并将本传感检测***处理、计算得到的中间数据,或者最终得到的触摸物在参考坐标系内的位置坐标数据,通过通信端口传送到上位计算机。
这个***可以由一个微控制器***控制多套光电传感***、A/D变换器,通过模拟开关或者数据锁存器切换各个光电传感***与微控制器之间的数据传输渠道来构成,也可以由多个子***构成。如果由多个子***构成,这时每个子***都包含至少一套光电传感***、一个A/D变换器和一个微控制器子***;各个微控制器子***之间通过内部通信接口相连接;这样在各个微控制器子***内的非易失性存储器中,都还存储有控制所述的内部通信的代码;并且选择一个包含有所述与上位机进行数据交换的通信端口,以及所述的通信控制代码的子***作为主模块,统一与上位计算机进行通信联系并传输数据。当然,也可以是上述两种基本结构的混合体。
这套按照上述结构构建的光电检测定位***,采用了如下的方法来实现触摸物为之坐标的检测,现说明如下:
(A).微控制器启动后,通过控制线控制光电传感器阵列和A/D变换器,逐一读取在没有触摸物的情况下,所述每个光电传感阵列中每个有效像素的输出的当前值,作为背景数据存储起来,构成背景数据库;
(B).重复步骤(A),再次得到每套光电传感阵列中每个有效像素的输出的当前值,并调用背景数据库中相对应的像素的背景值,与现在得到的当前值相比较,如果两个数值之间的差值不超出预先设定的范围,则放弃当前值,继续读取并比较下一个像素当前值与背景值之差;如果所述差值超出了预先设定的范围,则另外存储该像素的当前值,而后继续读取并比较下一个像素当前值与背景值之差,直到最后一个像素;并且被另外存储的各个像素的当前值构成了目标数据库。
(C).执行图像处理代码,直接或者通过所述通信端口调用目标数据库中的数据进行分析计算,得到目标数据的图像轮廓,进而得到目标即触摸物在所述光电传感阵列上图像的中心点所在的像素及其在传感阵列上的位置;
(D).执行数值计算代码,根据所述图像中心点所在像素的实际位置和光学元件与光电传感器阵列感光面之间的距离值,计算得到由该被选定的光电传感***中光学元件的中心和触摸物的几何中心所确定的直线在参照坐标系中的方程;
(E).联合解析每套光电传感***完成了上述步骤的操作后得到直线方程,得到各条直线之间的焦点,即触摸物在所述参照坐标系中的坐标值;
(F).启动通信端口,将上述坐标值传送到上位计算机,然后程序跳转到步骤(B)开始下一个循环。
上述的各个步骤,可以全部在微控制器内完成,最后只是将触摸标的物在参考坐标系内的坐标值传输到使用这套***的上位计算机内,也可以充分利用上位计算机强大的计算功能,将部分计算任务交给上位机来完成,以缩短微控制器的处理周期,提高***的响应速度。具体情况需要根据要求的***性能和微控制器的处理能力来决定是否将部分数据处理任务交给上位机来完成,或者将哪些部分交给上位机。
通过上面对技术方案的描述,可以看到本发明有如下的优点。首先,由于***主要使用成品的图像传感元件和微控制器构成,所以大大简化了产品的生产工艺,并且现在这些成品元器件的成本已经非常低廉,因此大幅度地降低了产品的生产和维护成本;其次,在一定的尺寸范围内,触摸检测的尺寸是由光电传感***在参照坐标系内的安装位置决定的,因此可以通过相关坐标值的设定来设定检测范围,非常容易在不同尺寸的显示器或者白板上通用;第三,由于***是通过图像传感的方式来确定触摸或者手写标的物的位置,因此只要求该触摸物能够一定程度地反射光线即可,因而能够检测手指和绝大多数常用的书写、指示工具的位置,具有非常优秀的适用性。
下面根据附图,结合具体的实施结构来详细说明本发明的技术方案。
***中光电图像传感器在被检测表面的安装结构如图1所示。这里所说的被检测表面101,可以是一个显示器的显表面,也可以是一块手写板或者电子白板的表面。在这个被检测表面的两个角上,安装有两套分别由光学元件104、光电传感器阵列102和光学元件105、光电传感器阵列103构成的光电图像检测***。这里光学元件104、光电传感器阵列102和光学元件105、光电传感器阵列103在参照坐标系XOY中的坐标是已知的,因此光学元件与传感器阵列的感光面之间的距离也是已知的。这里,光电传感器的类型没有限制,可以选用CCD、CMOS、CIS类型的光电传感器,一般选择线阵结构的就可以了。但是也可以使用面阵结构的光电传感器,这时只需选择面阵中的一条线阵用于传感。在此称这些用于传感的所必需的像素为有效像素。
如果如图中所示,假设线阵图象传感器102、103的轴向与参照坐标平面XOY平行,且其法线106、107都与X轴和Y轴都成45°角,那么只要得到通过触摸标的物108中心的和两个光学元件中心点直线109和110分别与X轴的夹角α和β,就可以得到这两条支线的方程,通过联立求解这两个方程,即可以得到触摸标的物(触摸物)在参照坐标系内的坐标值。本发明就是利用触摸物反射的光线来替代图中的直线109、110,从而通过计算而得到触摸物108的在参照坐标系XOY内的坐标P(x,y)。
图2和图3就比较清楚地揭示了图1中各个部分之间的几何关系。由于线阵图象传感器102、103都与坐标轴X和Y成45°角,因此可以很容易得到直线109、110的斜率,进而得到直线方程。下面简要分析其数学模型。
在图2中,设置光学元件的中心在参考坐标系XOY中的原点(0,0),从触摸物反射的、延伸通过触摸物横截面的中心和透镜中心的光线109,与坐标系X轴的夹角为α,与线阵的交点坐标为B0(x’,y’),并且设置光学元件线阵传感器感光面之间的距离为D;通过光学元件中心的线阵的法线106与线阵相交于线阵的中心点A0,同时规定A0以为中心点0,以图中规定的、指向“+”符号的箭头方向的距离为正,则B0与A0之间的距离d0,以及上述各个数值与夹角α之间的关系有:
因此,可以得到通过点(0,0)和触摸物的中心(x,y)的直线方程,为
同理对于图3,设置透镜中心在参考坐标系中的坐标为(a,0),其他符号或者数值依然按照图2的规则进行设定,这样对于反射光线110,其与参照坐标系X轴的夹角β与D与da之间的关系为:
因此,可以得到通过点(a,0)和触摸物的中心的直线方程,为
联立求解由上面两个直线方程构成的方程组
即可得到触摸标的物P(x,y)在参照坐标系内的坐标值。
虽然方程组(1)是在上述的设置中得到的,但是对于其他的设置方式或者符号***,依然可以得到相同的结果。由于这部分内容属于纯粹的数学推导,其所涉及的数学知识均包含在初等数学的内容之内,因此在这里就不详细列举并说明了。
从上面的数学推导可以看到,由于光电传感器阵列与坐标轴的夹角、光学元件与光电传感器阵列之间的距离等数据都是人为设定的,因此是已知或可知的,所以得到直线方程进而求解得到触摸物位置坐标的关键,是得到上述两条“光线”在传感器阵列上成像的位置,即d0和da的值。本发明的软硬件***就是为了得到这个值而设定的。如图4所示,建立直角坐标系VOP,纵轴V是各个像素单元输出的电压,横轴P表示像素单元的排列方向,中点设为A0,粗黑线403表示该传感线阵及其长度。如果能够得到在被检测表面内没有触摸物时,光电传感器输出的背景信号401,然后再得到触摸标的物时光电传感器输出的叠加在背景信号上的实时信号402,那么比较这两个信号,就能够得到触摸物的图像。对于一种特定型号的光电传感线阵,其相邻像素单元之间的距离是一个可知的固定值,这样再根据图像边缘的位置求出图像中心的位置B0,和就能够得到任何一个线阵上d0和da的值,进而得到直线的斜率和方程。从理论上来说,本发明只需要两套光电传感(成像)***就可以实现发明的目的,而且在实际应用中,也完全能够达到一般的精度要求;但是对于高精度的要求,最好还是增加一至二套光电传感***,安装在被检测表面另外的一个或者两个角上。因为在图1中靠近参照坐标系X附近的位置,在X方向上的检测精度会降低。图5就是根据实现上述较高精度要求而构建的硬件***结构图,另外的光电传感***如图1中111所示,安装在被检测表面其余的角上。
在图5中,光电传感***依然由光学元件104和光电传感阵列102构成。这里光学元件可以是一个凸透镜或者一个凸透镜组,也可以使用一个小孔,利用针孔成像的原理替代凸透镜,只是这样灵敏度低一些;而光电传感阵列102不仅仅包含有光电敏感像素单元,还应当包含有内置或者外置的伺服电路,用于控制阵列中每个像素单元的选择和信号的输出。对于现有的成品光电传感阵列,这个伺服电路基本上都与传感阵列集成为一个不可拆分的单个元件,因此一般都不需要另外附加伺服电路。即使万一需要,光电传感器件的数据或者使用手册上都有技术规范,故在此也无需说明。光电传感阵列的信号输出端与光电信号处理电路501的输入端相耦合连接,该光电信号处理电路的核心是一个A/D变换电路,可能还需要根据光电传感阵列所输出的电信号的特性,增加信号放大器、取样保持电路等其他辅助调理电路。A/D变换器的输出端与一个微控制器***的502的I/O端口相连接;同时该微控制器***通过控制线504,分别与上述传感器阵列的控制输入端、A/D变换器的控制输入端连接,这样为控制器就能同步控制光电传感阵列和A/D变换器正常工作。对于不同型号的光电传感阵列和A/D变换电路;这些连接的方式是不相同的,只能根据元器件的技术手册进行个案设计,在此也无法给出统一的结构形式。在这种结构下,每个微控制器***只控制一套传感***和A/D变换器,因此整个***至少需要相同结构的两套子***构成,如图5中的虚线框内包含的子***模块505;如果为提高精度再增加传感器的数量,则还要增加更多的子***,如图中另一个虚线框所示的模块507等。这时,整个***就要靠内部通信接口506,在微控制器的内部非易失性存储器内存储的内部通信程序的控制下,来互相连接以实现协调的同步工作的目的。在这些子***中,可以任选或者指定一个子***为主模块,如图中被选定的以微控制器502为核心构建的子***模块,在该模块上开辟一个与使用该***的上位计算机之间进行数据交换的通用通信端口503,如标准的COM口、USB接口等。与这个结构相配合,在这个主模块内部的非易失性存储器内,还要存储比其他模块更多的可执行程序,以完成与上位计算机通信、更多的数值计算等任务。
图6是本***的另外两种结构形式的一种混合结构。一内部通信接口506位界线,上半部分是一种利用多路模拟开关601以分时复用的方式,将多套光电传感***依次连接到A/D变换器的输入端,其他部分与图5相同。这种结构的连接方式是将各套光电传感***的信号输出端分别连接到多路模拟开关的602、603等各个静触点上,而动触点604则与A/D变换器的输入端相联接。这时,微控制器的控制线605还需要与模拟开关的控制输入端相联接,控制其与光电传感***和A/D变换器同步协调工作。在内部通信接口506的另一端,即图纸的下方,则是用了另外的一种结构构成多路复用***。这里A/D变换器606、607的数据输出端应该带是3态输出,通过控制线605内的片选信号,将微控制器与被选择正在工作的光电传感***和A/D变换器相联通,同步控制模块内的各个部分协调工作。当然,整个***可以在图中的两种形式中选择一种结构来构建,也可以正如图中所示意的那样,由混合结构构成。
图7给出了图5或者图6所示***实现本发明目的的工作流程图。在这里之所以称为工作流程图而没有称为程序流程图,是因为这个工作流程不一定是由一个程序完成的,也不一定完全在***的微控制器内完成的。这是因为通过***与使用***的上位计算机之间的通用通信接口,可以将按照该流程图工作而得到的中间值传送到上位计算机中,充分利用上位计算机强的数据处理能力来完成部分如数值计算等数据处理工作,从而缩短本发明***的检测周期,提高反应速度。因此,实现上述工作流程的程序代码,既可以全部存储在微控制器***的非易失性存储器内,又可以一部分存储在微控制器***的非易失性存储器内,另一部分存储在上位计算机的非易失性存储器内,根据***所使用的微控制器的数据处理能力和要求的响应速度等条件综合考虑而确定具体的技术方案。
但是由于微控制器必须完成一些最基本的工作,因此有些程序代码必须存储在微控制器***内,这些代码包括***控制代码,用于控制光电传感器阵列和A/D变换器协调工作;图像处理代码,其中包含有一段初始化数据存储代码,用于得到并存储自检阶段从光电传感器的每个有效单元得到的背景信号数据,还包含有一段数据比较代码,用于将当前从上述光电传感器阵列中每个有效单元的输出的信号数据,与所述存储在数据存储器中的相对应的背景数据相比较,从而得到是否有触摸物和在有触摸物时,触摸物的在光电传感器上形成的影像的轮廓数据,并根据已经得到的触摸物的轮廓数据和光电传感器阵列中每个有效像素的实际尺寸,得到所述影像的几何中心点。当然这部分代码也可以全部或者部分存储在上位计算机中,由上位计算机来完成相同的工作,但是由于这部分数据处理的任务量不是很大,一般微控制器能够在很短的时间内完成,因此可以交给微控制器来处理。还有必须存储在微控制器内的是通信控制代码,这部分代码用于控制所述的通信端口,接收上位计算机的控制指令,并将本传感检测***处理、计算得到的中间数据,或者最终得到的触摸物在参考坐标系内的位置坐标数据,通过通信端口传送到上位计算机。
而数值计算代码则可以存储在所述的微控制器***之内,或者存储在上位计算机之内。这部分代码包含有一段直线方程生成代码,用于根据前述的光学元件与所述光电传感器阵列的感光面的距离和已经得到的影像的几何中心点的数据,计算得到由光学元件的中心和触摸物的几何中心所确定的直线在参照坐标系中的方程;一段坐标值计算代码,用于根据从至少两个所述的光电传感***得到的直线方程,计算得到触摸物在参照坐标系内的坐标。
下面接合图7来说明***的工作流程。事实上,图7给出的也是全部操作均在微控制器***内执行时的主程序流程。***启动后,第一个步骤701执行自检、内存清理等操作,完成后开始步骤702,获取该字模块内各个光电传感***的背景信号的数据,存储到缓冲区内的背景数据库703中。下面开始的步骤,就是以帧为单位检测每套光电传感***内每个有效像素单元的当前数据,完成获取目标数据的操作704,构建目标数据库706。每扫过一个像素单元,帧标志判断步骤705判断一次帧结束标志位的状态,如果该标志位为0,则返回扫描采样步骤704;当一个子***模块完成了一次对全部有效像素单元,即一帧的扫描输出以后,寄存器内的帧结束标志被置1,判断步骤705则控制程序进入下一个步骤。随后的步骤是简单的图像处理操作:目标识别步骤707调用目标数据库706,根据706内存储的像素单元的输出值,判断得到触摸物在光电传感阵列上成像的位置,得到这个图像的轮廓;更进一步,取影像轮廓的中心点为触摸物所反射光线的“投影”点,即延长线通过触摸物中心的反射光线通过光学元件后,与光电传感阵列的交点。这样,再根据已知条件,通过步骤708就能够得到d0或者da的值,利用前面得到的几何关系,得到前述的直线方程。在实际应用中,如果光学元件由透镜或透镜组构成,通常都会产生一定的、可预制的畸变,这时如果要得到较高的精度,就需要做适当的补偿。由于这种畸变是可知的,因此可以参考相关的光学原理,通过查表、实时计算等方法来补偿。然后,执行操作709,判断本模块是否是主模块,如果是主模块,则执行步骤711,综合本模块得到的和从其他子模块通过内部通信接口传输的、由其他***得到的另外的直线方程,以公式(1)的形式构建联立方程组,并求解得到触摸(标的)物在参照坐标系XOY中的坐标值,最后执行通信步骤712,将上述坐标值通过通用通信接口503传送到上位机,程序返回到步骤704,准备下一个循环的开始。如果本模块不是主模块,则执行步骤710,启动内部通信功能,将本模块得到的直线方程通过内部通信接口506传送到设定的主模块,然后返回到步骤704,准备下一个循环的开始。
如果将图7看作***的工作流程图,则需要根据本发明的***的执行内容和上位计算机所执行的工作内容,在步骤707与708之间,或者708与711之间,***一个判断步骤,判断是否有将***得到的上述相关数据传送到上位计算机的执行代码。如果有这种执行代码,则将该判断步骤之前所得到的、有关触摸标的物图像及其初步解析的结果,通过通用通信接口503传送到上位计算机,然后程序返回到步骤704准备开始下一个循环;并且该判断步骤之后的其他操作,就转移到上位计算机内执行;同时,图7种判断是否是主模块的步骤709,也应该转移到所述向上位计算机传输数据以前,以保证各个子模块所得到的数据都能传送到上位计算机,使得上位机能够按照图7其余步骤完成全部的数据处理操作。当然,有些基本数据,如开机后自动监测或者因人为干涉而检测得到的背景信号数据、前面涉及的距离D、线阵内每个像素单元的实际尺寸等,只需要传送一次即可。
图8是实现图7中步骤704的一种程序流程图,即主工作程序中的一个子程序。这里采用了定时中断的方式来启动目标数据采集的操作。当微控制器响应了定时器发出的中断请求801后,程序跳转到该子程序,首先启动像素单元的计数器802。由于主程序在初始化阶段已经将像元计数器清零,所以这时为了选择光电传感阵列中的第一个像素单元,需要将计数器加1,然后通过前面说明的控制总线控制光电传感***中的伺服电路,选择第一个像元将其输出的光电信号送到输出到A/D变换器的输入端,然后再通过控制总线执A/D变换操作803,随后执行通过I/O读取该像元经A/D变换后的实时数据的操作804。被读取得到的该像素单元被送到数据比较器内,通过数据比较操作805后,如果这个像素单元所输出的数据在设定的误差设定值之内,与背景数据库中该像元的背景数据相同,则认为该像元上没有触摸物的图像,这时将该数据抛弃不作处理;如果这个像素单元所输出的数据与背景数据库707中该元素的数据在一定的误差设定值之外,则认为可能已经有触摸物的反射光线已经在该像素单元上,而将这个数据送到目标数据库704。微控制器然后进入下一个判断步骤806,判断像元计数器是否已经计数到顶。如果像元计数器已经倒顶,则执行步骤807,将像元计数器清零,并在指定的寄存器单元内置帧结束标志1,然后执行中断返回步骤807,将像素计数器清零,为下一个读取操作做准备,然后退出定时中断,返回到主程序之中;如果该像元计数器没有到顶,则说明还有像素单元未被***采集,则直接执行中断返回步骤808,结束中断,返回到主程序之中。
由于光电图像传感器所接收的是触摸标的物所的反射光线,因此通过镜头的光通量是决定能否清晰成像的重要因素。尤其当使用小孔成像的方式构建光学元件时,这个问题更为突出。解决的方案有两个:一个是选用灵敏度更高的光电传感器,缺点是当周围环境比较暗时,依然难以分辨背景和触摸物;另一个是增加照明手段。为此,本发明还设计了一个辅助照明的技术方案供选择,供在必要时选用。这里公布了两种技术方案,如图9和图10所示。在图9中,在被检测表面的边缘上,安装有用于辅助照明的发光二极管902。图中901和902是由光电传感阵列和光学元件构成的光电图像传感***。第二种如图10所示,是一种光路集成结构的辅助照明方案。如图所示,在光电传感***内的光电传感器阵列的感光面与光学元件之间的空间内,安装有一个截面为直角的三棱镜;该三棱镜的一个直角面与光电传感器阵列的感光面相平行,另一个直角面与其感光面垂直,并且该棱镜的轴线可以与光电传感器线阵的延伸方向相平行,如图中三棱镜的轴线与光电传感器阵列102的像素的排列延伸方向相平行,也可以与像素的排列延伸方向相垂直。照明用的发光二极管安装在三棱镜与感光面垂直的直角面一侧,其光轴方向与所述直角面相垂直。辅助照明用的二极管最好使用红外发光二极管,以免对使用者产生干扰,而一般光电感光元件都对红外线敏感。并且,如果使用红外光照明,还可以在光学元件的表面安装上红外滤光片,或者镀上红外滤光膜,这样就可以避免周围直射的或者物体所反射的可见光对检测产生的干扰。