用于对光源传递的信息进行解码的方法和装置
技术领域
本发明属于光信息技术领域,更具体地涉及一种用于对光源传递的信息进行解码的方法。
背景技术
条形码和二维码已经被广泛采用来对信息进行编码。当用特定设备或软件扫描这些条形码和二维码时,相应的信息就会被识别出来。然而,条形码和二维码的识别距离很受限制。例如,对于二维码而言,当用手机摄像头对其进行扫描时,该手机通常必须置于一个比较近的距离内,该距离通常只是二维码的宽度的15倍左右。因此,对于远距离识别(例如相当于二维码宽度的200倍的距离),条形码和二维码通常不能实现,或者必须定制非常大的条形码和二维码,但这会带来成本的提升,并且在许多情形下由于其他各种限制是不可能实现的。
CMOS成像器件是目前广泛采用的成像器件,其如图1所示,包括像敏单元(也称为图像传感器)阵列以及一些其他元件。图像传感器阵列可以是光电二极管阵列,每一个图像传感器对应于一个像素。每一列图像传感器都对应于一个列放大器,列放大器的输出信号之后被送往A/D转换器(ADC)进行模数转换,然后通过接口电路输出。对于图像传感器阵列中的任一图像传感器,在曝光开始时现将其清零,然后等待曝光时间过后,将信号值读出。CMOS成像器件通常采用滚动快门成像方式。在CMOS成像器件中,数据的读出是串行的,所以清零/曝光/读出也只能以类似于流水线的方式逐行顺序进行,并在图像传感器阵列的所有行都处理完成后将其合成为一帧图像。因此,整个CMOS图像传感器阵列实际上是逐行曝光的(在某些情况下CMOS图像传感器阵列也可能采用每次多行一起曝光的方式),这导致了各个行之间存在小的时延。由于该小的时延,当光源以一定频率闪动时,会在CMOS成像器件拍摄的图像上呈现出一些不期望的条纹,影响到拍摄效果。
人们已经发现了理论上可以利用CMOS成像器件拍摄的图像上的条纹来传递信息(类似于条形码那样),并试图通过条纹来传递尽可能多的信息,但是这通常需要使得CMOS成像器件与光源尽量接近,并最好始终处于大致固定的距离处,并且还需要精细的时间同步、对各个条纹的边界的精确识别、对各个条纹的宽度的精确检测等等,因此,在实践中其稳定性和可靠性并不令人满意,也未获得广泛使用。
发明内容
本发明的一个方面涉及一种用于对光源传递的信息进行解码的方法,所述光源被配置为能够工作于至少两种模式,其中,在不同的模式下,当通过CMOS图像传感器对该光源拍摄时所获得的该光源的图像上呈现出不同的预定外观,以表示不同的数据,所述方法包括:
通过CMOS成像器件对所述光源进行连续拍摄;
获取所述光源的若干帧连续图像;
针对所述光源的每一帧图像,分别提取出该图像的起始部分和结束部分;
对提取出的所述起始部分和结束部分进行分析,以确定每个起始部分和结束部分表示的数据;以及
对每一帧图像的结束部分表示的数据和紧随其后的下一帧图像的起始部分表示的数据执行数据去除操作,以确定出所述光源传递的数据序列。
优选地,其中,所述起始部分是所述光源的每一帧图像的最早成像的一部分,所述结束部分是所述光源的每一帧图像的最晚成像的一部分。
优选地,其中,所述起始部分和所述结束部分的长度都小于等于所述光源的每一帧图像的总长度的1/2。
优选地,其中,所述外观涉及图案、颜色或者它们的组合。
优选地,其中,所述不同的预定外观包括至少一种预定条纹。
优选地,其中,所述对提取出的所述起始部分和结束部分进行分析以确定每个起始部分和结束部分表示的数据包括:
分析每个起始部分和结束部分的外观;以及
基于所述外观来确定每个起始部分和结束部分表示的数据,其中,如果某个起始部分或结束部分包含不同的预定外观的组合,则认为该起始部分或结束部分表示的数据为“不确定”。
优选地,其中,所述对每一帧图像的结束部分表示的数据和紧随其后的下一帧图像的起始部分表示的数据执行数据去除操作包括:
如果每一帧图像的结束部分表示的数据与紧随其后的下一帧图像的起始部分表示的数据相同,则保留其中之一;以及
如果每一帧图像的结束部分表示的数据与紧随其后的下一帧图像的起始部分表示的数据之一为“不确定”,则保留另一数据。
优选地,上述方法还包括:如果所述光源的第一帧图像的起始部分或所述光源的最后一帧图像的结束部分表示的数据为“不确定”,则删除该数据;否则,保留该数据。
优选地,其中,所述CMOS成像器件的帧速率与所述光源的信号频率相等。
优选地,其中,所述CMOS成像器件的扫描行的方向大致垂直于所述光源的长度方向。
本发明的另一个方面涉及一种用于对光源传递的信息进行解码的装置,包括CMOS图像传感器、处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时能够用于实现上述的方法。
本发明的另一个方面涉及一种存储介质,其中存储有计算机程序,所述计算机程序在被执行时能够用于实现上述的方法。
本发明的另一个方面一种用于对光源传递的信息进行解码的装置,所述光源被配置为能够工作于至少两种模式,其中,在不同的模式下,当通过CMOS图像传感器对该光源拍摄时所获得的该光源的图像上呈现出不同的预定外观,以表示不同的数据,所述装置包括:
用于通过CMOS成像器件对所述光源进行连续拍摄的模块;
用于获取所述光源的若干帧连续图像的模块;
用于针对所述光源的每一帧图像分别提取出该图像的起始部分和结束部分的模块;
用于对提取出的所述起始部分和结束部分进行分析以确定每个起始部分和结束部分表示的数据的模块;以及
用于对每一帧图像的结束部分表示的数据和紧随其后的下一帧图像的起始部分表示的数据执行数据去除操作以确定出所述光源传递的数据序列的模块。
附图说明
以下参照附图对本发明的实施例作进一步说明,其中:
图1为CMOS成像器件的示意图;
图2为CMOS成像器件获取图像的方向图;
图3为根据本发明的一个实施例的光源;
图4为根据本发明的另一个实施例的光源;
图5为CMOS成像器件的成像时序图;
图6为CMOS成像器件的另一成像时序图;
图7示出了当光源工作于第一模式时在不同阶段在CMOS成像器件上的成像图;
图8示出了根据本发明的一个实施例当光源工作于第一模式时CMOS成像器件的成像时序图;
图9示出了根据本发明的一个实施例当光源工作于第二模式时CMOS成像器件的成像时序图;
图10示出了根据本发明的另一个实施例当光源工作于第一模式时CMOS成像器件的成像时序图;
图11示出了根据本发明的另一个实施例的用于实现与图8不同的条纹的CMOS成像器件的成像时序图;
图12-13示出了在不同设置下获得的光源的两种有条纹图像;
图14示出了获得的光源的一种无条纹图像;
图15示出了在光源的信号频率与CMOS成像器件的帧速率相等的情况下所获得的光源的五帧连续的图像;
图16中示出了提取图15所示的每一帧图像的起始部分和结束部分的一个实施例;以及
图17中示出了提取图15所示的每一帧图像的起始部分和结束部分的另一个实施例。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进行进一步详细说明。
本发明的一个实施例涉及一种光通信装置,其能够通过发出不同的光来传输不同的信息。该光通信装置在本文中也被称为“光标签”,两者在整个本申请中可以互换使用。光通信装置包括光源和控制器,该控制器被配置为控制所述光源工作于两个或更多个模式,所述两个或更多个模式包括第一模式和第二模式,其中,在所述第一模式下,所述光源发出的光的属性以第一频率变化,以传递第一信息,在所述第二模式下,所述光源发出的光的属性以第二频率变化或者不发生改变,以传递与第一信息不同的第二信息。
光的属性在本申请中指的是CMOS成像器件能够识别的任何一种属性,例如其可以是光的强度、颜色、波长等人眼可感知的属性,也可以是人眼不可感知的其他属性,例如在人眼可见范围外的电磁波长的强度、颜色或波长改变,或者是上述属性的任一组合。因此,光的属性变化可以是单个属性发生变化,也可以是两个或更多个属性的组合发生变化。当选择光的强度作为属性时,可以简单地通过选择开启或关闭光源实现。在下文中为了简单起见,以开启或关闭光源来改变光的属性,但本领域技术人员可以理解,用于改变光的属性的其他方式也是可行的。需要说明的是,在上述第一模式中以第一频率变化的光的属性可以与在上述第二模式中以第二频率变化的光的属性相同或不相同。优选地,在所述第一模式和第二模式中发生变化的光的属性是相同的。
当光源以第一模式或第二模式工作时,可以使用CMOS成像器件或者具有CMOS成像器件的设备(例如手机、平板电脑、智能眼镜等)对光源进行成像,也即,通过滚动快门的方式进行成像。在下文中以手机作为CMOS成像器件为例进行说明,如图2所示。该手机的行扫描方向在图2中示出为垂直方向,但本领域技术人员可以理解,依据底层硬件配置的不同,行扫描方向也可以是水平方向。
光源可以是各种形式的光源,只要其某一可被CMOS成像器件感知的属性能够以不同频率进行变化即可。例如,该光源可以是一个LED灯、由多个LED灯构成的阵列、显示屏幕或者其中的一部分,甚至光的照射区域(例如光在墙壁上的照射区域)也可以作为光源。该光源的形状可以是各种形状,例如圆形、正方形、矩形、条状、L状等。光源中可以包括各种常见的光学器件,例如导光板、柔光板、漫射器等。在一个优选实施例中,光源可以是由多个LED灯构成的二维阵列,该二维阵列的一个维度长于另外一个维度,优选地,两者之间的比例约为6-12:1。例如,该LED灯阵列可以由排成一列的多个LED灯构成。在发光时,该LED灯阵列可以呈现为一个大致为长方形的光源,并由控制器控制该光源的操作。
图3示出了根据本发明的一个实施例的光源。在使用CMOS成像器件对图3所示的光源进行成像时,优选地使图3所示的光源的长边与CMOS成像器件的扫描行的方向(例如,图2所示的手机的行扫描方向)垂直或大致垂直,以在其他条件相同的情况下成像出尽量多的条纹。然而,有时用户并不了解其手机的行扫描方向,为了保证手机在各种姿态下都能够进行识别,并且在竖屏和横屏下都能够达到最大的识别距离,光源可以为多个长方形的组合,例如,如图4所示的L状光源。
在另一实施例中,光源可以不局限于平面光源,而是可以被实现为一个立体光源,例如,一个条状的圆柱形光源、立方体光源、等等。该光源例如可以被放置在广场上、悬置于室内场所(例如餐厅、会议室等)的大致中心位置,从而附近的位于各个方向的用户都可以通过手机拍摄该光源,从而获得该光源所传递的信息。
图5示出了CMOS成像器件的成像时序图,其中的每一行对应于CMOS成像器件的一行传感器。在CMOS成像传感器阵列的每一行进行成像时,主要涉及两个阶段,分别为曝光时间和读出时间。各行的曝光时间有可能发生重叠,但读出时间不会重叠。
需要说明的是,图5中仅示意性地示出了少量的行,在实际的CMOS成像器件中,依赖于分辨率的不同,通常具有上千行传感器。例如,对于1080p分辨率,其具有1920×1080个像素,数字1080表示有1080条扫描行,数字1920表示每行有1920个像素。对于1080p分辨率,每一行的读出时间大致为8.7微秒(即,8.7×10-6秒)。
如果曝光时间过长导致相邻行之间的曝光时间出现大量重叠,则可能在成像时呈现出明显过渡的条纹,例如,在纯黑色像素行与纯白色像素行之间的多条具有不同灰度的像素行。本发明期望能够呈现出尽量清晰的像素行,为此,可以对CMOS成像器件(例如手机)的曝光时间进行设置或调整(例如,通过手机上安装的APP来进行设置或调整),以选择相对较短的曝光时间。在一个优选的实施例中,可以使得曝光时间大致等于或小于每一行的读出时间。以1080p分辨率为例,其每一行的读出时间大致为8.7微秒,在这种情况下,可以考虑将手机的曝光时间调整为大约8.7微秒或更短。图6示出了在这种情况下的CMOS成像器件的成像时序图。在这种情况下,每行的曝光时间基本不发生重叠,或者重叠部分较少,从而可以在成像时获得具有比较清晰的边界的条纹,其更容易被识别出来。需要说明的是,图6仅仅是本发明的一个优选实施例,更长的(例如等于或小于每一行的读出时间的两倍、三倍或四倍等)或更短的曝光时间也是可行的。例如,在本申请的图12和13中所示的有条纹图像的成像过程中,每一行的读出时间大致为8.7微秒,而所设置的每行曝光时长为14微秒。另外,为了呈现出条纹,可将光源的一个周期的时长设置为曝光时长的两倍左右或更长,优选地可以设置为曝光时长的四倍左右或更长。
图7示出了当使用控制器使光源工作于第一模式时在不同阶段在CMOS成像器件上的成像图,在该第一模式下,以一定频率改变光源发出的光的属性,在本例中为开启和关闭光源。
图7的上部示出了在不同阶段的光源的状态变化图,下部示出了在不同阶段该光源在CMOS成像器件上的成像图,其中,CMOS成像器件的行方向为垂直方向,并从左向右扫描。由于CMOS成像器件采集图像是逐行扫描的,因此在拍摄高频闪烁信号时,所获得的一帧图像上与光源的成像位置对应的部分会形成如图7下部所示的条纹,具体地,在时段1,光源开启,在该时段中曝光的最左侧部分的扫描行呈现亮条纹;在时段2,光源关闭,在该时段中曝光的扫描行呈现暗条纹;在时段3,光源开启,在该时段中曝光的扫描行呈现亮条纹;在时段4,光源关闭,在该时段中曝光的扫描行呈现暗条纹。
可以通过设置光源闪烁的频率,或者设置光源每次开启和关闭的时长,来调整出现的条纹的宽度,更长的开启或关闭时间通常对应于更宽的条纹。例如,对于图6所示的情形,如果将光源每次开启和关闭的时长均设置为大致等于CMOS成像器件的每一行的曝光时间(该曝光时间可以通过手机上安装的APP进行设置或者手工设置),则可以在成像时呈现出宽度为仅一个像素的条纹。为了能够实现对光标签的远距离识别,应使条纹越窄越好。但在实践中,由于光线干扰、同步等原因,宽度为仅一个像素的条纹可能不太稳定,或者不太容易识别,因此,为了提高识别的稳定性,优选地实现宽度为两个像素的条纹。例如,对于图6所示的情形,可以通过将光源每次开启或关闭的时长均设置为大致等于CMOS成像器件的每一行的曝光时长的大约2倍,来实现宽度为大约两个像素的条纹,具体如图8所示,其中,图8的上部的信号为光源控制信号,其高电平对应于光源的开启,而低电平对应于光源的关闭。在图8所示的实施例中,将光源控制信号的占空比设置为大约50%,将每一行的曝光时长设置为大致等于每一行的读出时间,但本领域技术人员可以理解,其他设置也是可行的,只要能够呈现出可分辨的条纹即可。为了描述简单起见,图8中使用了光源与CMOS成像器件之间的同步,以使得光源的开启和关闭的时间大致对应于CMOS成像器件的某一行的曝光时长的开始或结束时间,但是本领域技术人员可以理解,即使两者未能如图8那样同步,也可以在CMOS成像器件上呈现出明显的条纹,此时,可能会存在一些过渡条纹,但一定存在光源始终关闭时曝光的行(也即最暗的条纹)与光源始终开启时曝光的行(也即最亮的条纹),两者间隔一个像素。这种像素行的明暗变化(也即条纹)可以被容易地检测出来(例如,通过比较光源成像区域中的一些像素的亮度或灰度)。更进一步,即使不存在光源始终关闭时曝光的行(也即最暗的条纹)和光源始终开启时曝光的行(也即最亮的条纹),如果存在曝光时间内光源开启部分t1小于一定时间长度或占整个曝光时长较小比例的行(也即较暗条纹),和曝光时间内光源开启部分t2大于一定时间长度或占整个曝光时长较大比例的行(也即较亮条纹),且t2-t1>明暗条纹差值阈值(例如10微秒),或t2/t1>明暗条纹比例阈值(例如2),这些像素行之间的明暗变化也可以被检测出来。上述明暗条纹差值阈值和比例阈值和光标签发光强度、感光器件属性、拍摄距离等相关。本领域技术人员可以理解,其他阈值也是可行的,只要能够呈现出计算机可分辨的条纹即可。当识别出条纹时,可以确定出光源此时所传递的信息,例如二进制数据0或数据1。
根据本发明的一个实施例的条纹识别方法如下:得到光标签的图像,利用投影的方式分割出光源的成像区域;收集不同配置下(例如,不同距离、不同的光源闪烁频率等)的有条纹图片和无条纹图片;将所有收集的图片统一归一化到一个特定大小,例如64*16像素;提取每一个像素特征作为输入特征,构建机器学习分类器;进行二分类判别以判断是条纹图片还是非条纹图片。对于条纹识别,本领域普通技术人员还可以采用本领域公知的任何其他方法进行处理,对此不再详述。
对于一个长度为5厘米的条状光源,当使用目前市场上常见的手机,设置分辨率为1080p,在距离其10米远的地方(也即,距离为光源长度的200倍)进行拍摄时,该条状光源在其长度方向上大约会占据6个像素,如果每个条纹宽度为2个像素,则在该6个像素的宽度范围内会呈现出多个明显素的宽度范围内会呈现出至少一个明显的条纹,其可以被很容易地识别出来。如果设置更高的分辨率,或者采用光学变焦,在更远的距离,例如距离为光源长度的300倍或400倍时,也能够识别出条纹。
控制器也可以使光源工作于第二模式。在一个实施例中,在第二模式下,以与第一模式不同的另一频率来改变光源发出的光的属性,例如开启和关闭光源。在一个实施例中,相比于第一模式,在第二模式下控制器可以提高光源的开启和关闭频率。例如,第一模式的频率可以大于或等于8000次/秒,而第二模式的频率可以大于第一模式的频率。对于图6所示的情形,可以将光源配置为在CMOS成像器件的每一行的曝光时间内光源开启和关闭至少一次。图9示出了在每一行的曝光时间内光源开启和关闭只一次的情形,其中,图9的上部的信号为光源控制信号,其高电平对应于光源的开启,而低电平对应于光源的关闭。由于在每一行的曝光时间内,光源都会以相同的方式开启和关闭一次,每个曝光时间获取的曝光强度能量大致均等,因此光源的最终成像的各个像素行之间的亮度不会存在明显差异,从而不存在条纹。本领域技术人员可以理解,更高的开启和关闭频率也是可行的。另外,为了描述简单起见,图9中使用了光源与CMOS成像器件之间的同步,以使得光源的开启时间大致对应于CMOS成像器件的某一行的曝光时长的开始时间,但是本领域技术人员可以理解,即使两者未能如图9那样同步,在光源的最终成像的各个像素行之间的亮度也不会存在明显差异,从而不存在条纹。当不能识别出条纹时,可以确定出光源此时所传递的信息,例如二进制数据1或数据0。对于人眼而言,本发明的光源工作于上述第一模式或第二模式下时不会察觉到任何闪烁现象。另外,为了避免在第一模式和第二模式之间切换时人眼可能会察觉到的闪烁现象,可以将第一模式和第二模式的占空比设置为大致相等,从而实现在不同模式下的大致相同的光通量。
在另一实施例中,在第二模式下,可以向光源提供直流电,以使得光源发出属性基本不会发生改变的光,从而,在通过CMOS图像传感器对光源拍摄时所获得的该光源的一帧图像上不会呈现条纹。另外,在这种情况下,也可以实现在不同模式下的大致相同的光通量,以避免在第一模式和第二模式之间切换时人眼可能会察觉到的闪烁现象。
上文的图8描述了通过使光源发出的光的强度发生变化(例如,通过开启或关闭光源)来呈现条纹的实施例,在另一实施例中,如图10所示,也可以通过使光源发出的光的波长或颜色发生变化来呈现条纹。在图10所示的实施例中,光源中包括可发出红光的红色灯和可发出蓝光的蓝色灯。图10的上部的两个信号分别为红光控制信号和蓝光控制信号,其中,高电平对应于相应光源的开启,而低电平对应于相应光源的关闭。该红光控制信号和蓝光控制信号的相位偏移180°,也即,两者电平相反。通过红光控制信号和蓝光控制信号,可以使得光源向外交替地发出红色光和蓝色光,从而当采用CMOS成像器件对光源进行成像时可以呈现出红蓝条纹。
通过确定CMOS成像器件拍摄的一帧图像上与光源对应的部分是否存在条纹,可以确定每帧图像所传递的信息,例如二进制数据1或数据0。进一步地,通过CMOS成像器件拍摄光源的连续的多帧图像,可以确定出由二进制数据1和0构成的信息序列,实现光源向CMOS成像器件(例如手机)的信息传递。在一个实施方式中,当通过CMOS成像器件拍摄光源的连续的多帧图像时,可以通过控制器进行控制,使得光源的工作模式之间的切换时间间隔等于CMOS成像器件一个完整帧成像的时间长度,从而实现光源与成像器件的帧同步,即每帧传输1比特的信息。对于30帧/每秒的拍摄速度,每秒钟可以传递30比特的信息,编码空间达到230,该信息可以包括例如,起始帧标记(帧头)、光标签的ID、口令、验证码、网址信息、地址信息、时间戳或其不同的组合等等。可以按照结构化方法,设定上述各种信息的顺序关系,形成数据包结构。每接收到一个完整的该数据包结构,视为获得一组完整数据(一个数据包),进而可以对其进行数据读取和校验分析。下表示出了根据本发明的一个实施例的数据包结构:
帧头 |
属性(8bit) |
数据位(32bit) |
校验位(8bit) |
帧尾 |
在上文的描述中,通过判断每帧图像中在光源的成像位置处是否存在条纹来确定该帧图像所传递的信息。在其他实施例中,可以通过识别每帧图像中在光源的成像位置处的不同条纹来确定该帧图像所传递的不同信息。例如,在第一模式下,光源发出的光的属性以第一频率变化,从而能在通过CMOS图像传感器对光源拍摄时所获得的光源的图像上呈现出第一条纹;在第二模式下,光源发出的光的属性以第二频率变化,从而能在通过CMOS图像传感器对光源拍摄时所获得的光源的图像上呈现出与所述第一条纹不同的第二条纹。条纹的不同可以例如基于不同的宽度、颜色、亮度等或它们的任意组合,只要该不同能够被识别即可。
在一个实施例中,可以基于不同的属性变化频率来实现不同宽度的条纹,例如,在第一模式下,光源可以如图8所示的方式工作,从而实现宽度为大约两个像素的第一种条纹;在第二模式下,可以将图8中的光源控制信号的每个周期中的高电平和低电平的持续时间分别修改为原来的两倍,具体如图11所示,从而实现宽度为大约四个像素的第二种条纹。
在另一个实施例中,可以实现不同颜色的条纹,例如,可以将光源设置为其中包括可发出红光的红色灯和可发出蓝光的蓝色灯,在第一模式下,可以关闭蓝色灯,并使红色灯如图8所示的方式工作,从而实现红黑条纹;在第二模式下,可以关闭红色灯,并使蓝色灯如图8所示的方式工作,从而实现蓝黑条纹。在上述实施例中,在第一模式和第二模式下使用相同的变化频率实现了红黑条纹和蓝黑条纹,但是可以理解,在第一模式和第二模式下可以使用不同的属性变化频率。
另外,本领域技术人员可以理解,可以进一步地通过实现不止两种条纹来表示不止两种信息,例如,在上述光源中包括红色灯和蓝色灯的实施例中,可以进一步设置第三模式,在该第三模式下以图10所示的方式对红色灯和蓝色灯进行控制以实现红蓝条纹,即第三种信息。显然,可选地,也可以进一步通过不呈现条纹的第四模式来传递另一种信息,即第四种信息。可以任意选择上述四种模式中的多种来进行信息传递,也可以进一步结合其他模式,只要不同的模式产生不同的条纹图案(包括无条纹的图案)即可。
图12示出了在针对以每秒16000次的频率闪烁的LED灯(每个周期的持续时间为62.5微秒,其中开启时长和关闭时长各为大约31.25微秒),使用1080p分辨率的成像设备,并将每行曝光时长设置为14微秒的情况下,通过实验得到的图像上的条纹。从图12可以看出,呈现出了大致为2-3像素宽度的条纹。图13示出了将图12中的LED灯闪烁频率调整为每秒8000次(每个周期的持续时间为125微秒,其中开启时长和关闭时长各为大约62.5微秒)后,在其他条件不变的情况下通过实验得到的图像上的条纹。从图13可以看出,呈现出了大致为5-6像素宽度的条纹。图14示出了将图12中的LED灯闪烁频率调整为每秒64000次(每个周期的持续时间为15.6微秒,其中开启时长和关闭时长各为大约7.8微秒)后,在其他条件不变的情况下通过实验得到的图像,其上不存在条纹,其原因是每行曝光时长14微秒中基本上涵盖了LED灯的一个开启时长和一个关闭时长。
上文中描述了采用一个光源的情形,在一些实施例中,也可以采用两个或更多个光源。控制器可以独立地控制每一个光源的操作。
在一个实施例中,光标签中还可以包括位于信息传递光源附近的一个或多个定位标识,该定位标识例如可以是特定形状或颜色的灯,该灯例如可以在工作时保持常亮。该定位标识可以有助于CMOS成像器件(例如手机)的用户容易地发现光标签。另外,当CMOS成像器件被设置为对光标签进行拍摄的模式时,定位标识的成像比较明显,易于识别。因此,布置于信息传递光源附近的一个或多个定位标识还能够有助于手机快速地确定信息传递光源的位置,从而有助于识别对应于信息传递光源的成像区域是否存在条纹。在一个实施例中,在识别是否存在条纹时,可以首先在图像中对定位标识进行识别,从而在图像中发现光标签的大致位置。在识别了定位标识之后,可以基于定位标识与信息传递光源之间的相对位置关系,确定图像中的一个或多个区域,该区域涵盖信息传递光源的成像位置。接着,可以针对这些区域进行识别,以判断是否存在条纹,或存在什么样的条纹。
相比于现有技术中二维码大概15倍左右的识别距离,本发明的光标签的至少200倍的识别距离具有明显的优势。该远距离识别能力尤其适合于室外识别,以200倍的识别距离为例,对于街道上设置的一个长度为50厘米的光源,在距离该光源100米范围内的人都可以通过手机与该光源进行交互。另外,本发明的方案不要求CMOS成像设备位于与光标签的固定的距离处,也不要求CMOS成像设备与光标签之间的时间同步,并且不需要对各个条纹的边界和宽度进行精确检测,因此,其在实际的信息传输中具有极强的稳定性和可靠性。
在使用光标签传递数据信息时,可以以一定的信号频率基于待传递的信息来控制光标签中的光源在不同的工作模式之间切换,从而持续地传递不同的信息。该信号频率是指光标签的光源每秒钟传递数据的次数。例如,可以配置光标签的光源以30次/秒的信号频率来传递数据。在30次/秒的信号频率的情况下,对于以第一模式传递二进制数据1并且以第二模式传递二进制数据0的情形,光标签中的控制器可以基于待传递的二进制数据序列来确定在各个长度为1/30秒的时间片中光源应该工作于哪种模式。例如,对于二进制数据序列110101,光标签中的光源可以被配置为在连续的6个长度为1/30秒的时间片中依次工作于第一模式、第一模式、第二模式、第一模式、第二模式、第一模式。
在CMOS成像器件与光源不进行同步的情况下,当使用CMOS成像器件对光源进行图像采集时,有可能会发生在对光源进行成像时恰好发生了光源的模式切换,这会使得在光源的图像中呈现出两种条纹图案(包括无条纹的图案)的拼接。这种情况在CMOS成像器件与光源相距较远时发生的概率非常小。例如,当光标签中的光源以预定的信号频率30次/秒传递数据时,该光源的每次数据传递的持续时长为1/30秒,也即大约3.3万微秒。当CMOS成像器件与光源相距较远时,所拍摄的光源的图像的长度方向大约只会占据几十个像素行。如之前所述,CMOS成像器件的每行曝光时长大约为若干微秒(例如,14微秒),并且相邻行的曝光时间之间可能会存在重叠,因此这几十个像素行的总的曝光时长大约为几百微秒。相比于光源在每个模式中持续大约3.3万微秒的信息传递,该总的曝光时长恰好落在光源的模式切换时刻的概率是非常小的。而当CMOS成像器件与光源相距很近时,例如,所拍摄的光源的图像的长度方向大约占据上千个像素行时,因为上千个像素行的总的曝光时长比较长,因此该总的曝光时长恰好落在光源的模式切换时刻的概率会明显提高。为了解决上述问题,可以使得CMOS成像器件(例如手机)在拍摄时的采样频率(也即帧速率)大于等于信号频率的两倍,例如,如果光源以30次/秒的信号频率传递数据,则可以将CMOS成像器件配置为以至少60帧/秒的帧速率进行拍摄。
但在某些情况下,为了提高光源的信号频率或者为了降低对CMOS成像器件的帧速率要求,希望即使在光源的信号频率与CMOS成像器件的帧速率相等的情况下也能够实现数据传递。下文介绍了一种实现方法。
图15示出了在光源的信号频率与CMOS成像器件的帧速率相等的情况下所获得的光源的五帧连续的图像。光源的图像可以通过由CMOS成像器件对光标签进行连续拍摄,并从所拍摄的每一帧图像中提取出光源的图像来获得。在图15所示的实施例中,光源的图像中的白色部分表示第一种条纹图案,该第一种条纹图案对应于光源的用于传递二进制数据1的第一模式,光源的图像中的灰色部分表示第二种条纹图案,该第二种条纹图案对应于光源的用于传递二进制数据0的第二模式。从图15可以看出,在光源的第二帧、第三帧和第五帧图像中都出现了两种条纹图案,这意味着在这些帧中对光源进行成像时恰好发生了光源的工作模式的切换。在光源的第一帧和第四帧图像的成像期间没有发生光源的工作模式的切换,但是可以理解,第一帧和第四帧图像的成像期间实际上涉及光源在两个连续的时间片中的两次数据传递,只是在这两个连续的时间片中光源的工作模式或所传递的数据是相同的(在该实施例中,都为第一模式)。可以理解,图15中的五帧连续的图像实际上涉及了光源在信息传递期间的六个连续的时间片,或者六个连续的工作模式。并且可以理解,从光源的第一帧图像的成像开始时刻到第五帧图像的成像结束时刻涵盖了四个完整的时间片(也即,第二、三、四、五时间片),因为第一帧图像的成像开始时刻位于第一时间片期间,而第五帧图像的成像结束时刻位于第六时间片期间。
为了解码出光源的上述多帧图像表示的工作模式序列或数据序列,提出了一种解码方法,其包括:
通过CMOS成像器件对包含光源的光标签进行连续拍摄。通过该连续拍摄,可以获得包含光源的一系列连续图像。
获取光源的若干帧连续图像。可以采用本领域已知的各种方法来获得光源的若干帧连续图像,例如,可以从所拍摄的包含光源的一系列连续图像中确定出光源的成像位置,从而提取出光源的若干帧连续图像。
针对光源的每一帧图像,分别提取出该图像的起始部分和结束部分。因为CMOS成像器件是逐行扫描的,因此,光源的每一帧图像并非同时成像的,而是具有先后次序。图像的起始部分是指图像的最早成像的一部分,图像的结束部分是指图像的最晚成像的一部分。每个CMOS成像器件具有固有的扫描方式,该扫描方式是可以提前知悉的。在图15所示的实施例中以及下文的描述中,假设CMOS成像器件的扫描行方向为竖直方向,并从左侧的行开始扫描。因此,在图15所示的实施例中,位于图像的左侧端部的部分是起始部分,而位于图像的右侧端部的部分为结束部分。该起始部分和结束部分的长度被选择为小于等于光源的每一帧图像的总长度的1/2,以保证起始部分和结束部分中至少有一个中不存在条纹图案的组合。起始部分和结束部分的长度优选地是相等的,但并不是必须相等。
对提取出的起始部分和结束部分进行分析,以确定每个起始部分和结束部分表示的数据。例如,对于图15所示的实施例,如果起始部分或结束部分中仅有第一种条纹图案,则可以确定其表示二进制数据1;如果起始部分或结束部分中仅有第二种条纹图案,则可以确定其表示二进制数据0。如果某个起始部分或结束部分中同时存在两种条纹图案,则无法确定其表示的数据,在此可以将其称为“不确定”,并在下文中以“*”表示。
对每一帧图像的结束部分表示的数据和紧随其后的下一帧图像的起始部分表示的数据执行数据去除操作,以确定出光源所传递的数据序列。该数据去除操作例如可以包括如下规则:如果两个数据相同,则保留其中之一;如果其中一个数据为“不确定”,则保留另一数据。
图16中示出了提取图15所示的每一帧图像的起始部分和结束部分的一个实施例。在该实施例中,提取虚线A左侧的图像作为起始部分,并提取虚线B右侧的图像作为结束部分,其中,起始部分和结束部分的长度相等,均为光源的每一帧图像的总长度的1/4。由此,获得了十个起始部分和结束部分。在该实施例中,每个起始部分或结束部分中都不存在条纹图案的组合。通过对这十个起始部分和结束部分进行分析,可以确定出这十个起始部分和结束部分所表示的相应的数据序列:1、1、1、0、0、1、1、1、1、0。将每一结束部分表示的数据和紧随其后的起始部分表示的数据作为一组,获得四组数据,分别为(1、1)、(0、0)、(1、1)、(1、1)。通过对其中的每一组数据执行数据去除操作,可以获得数据序列:1、0、1、1,该数据序列即为从光源的第一帧图像的成像开始时刻到第五帧图像的成像结束时刻涵盖的四个完整时间片(也即,第二、三、四、五时间片)所传递的数据。
图17中示出了提取图15所示的每一帧图像的起始部分和结束部分的另一个实施例。在图17的实施例中,仍提取虚线A左侧的图像作为起始部分,并提取虚线B右侧的图像作为结束部分,但与图16所示的方式不同的是,起始部分和结束部分的长度更长,并因而使得一些起始部分中存在条纹图案的组合。通过对这十个起始部分和结束部分进行分析,可以确定出这十个起始部分和结束部分所表示的相应的数据序列:1、1、*、0、*、1、1、1、*、0。将每一结束部分表示的数据和紧随其后的起始部分表示的数据作为一组,获得四组数据,分别为(1、*)、(0、*)、(1、1)、(1、*)。通过对其中的每一组数据执行数据去除操作,可以获得同样的数据序列:1、0、1、1,该数据序列即为从光源的第一帧图像的成像开始时刻到第五帧图像的成像结束时刻涵盖的四个完整时间片(也即,第二、三、四、五时间片)所传递的数据。
本领域技术人员可以理解,对于图16和图17所示的实施例,实际上也可以进一步判断出第一时间片和第六时间片所传递的数据,因为第一帧图像的起始部分表示数据1,第五帧图像的结束部分表示数据0,无论第一帧图像之前的一帧图像的结束部分以及第六帧图像的起始部分如何,在执行了数据去除操作后都是保留数据1和0,也即,第一时间片和第六时间片所传递的数据分别为数据1和0。如果第一帧图像的起始部分或第五帧图像的结束部分的数据在之前的步骤中被判定为“不确定”,则可以简单地将其删除。因此,针对第一帧图像的起始部分和最后一帧图像的结束部分的数据去除规则可以是:如果其表示的数据为“不确定”,则删除该数据;否则,保留该数据。
上文以本发明的光标签为例描述了对光标签中的光源传递的信息进行解码的方法,但本领域技术人员可以理解,上述解码方法并不局限于本发明的光标签,而是可以适用于任何如下光源:该光源被配置为能够工作于至少两种模式,其中,在不同的模式下,当通过CMOS图像传感器对该光源拍摄时所获得的该光源的图像上呈现出不同的预定外观。该外观例如可以涉及图案、颜色或者它们的组合。例如,对于一种简单地通过在不同的模式下发射不同颜色的光来传递信息的光源,当通过CMOS图像传感器对该光源拍摄时,在光源的不同的模式下会获得光源的不同颜色的图像。可以理解,当通过CMOS图像传感器对该光源拍摄时,同样有可能在拍摄该光源的一帧图像时恰好发生了模式切换,从而在光源的一帧图像上出现颜色跳变。显然,本发明的上述解码方法可以适用于对该光源的解码。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
由此描述了本发明的至少一个实施例的几个方面,可以理解,对本领域技术人员来说容易地进行各种改变、修改和改进。这种改变、修改和改进意于在本发明的精神和范围内。