CN106558027A - 用于估计相机姿态中的偏离误差的算法 - Google Patents
用于估计相机姿态中的偏离误差的算法 Download PDFInfo
- Publication number
- CN106558027A CN106558027A CN201610847646.2A CN201610847646A CN106558027A CN 106558027 A CN106558027 A CN 106558027A CN 201610847646 A CN201610847646 A CN 201610847646A CN 106558027 A CN106558027 A CN 106558027A
- Authority
- CN
- China
- Prior art keywords
- image
- line
- designator
- preview image
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004422 calculation algorithm Methods 0.000 title abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000001514 detection method Methods 0.000 claims abstract description 15
- 210000000744 eyelid Anatomy 0.000 claims description 60
- 230000006870 function Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 25
- 238000012937 correction Methods 0.000 description 24
- 238000013500 data storage Methods 0.000 description 21
- 238000003860 storage Methods 0.000 description 21
- 230000000712 assembly Effects 0.000 description 17
- 238000000429 assembly Methods 0.000 description 17
- 230000014509 gene expression Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005259 measurement Methods 0.000 description 7
- 238000011524 similarity measure Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000005096 rolling process Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000004069 differentiation Effects 0.000 description 4
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000010267 cellular communication Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100381997 Danio rerio tbc1d32 gene Proteins 0.000 description 1
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 101100381999 Mus musculus Tbc1d32 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000021152 breakfast Nutrition 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000001835 viscera Anatomy 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
Classifications
-
- G06T3/02—
-
- G06T5/80—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/61—Control of cameras or camera modules based on recognised objects
- H04N23/611—Control of cameras or camera modules based on recognised objects where the recognised objects include parts of the human body
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
- G06T3/40—Scaling the whole image or part thereof
- G06T3/4038—Scaling the whole image or part thereof for image mosaicing, i.e. plane images composed of plane sub-images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/633—Control of cameras or camera modules by using electronic viewfinders for displaying additional information relating to control or operation of the camera
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/64—Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/698—Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera pose
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
- Studio Devices (AREA)
- Image Analysis (AREA)
- Stereoscopic And Panoramic Photography (AREA)
Abstract
本发明公开了一种用于估计相机姿态中的偏离误差的算法。本发明涉及一种计算图像中的偏离误差并且向用户提供用于校正偏离误差的用户界面的系统和方法。该方法包括接收图像、在图像中执行线检测、针对图像中的各条线计算线参数化、计算针对图像的偏离角度、以及提供图像中所计算出的偏离数据。
Description
技术领域
本发明总体涉及提供用于引导用户捕获一系列的图像来创建单个线性全景图像的用户界面。本发明尤其涉及如下的系统和方法,所述系统和方法用于生成一个或多个用户界面单元,所述用户界面单元提供瞬时的反馈以引导用户捕获一系列图像来创建单个线性全景图像。更特别地,本发明涉及相机姿态偏离(yaw)误差确定和用户界面中误差的使用。
背景技术
表示货架图(planogram)是零售环境下产品的视觉表示。例如,表示货架图可以进行零售环境中的位置和应当放置多少数量的商品。已知这样的表示货架图是增加销售、管理库存和确保放置期望的数量和大小的物品以最优化利润和其他参数的有力工具。然而,货架、搁板和展示架上货物的充足水平的呈现和维护是劳动密集的工作,因此实现表示货架图是困难的。虽然可以由用户人工跟踪零售商店中产品的位置和数量,但人们仍希望能够自动识别产品并且自动或半自动地获取与产品的状态有关的信息。
当针对表示货架图捕获图像时,如果图像中存在倾斜误差,会将变形引入表示货架图。大多数系统不包括检测偏离误差倾斜的内部加速度仪。而且,现有的使用存在的内部加速度仪来检测捕获的图像中的偏离误差倾斜的方法并不成功。对于偏离转动的每个角度,内部加速度仪报告相同的值,使得针对表示货架图的图像中具有偏离误差转动。
现有的识别产品的方法存在缺陷。例如,在一种方法中,通过图像拼接(imagestitching)来实现从多个图像中识别多个产品的目的。但不利的是,现有的图像拼接技术可能会导致伪影(artifact),并且还可能会干扰识别的最优操作。
发明内容
本文中引入的技术涉及用于相机姿态误差确定和在偏离用户界面中的使用的系统和方法,至少部分地克服了现有技术中的缺陷和限制。在一个实施例中,用于相机姿态误差确定的系统和方法包括:接收对象的第一预览图像;计算针对第一预览图像的偏离角度;基于偏离角度确定偏离指示符;以及在显示设备的一部分上呈现具有位于第一预览图像之上的偏离指示符。
在一个可选的实施例中,用于在偏离用户界面上使用偏离角度的系统和方法包括:接收货架的预览图像,在预览图像中执行线检测,针对在预览图像中检测到的至少两条线计算线参数化,使用线参数化计算针对预览图像的偏离角度,基于偏离角度确定垂直眼睑指示符,以及在显示设备上呈现位于较小同心圆的一部分之上的垂直眼睑指示符。
在一个可选的实施例中,用于相机偏离误差确定的系统和方法包括:接收对象的预览图像;确定对象的预览图像中的第一线和第二线;确定预览图像中在第一点处第一线与第二线之间的第一高度;确定预览图像中在第二点处第一线与第二线之间的第二高度;将第一线和第二线参数化;计算从捕获设备点到第一点的第一距离;计算从捕获设备点到第二点的第二距离;使用第一线的参数化、第二线的参数化、第一距离以及第二距离计算偏离角度;并且使用偏离角度修正对象的预览图像。
其他方面包括这些和其他创新方面的对应的方法、系统、装置和计算机程序产品。
本文中描述的特征和优势并不是完全包括形式的,并且许多额外的特征和优势对于阅读了本说明书和附图的本领域技术人员而言是清楚的。此外,还应当注意的是,本说明书中选用使用的词语主要用于易于理解本申请和指示性的目的,而并不限制本申请的范围。
附图说明
通过实施例来说明在此引入的技术,附图不对所述技术构成限制,在附图中,相似的附图标记用于指代相似的单元。
图1示出了表示用于捕获一系列的图像来创建线性全景的系统的一个实施例的高级方框图。
图2示出了表示包括图像识别应用的计算设备的一个实施例的方框图。
图3示出了表示用于针对单个线性全景图像的捕获一系列的图像的方法的一个实施例的流程图。
图4A-图4B示出了表示用于针对单个线性全景图像的捕获一系列的图像的方法的另一个实施例的流程图。
图5A-图5B示出了表示用于针对单个线性全景图像的捕获一系列的图像的方法的另一个实施例的流程图。
图6示出了表示计算偏离角度的方法的一个实施例的流程图。
图7示出了用于在用户界面上显示偏离误差的方法的一个实施例的流程图。
图8示出了表示用于执行变形校正的方法的一个实施例的流程图。
图9示出了用于用户捕获货架图像的一个实施例的图形表示。
图10示出了倾斜误差的图形表示。
图11示出了用于客户端设备的倾斜误差的图形表示。
图12示出了用户界面的实施例的图形表示。
图13示出了具有倾斜指示符的用户界面的一个实施例的图形表示。
图14示出了用户界面的一个实施例的图形表示。
图15示出了图像捕获的蜿蜒扫描样式的一个实施例的图形表示。
图16示出了确定相机预览帧的一个实施例的图形表示。
图17示出了确定相机预览帧的另一个实施例的图形表示。
图18示出了用户界面显示拼接图像的另一个实施例的图形表示。
图19示出了针对三种不同倾斜误差的用户界面的一个实施例的图形表示。
图20示出了存在偏离误差的拼接图像的一个实施例的图形表示。
图21示出了线检测和参数化计算的一个实施例的图形表示。
图22示出了线检测和消失点计算的另一个实施例的图形表示。
图23示出了图像的长度计算的一个实施例的图形表示。
图24示出了图像的偏离角度计算的一个实施例的图形表示。
图25A-图25D示出了偏离误差指示符用户界面的第一实施例的图形表示。
图26A-图26E示出了偏离误差指示符用户界面的第二实施例的图形表示。
图27示出了俯仰(pitch)误差指示符用户界面的一个实施例的图形表示。
图28示出了合并三种不同倾斜指示符的用户界面的一个实施例的图形表示。
具体实施方式
图1是示出了用于捕获一系列的图像来创建线性全景的系统100的一个实施例的高级框图。所示的系统100可以具有能够由用户访问的一个或多个客户端设备115a...115n和识别服务器101。在图1和其他附图中,参考数字之后的字母(例如“115a”)代表对具有该特定参考数字的单元的引用。后面不带有字母的参考数字(例如“115”)代表具有该参考数字的单元的实例的总体引用。在所示的实施例中,经由网络105可通信地耦接系统100的这些实体。
网络105可以是常规类型的有线或无线网络,并且可以具有各种不同的配置,包括星形配置、令牌环配置或其他配置。而且,网络105可以包括局域网(LAN)、广域网(WAN)(例如因特网)和/或其他互连的数据路径,其中多个设备可以跨过网络105进行通信。在一些实施例中,网络105可以是点对点网络。网络105还可以耦接到或包括通信网络的一部分,用于以各种不同的通信协议发送数据。在一些实施例中,网络105可以包括用于发送和接收数据的蓝牙通信网络或蜂窝通信网络,包括经由短消息服务(SMS)、多媒体消息服务(MMS)、超文本传输协议(HTTP)、直接数据连接、WAP、电子邮件等。尽管图1中所示的一个网络105耦接到了客户端设备115和识别服务器101,但实际上一个或多个网络105可以连接到这些实体。
在一些实施例中,系统100包括与网络105耦接的识别服务器101。在一些实施例中,识别服务器101可以是硬件服务器、软件服务器、或硬件和软件的组合。识别服务器101可以是计算设备或可以由计算设备实现,该计算设备包括处理器、存储器、应用、数据库和网络通信功能。在图1的示例中,识别服务器101的组件用于实现图像识别应用103a,在下文中对此进行更详细地描述。在一个实施例中,识别服务器101向包装的消费品的商品公司提供服务,以识别货架、搁架或展示架上的产品。虽然这里的示例将描述货架的图像中的产品(诸如零售显示)的识别,但是应当理解图像可以包括被组织的对象的任何布置。例如,图像可以是仓库、库房、储藏室、陈列室等的图像。相似地,除了零售产品之外,对象还可以是在制造、建造或维护中所使用的工具或部件、医药用品、急救用品、紧急或安全设备等。
在一些实施例中,识别服务器101经由网络105向/从系统100的其他实体发送/接收数据。例如,识别服务器101向/从客户端设备115发送/接收包括图像的数据。由识别服务器101接收到的图像可以包括由客户端设备115捕获的图像、从网站或电子邮件复制的图像或来自任何其他源的图像。尽管图1中仅示出了单个识别服务器101,但是应当理解的是,还可以存在任何其他数量的识别服务器101或服务器集群。识别服务器101还包括数据存储243,在下文中将参照图2对该数据存储243进行更详细的描述。
客户端设备115可以是这样的计算设备,其包括存储器、处理器和相机,例如膝上型计算机、桌上型计算机、平板计算机、移动电话、智能电话、个人数字助理(PDA)、移动电子邮件设备、网络摄像头、用户可穿戴计算设备或能够访问网络105的任何其他的电子设备。客户端设备115提供任何类型应用的一般图形和多媒体处理。客户端设备115包括用于浏览由识别服务器101提供的信息的显示器。尽管图1中示出了两个客户端设备115a和115n,但是本公开也适用于具有一个或更多个客户端设备115的系统结构。
客户端设备115适用于向/从识别服务器101发送/接收数据。例如,客户端设备115向识别服务器101发送查询图像,并且识别服务器101将在查询图像中识别出的一个或多个对象相关的JSON(JavaScript对象注释)格式的数据提供给客户端设备115。
图像识别应用103可以包括软件和/或逻辑来提供捕获一系列的图像的功能以创建线性全景。在一些实施例中,可以使用可编程或专门的硬件(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现图像识别应用103。在一些实施例中,可以使用硬件和软件的组合来实现图像识别应用103。在另一些实施例中,图像识别应用103可以被存储在识别服务器101和客户端设备115的组合中并且在该组合上被执行,或者可以由客户端设备115或识别服务器101中的任何一个来进行上述的存储和执行。
在一些实施例中,图像识别应用103b可以是这样的瘦客户端应用,其具有在客户端设备115上执行的某一功能,并且由图像识别应用103a在识别服务器101上执行额外的功能。例如,在客户端设备115上的图像识别应用103b可以包括这样的软件和/或逻辑,该软件和/或逻辑用于捕获图像,将图像发送到识别服务器101,并且显示图像识别结果。瘦客户端应用103b也可以包括参考图像识别应用103在文中描述的功能,诸如处理图像和执行特征识别。
在一些实施例中,图像识别应用103从捕获设备247接收感兴趣的对象的部分的图像。图像识别应用103确定图像的特征。图像识别应用103在捕获设备247的显示器上生成包括感兴趣的对象的当前预览图像的用户界面。图像识别应用103将图像的特征与感兴趣的对象的当前预览图像进行动态比较,以确定重叠。图像识别应用103更新用户界面以包括视觉区分指示符,从而引导捕获设备247的移动,来生成图像之间的期望或预定的重叠和对齐。图像识别应用103确定图像与当前预览图像之间的重叠是否满足预定的重叠和对齐阈值。例如,重叠阈值可以被设置为百分之六十。图像识别应用103基于满足预定的重叠阈值的重叠,捕获感兴趣的对象的部分的接下来的图像。在下文中,将对图像识别应用103的操作和上述功能进行更详细地描述。
图2示出了表示包括图像识别应用103的计算设备200的一个实施例的方框图。根据一些示例,计算设备200还可以包括处理器235、存储器237、通信单元241、数据存储243、显示设备239、方位传感器245和捕获设备247以及输出设备249。通过总线220可通信地耦接计算设备200的各个组件。总线220可以代表一个或多个总线,包括工业标准结构(ISA)总线、外围组件互连(PCI)总线、通用串行总线(USB)或现有技术中的提供类似功能的一些其他总线。在一些实施例中,计算设备200可以是客户端设备115、识别服务器101或客户端设备115和识别服务器101的组合。在计算设备200是识别服务器101或客户端设备115的这样的实施例中,应当理解的是,客户端设备115和识别服务器101可以包括图2中未示出的其他组件。
处理器235可以通过执行各种输入/输出、逻辑和/或数学操作来执行软件指令。处理器235可以具有处理数据信号的各种计算结构,包括例如复杂指令集计算机(CISC)结构、缩减指令集计算机(RISC)结构、和/或实现指令集的组合的结构。处理器235可以是物理上的和/或虚拟的,并且可以包括单个处理单元或多个处理单元和/或内核。在一些实现中,处理器235能够生成电子显示信号并将电子显示信号提供给显示设备,支持图像的显示,捕获并发送图像、执行包括各种类型的特征提取和采样等的复杂任务。在一些实现中,处理器235可以经由总线220耦接到存储器237来从其访问数据和指令并在其中存储数据。总线220可以将处理器235耦接到计算设备200的其他组件,例如包括存储器237、通信单元241、图像识别应用103和数据存储243。对于本领域技术人员而言明显的是,还可以使用其他的处理器、操作系统、传感器、显示器和物理配置。
存储器237可以为计算设备200的其他组件存储数据并提供对数据的访问。存储器237可以被包括在单个计算设备中或分布在多个计算设备中,如本文中其他位置所述。在一些实现中,存储器237可以存储由处理器235执行的指令和/或数据。指令和/或数据可以包括用于执行本文中描述的技术的代码。例如,在一个实施例中,存储器237可以存储图像识别应用103。存储器237还能够存储其他指令和数据,包括例如操作系统、硬件驱动器、其他软件应用、数据库等。存储器237可以耦接到总线220以与处理器235和计算设备200的其他组件进行通信。
存储器237可以包括一个或多个非易失性计算机可使用(例如可读、可写)设备、静态随机存取存储器(SRAM)设备、嵌入式存储器设备、分离的存储器设备(例如PROM、FPROM、ROM)、硬盘驱动器、光盘驱动器(CD、DVD、蓝光(Blu-rayTM)等)介质,其可以是任何这样的有形装置或设备,该装置或设备能够包含、存储、传送或传输指令、数据、计算机程序、软件、代码、例程等,以由处理器235处理或与处理器235相连接。在一些实现中,存储器237可以包括一个或多个易失性或非易失性存储器。例如,存储器237可以包括但不限于一个或多个动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、嵌入的存储器设备、分离的存储器设备(例如PROM、FPROM、ROM)、硬盘驱动器、光盘驱动器(CD、DVD、蓝光(Blu-rayTM)等)。应当理解的是,存储器237可以是单个设备,或可以包括多种类型的设备和配置。
通信单元241是用于通过将处理器235链接到网络105和其他处理系统来接收和发送数据的硬件。通信单元241从客户端设备115接收诸如请求之类的数据,并且将请求(例如处理图像的请求)发送到控制器201。通信单元241例如响应于处理图像,还将包括识别结果的信息发送到客户端设备115以进行显示。通信单元241耦接到总线220。在一个实施例中,通信单元241可以包括与客户端设备115或另一个通信通道直接物理连接的端口。例如,通信单元241可以包括RJ45端口或与客户端设备115进行有线通信的类似端口。在另一个示例中,通信单元241可以包括无线收发器(未示出),用于使用一个或多个无线通信方法(例如IEEE 802.11、IEEE 802.16、蓝牙或另一种适当的无线通信方法)与客户端设备115或任何其他通信通道交换数据。
在另一个实施例中,通信单元241可以包括蜂窝通信收发器,用于通过蜂窝通信网络诸如经由短消息服务(SMS)、多媒体消息服务(MMS)、超文本传输协议(HTTP)、直接数据连接、WAP、电子邮件或另一种适当类型的电子通信等发送和接收数据。在另一个实施例中,通信单元241可以包括有线端口和无线收发器。本领域技术人员可以理解的是,通信单元241还向网络105提供其他的常规连接,以使用诸如TCP/IP、HTTP、HTTPS和SMTP之类的标准网络协议分发文件和/或媒体对象。
数据存储器243是存储用于提供本文中描述的功能的数据的非暂时性存储器。数据存储器243可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器或一些其他的存储器设备。在一些实施例中,数据存储器243还可以包括非易失性存储器或其他类似的永久性存储设备和介质,包括硬盘驱动器、软盘驱动器、CD-ROM设备、DVD-ROM设备、DVD-RAM设备、DVD-RW设备、闪速存储器设备或其他一些大容量存储设备,用于更持久地存储信息。
在所示的实施例中,数据存储器243可通信地耦接到总线220。数据存储243存储用于分析所接收到的图像的数据以及分析和本文中所描述的其他功能的结果。例如,数据存储243可以存储图像重叠阈值,用于捕获最优重叠图像。数据存储243可以类似地存储所捕获的图像和针对所捕获的图像确定的特征集。此外,数据存储243可以存储被拼接的线性全景图像。在下文中更详细地描述数据存储243中存储的数据。
在所示实施例中,显示设备239可以是用于显示预览图像或用户界面的屏幕。显示设备239用于经由总线220与处理器235和数据存储器243进行连接,并且从图像识别应用103接收信息。显示设备239可以并入移动电话、平板设备、计算机、相机或其他能够具有显示屏幕的设备。
在所示实施例中,捕获设备247是能够捕获对象的图像的设备。捕获设备247可以是能够捕获图像的任何设备,包括相机或类似的设备。捕获设备247可以是单独的设备或者是客户端设备115的一部分。捕获设备247可以用于经由总线220与处理器235和数据存储器243进行连接,从图像识别应用103接收信息并发送该信息。
在所示实施例中,方位传感器245可以是能够检测设备的方位的传感器。传感器245可以是加速度仪、陀螺仪或其他能够检测方位的传感器。方位传感器245可以从内部并入客户端设备115或者从客户端设备115分离。方位传感器245可以用于经由总线220从图像识别应用103发送和接收数据。
在所示实施例中,输出设备249可以是任何能够向用户生成输出的设备。输出设备249可以是扬声器、用户界面所呈现的图像、客户端设备115上的震动或者另一种能够由用户检测到的输出。在一些实施例中,输出设备249可以是蜂窝电话、平板计算机或其他移动设备,用于使用触觉反馈模块219经由震动提供触觉反馈。在一个可选的实施例中,输出设备249可以是能够使用触觉反馈模块219提供触觉反馈的智能手表。在这样的实施例中,智能手表能够提供更多复杂的触觉反馈,诸如提供轻敲签名。轻敲签名可以是在用户的腕上的轻敲的特殊序列以指示一些事情,诸如设备上正确的倾斜。
在一些实施例中,图像识别应用103可以包括控制器201、拼接模块209、用户界面模块211、特征提取模块203、对齐模块205、用户引导模块207、偏离计算模块213、变形校正模块215、偏离用户界面模块217和触觉反馈模块219。经由总线220可通信地耦接图像识别应用103的各个组件。
控制器201可以包括软件和/或逻辑,用于控制图像识别应用103的其他组件的操作。控制器201控制图像识别应用103的其他组件,以执行下文中参照图3至图8描述的方法。控制器201也可以包括软件和/或逻辑,以提供用于进行图像识别应用103和计算设备200的其他组件之间、以及图像识别应用103的组件之间的通信的功能。在一些实施例中,可以使用可编程或专门的硬件(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现控制器201。在一些实施例中,可以使用由处理器235可执行的硬件和软件的组合来实现控制器201。在一些实施例中,控制器201是由处理器235可执行的指令集。在一些实现中,控制器201被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,控制器201适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
在一些实施例中,控制器201经由通信单元241向/从客户端设备115和识别服务器101中的一个或多个发送/接收数据。例如,控制器201经由通信单元241从由用户操作的客户端设备115接收图像,并且将图像发送到拼接模块209。在另一个示例中,控制器201从用户界面模块211接收用于将图形用户界面提供到用户的数据,并且将数据发送到客户端设备115,使得客户端设备115向用户呈现用户界面。
在一些实施例中,控制器201从图像识别应用103的其他组件接收数据,并且将数据存储在数据存储243中。例如,控制器201从拼接模块209接收包括针对图像识别出的特征的数据,并且将数据存储在数据存储243中。在其他一些实施例中,控制器201从数据存储243获取数据,并且将数据发送到图像识别应用103的其他组件。例如,控制器201从数据存储243获取包括重叠阈值的数据,并且将所获取的数据发送到拼接模块209。
拼接模块209可以包括软件和/或逻辑,以提供用于将一系列的捕获的图像拼接为单个线性全景图像的功能。在一些实施例中,可以使用可编程或专门的硬件(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现拼接模块209。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现拼接模块209。在一些实施例中,拼接模块209能够执行方法、实现用户界面和下文中参考图15-17、图20和图26A-26E的其他功能,以将图像拼接在一起。在一些实施例中,拼接模块209是由处理器235可执行的指令集。在一些实现中,拼接模块209被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,拼接模块209适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
用户界面模块211可以包括用于将用户界面提供给用户的软件和/或逻辑。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现用户界面模块211。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现用户界面模块211。在一些实施例中,用户界面模块211是由处理器235可执行的指令集。在一些实现中,用户界面模块211被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,用户界面模块211适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
在一些实施例中,用户界面模块211从拼接模块209或图像识别应用103的其他模块接收指令,以生成指示用户如何移动客户端设备115以捕获与先前捕获的图像具有良好重叠的接下来的图像的图形用户界面。在一些实施例中,用户界面模块211从拼接模块209接收指令,以生成引导用户捕获在方位的轴的任何一个轴(例如X、Y或Z轴)上略微倾斜或不倾斜的重叠图像的图形用户界面。在其他一些实施例中,用户界面模块211经由通信单元241将图形用户界面数据发送到客户端设备115中的应用(例如浏览器),使得应用将数据显示为图形用户界面。在一些实施例中,用户界面模块211能够生成偏离用户界面来代替偏离用户界面模块217。在一个可选的实施例中,用户界面模块211可从偏离用户界面模块217接收信息,以将偏离数据并入用户界面。这些实施例的示例能够被示出在图26A-26E、图27和图28中。
特征提取模块203可以包括软件和/或逻辑,以提供用于分析一系列的图像从而检测感兴趣的特征的功能。在一些实施例中,可以使用可编程或专门的硬件(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现特征提取模块203。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现特征提取模块203。在一些实施例中,特征提取模块203是由处理器235可执行的指令集。在一些实现中,特征提取模块203被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,特征提取模块203适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
对齐模块205可以包括软件和/或逻辑:以提供将所捕获的图像与先前的图像对齐的功能。在一些实施例中,可以使用可编程或专门的硬件(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现对齐模块205。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现对齐模块205。在一些实施例中,对齐模块205是可由处理器235执行的指令集。在一些实现中,对齐模块205被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,对齐模块205适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
用户引导模块207可以包括用于提供下述功能的软件和/或逻辑:接收与偏离(yaw)、俯仰(pitch)和滚动(roll)误差有关的指令,并且向用户提供校正偏离、俯仰或滚动误差的方向。而且,用户引导模块207能够确定用于拍摄待拼接在一起的图像的方向以生成全景图像,并且向用户提供拍摄用于全景图像的接下来的图像的方向。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现用户引导模块207。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现用户引导模块207。在一些实施例中,用户引导模块207是由处理器235可执行的指令集。在一些实现中,用户引导模块207被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,用户引导模块207适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
触觉反馈模块219可以包括用于提供当偏离、俯仰或滚动误差已减小到可接受范围时提醒用户的功能的软件和/或逻辑。在一个可选的实施例中,触觉反馈模块219可以包括用于提供当偏离、俯仰或滚动误差已增大到超出设定阈值时提醒用户的功能的软件和/或逻辑。在一些实施例中,触觉反馈模块219接收倾斜误差,诸如偏离、俯仰或滚动数据。触觉反馈模块219能够确定倾斜误差在设定阈值之上或者之下,并且当倾斜误差超出某一阈值时使用输出设备249提醒用户。可选地,在一些实施例中,触觉反馈模块219当倾斜误差在某一阈值之下时使用输出设备249提醒用户。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现触觉反馈模块219。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现触觉反馈模块219。在一些实施例中,触觉反馈模块219是由处理器235可执行的指令集。在一些实现中,触觉反馈模块219被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,触觉反馈模块219适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
偏离计算模块213可以包括提供用于分析图像并且确定偏离角度的功能的软件和/或逻辑。偏离计算模块213接收图像,并且能够分析图像以确定偏离误差。偏离计算模块213随后可以将偏离误差发送到其他的模块或设备用于进一步的处理。由偏离计算模块213执行的处理的示例可见于图23和图24。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现偏离计算模块213。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现偏离计算模块213。在一些实施例中,偏离计算模块213是由处理器235可执行的指令集。在一些实现中,偏离计算模块213被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,偏离计算模块213适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
变形校正模块215可以包括提供用于执行图像的变形校正的功能的软件和/或逻辑。在一些实施例中,变形校正模块215从偏离计算模块213接收偏离数据,并且使用偏离数据确定去偏斜(de-skew)变换。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现变形校正模块215。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现变形校正模块215。在一些实施例中,变形校正模块215是由处理器235可执行的指令集。在一些实现中,变形校正模块215被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,变形校正模块215适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
偏离用户界面模块217可以包括提供向用户提供减小所计算的偏离角度的功能的软件和/或逻辑。在一些实施例中,偏离用户界面模块217可以从偏离计算模块213接收偏离数据,并且使用偏离数据在用户界面上生成偏离数据的指示符。在一些实施例中,偏离数据可以用于计算当前偏离误差的百分比,并且可以基于当前偏离误差的百分比,使用偏离用户界面模块217生成指示符。在可选的实施例中,偏离用户界面模块217可以使用偏离数据来生成偏离指示符,并将偏离指示符发送到用户界面模块211,用于用户界面模块211生成包括偏离指示符的用户界面。在一些实施例中,可以使用可编程或专门的硬件(包括现场可编程门阵列(FPGA)或专用集成电路(ASIC))来实现偏离用户界面模块217。在一些实施例中,可以使用由处理器235执行的硬件和软件的组合来实现偏离用户界面模块217。在一些实施例中,偏离用户界面模块217是由处理器235可执行的指令集。在一些实现中,偏离用户界面模块217被存储在存储器237中,并且可被处理器235访问和执行。在一些实现中,偏离用户界面模块217适用于经由总线220与处理器235、存储器237和图像识别应用103的其他组件进行协作和通信。
方法
图3示出了表示用于单个线性全景图像的捕获一系列的图像的方法的实施例的流程图300。在302处,拼接模块209从捕获设备247接收感兴趣的对象的一部分的图像。例如,图像可以是货架、区域、艺术作品、路标、景区位置、外空间等的图像。在304处,拼接模块209确定图像的特征,或者拼接模块209从特征提取模块203接收信息,而特征提取模块203确定图像的特征。对图像进行处理,并且假定其满足作为一系列的图像中的第一个图像的标准(位置、方位和对齐)以形成单个线性全景图像,其被存储为参考图像。接着图像识别应用103接收至少一个预览图像。在306处,用户界面模块211在捕获设备247的显示器上呈现包括感兴趣的对象的当前预览图像的用户界面。用户界面包括引导用户捕获当前预览图像的指示符,其中的预览图像能够成为系列中的接下来的图像。在308处,拼接模块209将参考图像的特征与捕获设备247的显示器上的感兴趣的对象的当前预览图像进行动态比较,以确定重叠。在310处,拼接模块209确定图像与当前预览图像之间的重叠是否满足预定的重叠阈值。例如,预定的重叠阈值可以被设置为百分之六十。随着更新预览图像和用户界面,会接收到更多的图像,直到接下来的步骤中捕获的图像具有足够的重叠为止。在312处,拼接模块209基于满足预定的重叠阈值的重叠,使用捕获设备247捕获并且存储感兴趣的对象的部分的预览图像。在314处,用户界面模块211更新用户界面以指示所捕获的图像的存储。例如,用户界面可以在客户端设备115上从输出设备249简单闪过可听见的快门按下的声音,以指示已捕获图像。在316处,拼接模块209确定是否接收或采样更多的预览图像。如果不需要接收或采样更多的图像,在步骤318,拼接模块209发送感兴趣的对象的部分的图像,以生成单个线性全景图像。如果接收更多的图像,拼接模块209使用步骤312中所存储的图像作为参考图像,重复从步骤304开始的过程。在一些实施例中,拼接模块209响应于用户输入,并且当用户停止提供预览图像时,生成全景图像。在一些实施例中,拼接模块209向用户提供是否捕获足够的图像来形成全景图像的反馈。例如,拼接模块209可以接收图像捕获的样式的输入,并且引导用户预览或提供接下来的图像。换言之,方法300可以向用户提供进行何样的垂直和水平移动来提供预览图像的额外反馈。
图4A-图4B示出了用于单个线性全景图像的捕获一系列的图像的方法的另一个实施例的流程图400。在402处,拼接模块209从捕获设备247接收感兴趣的对象的一部分的图像。在404处,拼接模块209确定图像的特征。在406处,用户界面模块211在捕获设备247的显示器上呈现包括感兴趣的对象的图像的当前预览图像的用户界面。当前预览图像可以是通过持续且直接投影由镜头形成的在客户端设备115内包括的图像传感器之上的图像而在客户端设备115的显示屏上生成的实时预览。
在408处,拼接模块209将图像的特征与捕获设备247的显示器上的感兴趣的对象的当前预览图像进行动态比较。在410处,拼接模块209沿着感兴趣的对象和图像与当前预览图像之间的重叠,确定捕获设备247的移动方向。在412处,拼接模块209确定图像与当前预览图像之间的重叠是否满足预定的重叠阈值。例如,预定的重叠阈值可以被设置为百分之六十。在414处,用户界面模块211更新用户界面,以在显示器上提供反馈,从而引导捕获设备247的移动产生满足预定重叠阈值的重叠。在416处,拼接模块209与其他模块(诸如偏离计算模块213)一起确定捕获设备247在方位的三个轴中的一个轴上倾斜。例如,方位的三个轴可以是X轴、Y轴和Z轴。在418处,用户界面模块211更新用户界面,以在显示器上提供反馈,从而矫正捕获设备247在方位的三个轴中的一个轴上的倾斜。
在420处,拼接模块209使用捕获设备247捕获感兴趣的对象的一部分的接下来的图像。在422处,用户界面模块211更新用户界面以指示所捕获的图像的存储,并且将所存储的图像用作参考图像。在424处,拼接模块209确定是否更多的预览图像被接收或被采样。如果没有更多的预览图像被接收或被采样,在步骤426,拼接模块209发送感兴趣的对象的部分的图像,以生成单个线性全景图像。如果更多的预览图像被接收或被采样,拼接模块209重复从步骤404的过程。
图5A-图5B示出了表示用于单个线性全景图像的捕获一系列图像的方法的另一个实施例的流程图。在502处,拼接模块209从捕获设备247接收感兴趣的对象的一部分的图像。例如,图像可以是货架、区域、艺术作品、路标、景区位置、外空间等的图像。在504处,拼接模块209确定图像的特征。在506处,用户界面模块211在捕获设备247的显示器上呈现包括感兴趣的对象的当前预览图像的用户界面。在508处,拼接模块209将图像的特征与捕获设备247的显示器上感兴趣的对象的当前预览图像进行动态比较。在510处,拼接模块209基于动态比较,沿着感兴趣的对象确定捕获设备247的移动方向。在512处,拼接模块209确定在移动方向上是否存在图像与当前预览图像之间的重叠。例如,移动方向可以是北向、南向、东向或西向。
在514处,用户界面模块211在捕获设备247的显示器上生成第一视觉区分指示符,其中第一视觉区分指示符在显示器上的位置体现重叠的范围。例如,如用户界面所示的视觉区分指示符可以包括但不限于视觉区分形状、大小、颜色、位置、方位、阴影等或者其组合。在516处,拼接模块209接收捕获设备247的移动,以将第一视觉区分指示符安置在显示器的中心的目标区域内,其中目标区域内的第一视觉区分指示符的位置指示满足预定的重叠阈值的重叠。例如,第一视觉区分指示符可以是用户界面上的球或者覆盖同心圆的一部分的眼睑。在518处,拼接模块209与其他模块(诸如偏离计算模块213)一起确定捕获设备247是否在定位的三个轴的一个轴上倾斜。在520处,用户界面模块211在捕获设备247的显示器上生成针对三个轴中的一个轴上的倾斜的第二视觉区分指示符,第二视觉区分指示符在显示器上的位置表示捕获设备247的倾斜的范围。在一个示例中,针对倾斜的第二视觉区分指示符可以是滚动梯度指示符或者覆盖同心圆的一部分的眼睑,从而在客户端设备115上的用户界面的外围处示出倾斜反馈。
在522处,拼接模块209接收捕获设备247的移动,使得第二视觉区分指示符通过使消失、改变格式或从触觉反馈模块219向用户提供提示的方式指示不存在倾斜。在524处,拼接模块209使用捕获设备247捕获感兴趣的对象的部分的接下来的图像,并且将所捕获/所存储的图像用作新参考图像。在526处,用户界面模块211更新用户界面以指示所捕获的图像的存储。在528处,拼接模块209确定是否更多的预览图像被接收或被采样。如果没有更多的预览图像被接收或被采样,在步骤530处,拼接模块209发送感兴趣的对象的部分的图像,以生成单个线性全景图像。如果更多的预览图像被接收或被采样,拼接模块209重复从步骤504的过程。
图6示出了表示用于从图像计算偏离角度的方法600的一个实施例的流程图。更具体地,在图6的上半部示出用于计算图像的偏离角度的方法602。在604处,偏离计算模块213从捕获设备247(例如是客户端设备115的部件)接收感兴趣的对象的一部分的图像。例如,图像可以是货架、区域、艺术作品、路标、景区位置、外空间等的图像。在606处,偏离计算模块213在所接收的图像中执行线检测,以确定平行延伸在原始场景中的至少两条线,即使由于透视变形这些线在图像中并不平行。在608处,偏离计算模块213针对图像中检测到的每条线计算线参数化。线参数化能够通过包括数学方法和图像处理方法的各种方法进行实现,示例包括确定检测到的每条线的起点和终点或者针对每条线确定点和斜率。在一些可选实施例中,在610处,线参数化数据可以被嵌入到图像的元数据之中,诸如在图像的可交换图像文件格式(EXIF)的首部,或者可以将线参数化数据存储在数据存储器243中。在612处,偏离计算模块213使用线参数化数据计算图像的偏离角度。可以参考图23和图24,通过使用下文中所述的基本三角法计算偏离角度。在614处,偏离计算模块213可以接着将偏离角度和有关数据提供给其他模块用于进一步的处理,诸如偏离用户界面模块217或者变形校正模块215。在一些实施例中,偏离计算模块213能够调整预览图像,并且去除一部分偏离角度误差。在616处,偏离计算模块213将数据提供给偏离用户界面模块616。在618处,偏离计算模块213将数据提供给变形修正模块215。
图7示出表示当捕获图像时用于向用户提供指示符以修正偏离数据的方法616的实施例的流程图。在702处,偏离用户界面模块217从偏离计算模块213接收偏离数据702。在704处,偏离用户界面模块217计算用于偏离数据的指示符的数据。指示符可以是用于覆盖用户界面上的同心圆的一部分的眼睑指示符,诸如当偏离数据展现出偏离误差增大时,眼睑指示符覆盖同心圆的更大的部分,而当偏离数据展现出偏离误差减小时,眼睑指示符覆盖同心圆的更小的部分。在一些实施例中,偏离用户界面模块217可以实现遮挡同心圆的一部分的眼睑指示符。参考图19-图28在下文中描述偏离用户界面217所生成的示例用户界面。在706处,偏离用户界面模块217为了向用户表示,将眼睑指示符并入用户界面。偏离用户界面可以是辅助偏离误差校正的独立的用户界面,或者偏离用户界面可以被并入用户界面模块211,以包括其他倾斜指示符,诸如图13和图14中所显示的球型界面。在710处,偏离用户界面模块217从第二图像接收第二偏离数据。在712处,偏离用户界面217确定第二偏离数据是否在阈值之上。在714处,当第二偏离数据在阈值之上时,触觉反馈模块219可以使用输出设备249来提醒用户偏离误差在阈值之上。输出设备249提醒用户,例如通过产生客户端设备115的震动或听觉信号。
图8示出了表示针对图像执行变形校正的方法618的一个实施例的流程图。在802处,变形校正模块215从偏离计算模块213接收偏离数据,并且能够独立于偏离用户界面模块217实现。在804处,变形校正模块215使用偏离数据来检测图像的线,从而计算针对检测到的线的消失点。通过使用不平行的线束来计算消失点,因为图像中存在偏离误差,所以偏离误差所引入的变形会导致原始图像中平行的线会在图像中看起来不平行。当将各线延长时,不平行的线会相交于消失点。在806处,变形校正模块215基于消失点计算去偏斜变换。在808处,变形校正模块215使用去偏斜变换针对图像执行变形校正,以创建反映原始情景的平行线的图像,并且当客户端设备115捕获图像时,去除不正确的偏离倾斜所引入的至少一部分的偏斜误差。
如图9所示,示意图表示用于捕获货架903的图像的示例。用户901可以使用包括图像识别应用103的客户端设备115来捕获货架903的图像。货架903可以是能够保存产品的任何货架,或者货架可以由区域、艺术作品、路标、景区位置、外空间等代替。当用户901使用客户端设备115时,基于客户端设备115的用户的位置,会引入各种倾斜误差。
在一些实施例中,图像识别应用103接收来自客户端设备115的请求来捕获感兴趣的对象的图像。例如,图像可以是货架、区域、艺术作品、路标、景区位置、外空间等的图像。客户端设备115捕获图像,并将其提供给图像识别应用103。图像识别应用103指示用户界面模块211生成用于使用客户端设备115捕获图像的用户界面。
如图10所示,图1000表示根据客户端设备115的位置,会被引入所捕获的图像的三种倾斜。客户端设备115可以绕Y轴1001转动,将倾斜误差引入图像。客户端设备115也可以绕X轴1003转动,将俯仰误差引入图像。最后,客户端设备115可以绕Z轴1005转动,将滚动误差引入图像。
图11示出客户端设备115和可以引入到由客户端设备115捕获的图像中的三种不同倾斜的示例显示1100。客户端设备115可以包括方位传感器245(未示出),能够使用方位传感器245检测x方向1103和z方向1105上的倾斜。但是,在一些实施例中,当方位传感器245是客户端设备115的内部加速度仪时,因为内部加速度仪不管对于客户端设备115的偏离倾斜的每个位置的实际位置而返回相同的角度,所以方位传感器245(例如,内部加速度仪)不能检测y方向1101上的倾斜。
用户界面
图12的图形表示1200中的示例用户界面包括:由角标记1202定义的框架1201,用于将客户端设备115与图像捕获的货架对齐;位于显示中心的货架中心处的圆的目标轮廓1203;陀螺仪水平线1217,带有位于框架1201的外围的倾斜参考箭头1211a和1211b;陀螺仪垂直线1215,带有位于框架1201的外围的倾斜参考箭头1209a和1209b;以及较大同心圆1204的外围上的倾斜参考箭头1213a和1213b。倾斜参考箭头1209、1211和1213可以用于指示货架的预览图像1207在捕获图像之前是否偏离中心和/或倾斜。
如图13的示例所示,图形表示1300表示用户界面,该用户界面包括球1301和出现在如客户端设备115上所显示货架的当前预览图像上的重影图像之上的目标轮廓1303。用户的目标在于通过将客户端设备115进行移动以实现与重影图像对齐,将球1301对齐并且将球1301放置在用户界面上的目标轮廓1303之内。用户界面1300包括具有倾斜参考箭头1311的陀螺仪水平线1317和具有倾斜参考箭头1307的垂直线1315。用户界面也可以包括当倾斜增大时遮挡框架的一部分的倾斜指示符1309和1313。
在另一个示例中,如图14所示,图形表示1400表示包括较小的同心圆的目标轮廓1412的用户界面,其中的同心圆位于如客户端设备115所显示的货架单元的当前预览图像1402之上。用户界面包括基于所接收的倾斜信息显示出的球1410。当用户转动客户端设备115并且减小预览图像中的倾斜误差时,球1410会移动到目标轮廓1412之内,向用户发出正在减小倾斜的信号。用户界面也可以包括用于在当前预览图像1404之下显示捕获到的图像的马赛克预览的区域1406。马赛克预览可以基于添加到其的货架单元的捕获到的图像逐渐变大。区域1406内所包括的马赛克预览能够根据客户端设备115的移动方向,被推向区域1406的右边或区域1406的左边。区域1406中的马赛克预览(当前空闲)包括当客户端设备115捕获货架单元的第一图像时可以被替换的空闲缩略图像的标记着“4”的轮廓1408。
可以接收货架的图像用于识别,并且货架的图像可以包括多个感兴趣的项目。例如,图像可以包括零售商店中的货架上的包装产品的图像(例如咖啡包装、早餐燕麦盒、苏打饮料瓶等等)。包装的产品可以包括在其表面上印刷的文本和图形信息,以将其与货架上的其他货品相区分。在一个示例中,客户端设备115的显示器响应于用户触拍屏幕,可以闪烁以指示捕获了图像。在一些实施例中,图像识别应用103从图像识别特征集和出现每个特征的图像中的点的相对位置(例如,所识别出的特征的位置)。在一些实施例中,客户端设备115将所捕获的图像和所识别出的特征集存储在高速缓存中。在其他的实施例中,客户端设备115将所捕获的图像发送到识别服务器101。
为了使用一系列图像创建线性全景图像,用户可以在任何方向上移动客户端设备115,同时保持与感兴趣的对象平行,以捕获跟随第一图像的接下来的图像。例如,客户端设备115可以从北、南、东或西向上移动,同时保持与货架单元平行,以捕获一系列图像中的其他图像。在一些实施例中,图像识别应用103接收用户针对用于捕获一系列图像的图像捕获的样式的选择。图像识别应用103基于图像捕获的所选择的样式,指示用户界面模块211经由客户端设备115向用户提供如何捕获一系列图像中的下一个图像的引导。
在一个实施例中,图像捕获的所选择的样式可以是如图15所示的蜿蜒扫描样式。在蜿蜒扫描样式中,图像捕获的顺序可以在顶部与底部之间或从左向1502或者从右向左1504变换,同时客户端设备115在水平方向(或垂直方向)上与感兴趣的对象平行地移动。图像识别应用103可以指示用户界面模块211生成用于引导用户移动客户端设备115的用户界面,例如,客户端设备115首先向下(或向上)移动到感兴趣的对象,随后移动到感兴趣的对象的右侧(左侧),随后向上(或向下)移动到感兴趣的对象,随后移动到感兴趣的对象的右侧(左侧),并且再次向下(或向上)移动到感兴趣的对象,以便跟随蜿蜒的扫描样式。图像识别应用103可以在客户端设备115的每次移动的结束处接收所捕获的感兴趣的对象的图像。
在另一个实施例中,图像捕获的所选择的样式可以是光栅扫描样式。光栅扫描样式通过沿着感兴趣的对象一次一条线地渐进移动客户端设备115,来覆盖感兴趣的对象的图像捕获。图像识别应用103指示用户界面模块211在客户端设备115上生成用于引导用户移动的用户界面。例如,用户界面可以指示客户端设备115在一条线上从左向右(或从右向左)移动到感兴趣的对象,随后在线的结束处向下(或向上)移动到感兴趣的对象,并且在下一条线上再次从左向右(或从右向左)开始移动到感兴趣的对象,以便跟随光栅扫描样式。图像识别应用103可以在客户端设备115从左向右(或从右向左)每次移动的结束处接收所捕获的感兴趣的对象的图像。
在其他实施例中,图像捕获的所选择的样式可以是回场扫描样式(over-and-backscan pattern)。回场扫描样式通过在水平(或垂直)方向上在感兴趣的对象的一部分之上向一端移动客户端设备115并且随后将客户端设备115移动回来以捕获并未覆盖的感兴趣的对象的另一部分,来覆盖感兴趣的对象的图像捕获。图像识别应用103指示用户界面模块211在客户端设备115上生成用于引导用户移动的用户界面。例如,用户界面可以指示客户端设备115从左向右(或从右向左)向一端移动到感兴趣的对象,随后向下(或向上)移动到感兴趣的对象,并且从右向左(或从左向右)移动回开始端,以便跟随回场扫描样式。图像识别应用103接收在客户端设备115从左向右每次移动到一端的结束处、以及在客户端设备115从右向左每次移动并回到开始端处的结束处所捕获的感兴趣的对象的图像。
在一些实施例中,拼接模块209接收图像之间具有一定重叠量的一系列的所捕获的图像。在一些实施例中,图像识别应用103指示用户界面模块211引导用户捕获系列图像中的下一个图像,其中下一个图像与先前捕获到的图像在一定程度上重叠。该重叠可以是用于通过将一系列图像中的每个单独的捕获的图像拼接在一起来创建线性全景的拼接算法所预期的图像之间的重叠的阈值量(例如60%)。在一些实施例中,可以基于拼接算法细微调节图像重叠阈值。例如,拼接算法可以是由下述各项组成的组中的一项或多项:尺度不变特征变换(SIFT)算法、随机采样一致性(RANSAC)算法、渐进采样一致性(PROSAC)算法、RIVR算法等。
在一些实施例中,当客户端设备115指向感兴趣的对象时,图像识别应用103接收由客户端设备115所显示的感兴趣的对象的当前预览图像。当前预览图像可以是通过持续且直接投影由镜头形成的在客户端设备115内包括的图像传感器之上的图像而在客户端设备115的显示屏上生成的实时预览。在一些实施例中,特征提取模块203确定随着客户端设备115沿着感兴趣的对象移动时的相机预览中的图像的图像特征。拼接模块209将感兴趣的对象的先前捕获的图像的所识别出的特征与由客户端设备115正在显示的当前预览图像的特征进行动态比较。拼接模块209识别出先前捕获的图像中的区别性特征,并且随后将它们有效地匹配到当前预览图像的特征,以快速建立图像对之间的对应关系。例如,在图16中,过程1600示出第一图像特征集1602可以为F0,变量“i”可以用于代表最新的先前捕获的图像,则图像特征集可以被表示为“Fi”,并且因此当前图像的图像特征集可以被表示为Fi+1。在一些实施例中,拼接模块209使用相似度函数将先前捕获的图像Fi与当前图像Fi+1进行比较,以生成相似度测量值Si。例如,公式1604可以被表示为sim(Fi,Fi+1)=Si。在公式1606,值Si代表先前捕获的图像Fi与当前图像Fi+1之间的相似度的量。
在一些实施例中,拼接模块209接收来自用户的请求,以在图像捕获样式的序列中断之后,将由客户端设备115所显示的感兴趣的对象的当前预览图像与先前捕获的图像的观察点对齐。例如,用户可以在捕获感兴趣的对象的一部分图像之后被打断,并且不得不离开场景一段时间。用户随后想要在中断之后返回以拍摄感兴趣的对象的随后的图像。在一些情况下,用户不记得他们在图像捕获过程中被打断的位置。在捕获过道上的货架单元的图像的示例中,在与中断前最后的图像被捕获的位置相同的位置处重新开始图像捕获过程是至关重要的。在一些实施例中,针对重叠和/或方向的视觉区分指示符可能不起作用,除非用户从与先前捕获的图像具有良好重叠的位置处重新开始图像捕获过程。
图像识别应用103指示用户界面模块211生成用户界面,所述用户界面将先前捕获的图像作为重影图像,放置在由客户端设备115正在显示的当前预览图像的顶部之上。特征提取模块203确定先前捕获的图像的特征,并且将其存储在高速缓存中,以在捕获过程发生中断时用作参考图像。拼接模块209指示用户界面模块211以更新具有用于重新对齐的视觉区分指示符的用户界面。特征提取模块302确定客户端设备115沿着感兴趣的对象移动时的相机预览中的图像的图像特征。用于重新对齐的视觉区分指示符,如用户界面所示,可以包括但不限于如下方面中的一个或者组合:视觉区分形状、尺寸、颜色、位置、方位、阴影等。例如,用户可以走到沿着感兴趣的对象的位置(该位置是用户理解的最后图像被先前捕获的位置),并且使用在当前预览图像之上的重影图像的重叠来开始重新对齐过程。拼接模块209通过将先前捕获的图像的特征与客户端设备的相机预览所显示的图像框架有关的图像特征进行动态比较来重新对齐捕获用户界面。拼接模块209将用户界面上用于重新对齐的视觉区分指示符的位置与客户端设备115的移动相结合。拼接模块209将感兴趣的对象的先前捕获的图像的所识别的特征与当前预览图像在客户端设备115的移动方向上进行动态比较。
在一些实施例中,拼接模块209接收来自用户的请求,以在图像捕获样式的序列中断之后,将由客户端设备115所显示的感兴趣的对象的当前预览图像与先前捕获的图像的观察点对齐。例如,用户可以在捕获感兴趣的对象的一部分图像之后被打断,并且不得不离开场景一段时间。用户随后想要在中断之后返回以拍摄感兴趣的对象的随后的图像。在一些情况下,用户不记得他们在图像捕获过程中被打断的位置。在捕获过道上的货架单元的图像的示例中,在与中断前最后的图像被捕获的位置相同的位置处重新开始图像捕获过程是至关重要的。在一些实施例中,针对重叠和/或方向的视觉区分指示符可能不起作用,除非用户从与先前捕获的图像具有良好重叠的位置处重新开始图像捕获过程。
拼接模块209指示用户界面模块211生成用户界面,所述用户界面将先前捕获的图像作为重影图像,放置在由客户端设备115正在显示的当前预览图像的顶部上。拼接模块209确定先前捕获的图像的特征,并且将其存储在高速缓存中,以在捕获过程发生中断时用作参考图像。拼接模块209指示用户界面模块211以更新具有用于重新对齐的视觉区分指示符的用户界面。拼接模块209确定客户端设备115沿着感兴趣的对象移动时的相机预览中的图像的图像特征。用于重新对齐的视觉区分指示符,如用户界面所示,可以包括但不限于如下方面中的一个或者组合:视觉区分形状、尺寸、颜色、位置、方位、阴影等。例如,用户可以走到沿着感兴趣的对象的位置(该位置是用户理解的最后图像被先前捕获的位置),并且使用在当前预览图像之上的重影图像的重叠来开始对齐过程。拼接模块209通过将先前捕获的图像的特征与客户端设备的相机预览所显示的图像框架有关的图像特征进行动态比较来重新对齐捕获用户界面。拼接模块209将用户界面上用于重新对齐的视觉区分指示符的位置与客户端设备115的移动相结合。拼接模块209将感兴趣的对象的先前捕获的图像的所识别的特征与当前预览图像在客户端设备115的移动方向上进行动态比较。例如,先前捕获的图像的图像特征集可以被表示为F0。针对预览图像框架所确定的图像特征集可以被表示为“Fi”。当客户端设备115沿着感兴趣的对象移动以便与先前捕获的图像重新对齐时,拼接模块209针对每个预览图像框架生成图像特征。如果Fi中的变量“i”等于5(即不计入先前捕获的图像已捕获五个预览图像框架,第五个捕获的图像框架是F5),随后拼接引擎使用相似度函数将先前捕获的图像F0与当前预览图像F5进行比较,以生成相似度测量值S5。例如,相似度函数可以被表示为sim(F0,F5)=S5。值S5代表两个图像彼此相似的程度,并且指示用户必须沿着感兴趣的对象移动多远以与先前捕获的图像重新对齐。相似度测量值S5指示与作为参考的先前捕获图像F0的比较,而不是与图像特征集F5之前的最后的图像特征集F4的比较。拼接模块209随后将移动方向上的动态比较转换为改变用户界面上视觉区分指示符的位置,使得其向用户提供如何移动客户端设备115以实现与先前捕获图像的适当重新对齐的反馈。在一些实施例中,拼接模块209接收来自用户界面模块211的重新对齐成功的确认。拼接模块209随后指示用户界面模块211返回到引导用户如何捕获一系列图像中的下个图像的用户界面。
如图17的示例所示,图形表示1700表示用于生成针对重新对齐的视觉区分指示符的重新对齐过程的实施例。在图17中,图形表示1700包括用于基于用户移动客户端设备115改变图像框架(F1至F4)的相机预览框架1704。图形表示1700也包括每个预览图像框架1704的特征与先前捕获图像的之间所计算的相似度测量函数1706。先前捕获图像的图像特征集可以被表示为F0。针对预览图像框架所确定的图像特征集可以被表示为“Fi”。当客户端设备115沿着感兴趣的对象移动以便与先前捕获的图像重新对齐时,拼接模块209针对每个预览图像框架生成图像特征。如果Fi中的变量“i”等于5(即,不计入先前捕获的图像已捕获五个预览图像框架,第五个预览图像框架是F5),随后拼接引擎使用相似度函数将先前捕获的图像F0与当前预览图像F5进行比较,以生成相似度测量值S5。例如,相似度函数可以被表示为sim(F0,F5)=S5。值S5代表两个图像彼此相似的程度,并且指示用户必须沿着感兴趣的对象移动多远以与先前捕获的图像重新对齐。相似度测量值S5指示与作为参考的先前捕获图像F0的比较,而不是与图像特征集F5之前的最后的图像特征集F4的比较。用户引导模块207随后将移动方向上的动态比较转换为改变用户界面上视觉区分指示符的位置,使得其向用户提供如何移动客户端设备115以实现与先前捕获图像的适当重新对齐的反馈。在一些实施例中,拼接模块209接收来自用户界面模块211的重新对齐成功的确认。图像识别应用103随后指示用户界面模块211返回到引导用户如何捕获一系列图像中的下个图像的用户界面。在一些实施例中,拼接模块209使用图像重叠阈值作为参数沿着当前预览图像和先前捕获的图像之间的动态特征比较,以经由客户端设备115上的用户界面向用户提供引导和/或反馈。例如,拼接模块209使用图像重叠阈值来设置相似度值“V”为0.6。在一些实施例中,当用户在捕获前一个图像之后在与感兴趣的对象平行的一个方向(例如北、南、东或西)上移动客户端设备115时,拼接模块209可以接收包括客户端设备115的移动的数据。在一些实施例中,拼接模块209基于在感兴趣的对象的先前捕获的图像与由客户端设备115所显示的当前预览图像之间的动态特征比较,确定客户端设备115的移动的方向。拼接模块209确定在先前捕获的图像和当前预览的图像之间在客户端设备115的移动方向上是否存在重叠。拼接模块209响应于客户端设备115的移动方向上的确定的重叠,指示用户界面模块211生成用于用户界面上的重叠的视觉区分指示符。重叠的视觉区分指示符,如用户界面所示,可以包括但不限于如下方面中的一个或者组合:视觉区分形状、尺寸、颜色、位置、方位、阴影等。
拼接模块209将用户界面上用于重新对齐的视觉区分指示符的位置与客户端设备115的移动方向相结合。拼接模块209继续将感兴趣的对象的先前捕获的图像的所识别出的特征与客户端设备115的移动方向上的当前预览图像进行动态比较。拼接模块209将移动方向上的动态比较转换为改变用户界面上视觉区分指示符的位置,其向用户提供如何移动客户端设备115以实现满足预定重叠阈值的最优重叠的反馈。例如,如果先前捕获图像和当前预览图像之间的重叠在移动方向上满足预定的图像重叠阈值(即相似度值“V”=60%),则用于重叠的视觉区分指示符在用户界面上的位置发生改变以指示已经符合这样的条件。重叠的视觉区分指示符可以移动到几何形状(例如圆形、方形或多边形)的边界区域内,这说明已经满足了最优重叠的条件。在一些实施例中,当重叠的视觉区分指示符在范围内时,例如在几何形状的内部时,拼接模块209使用容差值“T”以及相似度值“V”来进行计算。在一些实施例中,拼接模块209使用容差值“T”以允许在捕获图像之前对于多少针对重叠的视觉区分指示符需要处于几何形状的内部存在一点容差。换言之,在可以捕获图像之前,视觉区分指示符无需完全适配在几何形状之内。在一些实施例中,拼接模块209指示用户界面模块211在用户界面上生成进度状态条,以指示在先前捕获图像和当前预览图像之间出现的重叠的程度,直到满足图像重叠阈值为止。在其他实施例中,拼接模块209响应于满足图像重叠阈值的重叠,将捕获命令发送到客户端设备115以捕获图像。拼接模块209使用距离测量函数以及相似度函数来确定捕获图像的时间。距离测量函数代表从图像F0(即S0)到图像Fi(即Si)的所有相似度测量值“S”的总和,并且可以被表示为dist(Si)。距离测量函数确定两个图像F0和Fi彼此有多接近。距离测量函数确定相似度测量值Si是否在相似度“V”的容差值“T”的范围内,使得满足以下公式(V-T)<dist(Si)<(V+T)。如果满足该条件,则拼接模块209将捕获命令发送到客户端设备115以捕获图像。随着距离测量函数dist(Si)接近位于容差值“T”的范围内,能够使用距离测量函数dist(Si)来产生用于表示重叠的视觉区分指示符正在接近几何形状以适配在用户界面上的几何形状的边界区域内的值。例如,这可以转换为用于重叠的视觉区别指示符在客户端设备115的用户界面上显现得越来越不透明。
在一些实施例中,图像识别应用103接收跟随感兴趣的对象的第一捕获图像的随后捕获图像,第一捕获图像与捕获图像之间略微倾斜或不倾斜。在图18中,图像识别应用103指示用户界面模块211生成用户界面1800以向用户呈现拼接的图像1801以及用于显示出单个图像的按钮1803。略微倾斜或不倾斜的重叠图像是拼接算法所期望的,用于创建高分辨率线性全景图像。
在一些实施例中,图像识别应用103接收陀螺仪传感器数据(例如从方位传感器245),该陀螺仪传感器数据包括在方位的三个轴的任何一个轴上的客户端设备115的倾斜。例如,由俯仰(pitch)参数来定义X轴上的转动的角度,并且由滚动(roll)参数来定义Z轴上的转动的角度。陀螺仪传感器数据可以由方位传感器245生成,诸如客户端设备115内所包括的陀螺仪传感器可以测量沿着X轴和Z轴的转动的角度。基于针对X轴和Z轴的陀螺仪传感器数据以及使用偏离计算模块213的计算上的Y轴的陀螺仪传感器数据,图像识别应用103确定当指向感兴趣的对象时客户端设备115是否在方位的各个轴的一个轴上倾斜。响应于客户端设备115在方位的各个轴的一个或多个轴上倾斜,用户界面模块211和偏离用户界面模块217在客户端设备115的用户界面上生成倾斜的视觉区分指示符。用户界面上的倾斜的视觉区分指示符的位置可以与客户端设备115的移动相结合,使得其在三个轴的任何一个轴上存在与客户端设备115相关联的倾斜时能够通过反馈进行指示。
如图19所示,图形表示1900分别且共同地说明用于显示沿着三个轴的每个轴的倾斜误差的三个不同的用户界面1907、1909和1911。沿X轴的俯仰误差1901以较大的同心圆1906内呈现的水平眼睑指示符1908的形式被示出在用户界面1907上。随着俯仰误差1901增大,水平眼睑指示符1908将会覆盖较大的同心圆1906的更大的部分。随着俯仰误差1901减小,水平眼睑指示符1908将会覆盖较大的同心圆1906的更小的部分。沿Y轴的偏离误差1903以较小的同心圆1912内呈现的垂直眼睑指示符1910的形式被示出在用户界面1909上。随着偏离误差1903增大,垂直眼睑指示符1910将会覆盖较小的同心圆1912的更大的部分。随着俯仰误差1903减小,垂直眼睑指示符1910将会覆盖较小的同心圆1912的更小的部分。沿Z轴的滚动误差1905以较大同心圆1916外的球指示符1913和较大同心圆1916内、朝向球指示符1913的箭头1915。随着滚动误差增大,球指示符1913沿着较大的同心圆1916的外侧移动,而箭头1915继续跟随球指示符1913。随着滚动误差减小,球指示符1913沿着较大的同心圆1916的外侧向较大的同心圆1916的顶部移动,而箭头1915继续跟随球指示符1913。三个这些不同的用户界面都可以被分开地呈现在用户界面上,或者以不同的组合一起呈现在同一个用户界面上。而且,需要理解的是,不同的界面组件可替换地被用于指示偏离、俯仰和滚动中的任何一个。
如图20的示例所示,图形表示2000说明客户端设备115如何引入不同水平的偏离误差。产品货架的图像由图像识别应用103接收。第一图像2001、第二图像2003、第三图像2005和第四图像2007都是由图像识别应用103在不同水平的倾斜误差下接收的。如果不重新拍摄图像2001、2003、2005和2007,当拼接模块209将第一图像2001、第二图像2003、第三图像2005和第四图像2007拼接在一起形成高分辨率线性全景图像时,将不同程度的变形引入所得到的拼接图像2009中。以内部加速度仪或客户端设备115上其他传感器形式存在的方位传感器245能够检测俯仰误差和滚动误差,并且方位传感器245能够用于在将图像呈现在用户界面模块211中之前校正俯仰误差和滚动误差。
如图21的示例所示,图形表示2100表示执行线检测的方法。偏离计算模块219分析图像903以检测线2101的子集。偏离计算模块219需要至少两条检测到的线,在本示例中顶部线2103和底部线2107是足够的,而同时检测到的中间线2105针对偏离计算是不必要的。线2101可以通过任何方法进行检测,一个示例是霍夫(Hough)变换。在图像中,由于来自偏离误差的变形,顶部线2103和底部线2107是不平行的线,即使这两条线在原始场景中平行。在偏离计算模块219中检测并确定线2103和线2107之间的位于点A 2109处的高度和线2103和线2107之间的位于在点B 2111处的高度。线2103和线2107可以通过针对每条线确定起点和终点或者针对每条线的点和斜率的确定来进行参数化。现在参考图22,示出线束2103、2105和2107延长出图像以外来确定消失点2201。可以将消失点2201发送到变形校正模块215,用于通过基于消失点2201计算去偏斜变换进行图像的变形校正。使用去偏斜变换,变形校正模块215可以使用图像处理来执行使用去偏斜变换的图像的校正。在可选实施例中,可以将消失点2201保存在数据存储器243中用于其他目的。
如图23的示例所示,图形表示2300表示用于在线检测和计算出参数化之后计算距离的示意图。在客户端设备115处,拍摄货架903的图像。基于镜头的方向确定镜头平面2301,使用参考图22的上述的线检测和参数化来确定点A和点B。客户端设备115处的点C能够用于确定C与A之间的长度LCA 2315。客户端设备115(点C)能够用于确定C与B之间的长度LCB 2317。点D和点E具有各自的长度LDA 2303和LEB 2305。长度LDA 2303和长度LEB 2305反比于图21中的点A处的高度和点B处的高度。相对长度LCA 2315和LCB 2317与LDA 2303和LEB2305相同。通过将LCB 2317归一化到1(LCB=1)能够确定LCA 2315的值。则LCA 2315等于图21中的点B的高度除以点A的高度(LCA=HB/HA)。
如图24的方法所示,图形表示2400表示确定偏离角度的实施例。参考图23如上所述确定从客户端设备115在C点处到点A处的长度和从客户端设备115在C点处到点B处的长度。使用这些确定出的长度,可以确定长度LAB。角A(θA)2407是货架903与点C和点A之间的线的夹角。角B(θB)2409是货架903与点C和点B之间的线的夹角。角D(θD)2401是从货架903延长到点C的垂线2411与从点C到点A的线之间的夹角。视场角(θFOV)2403是从点C到点A的线与从点C到点B的线之间的夹角。偏离角(θyaw)2405是垂线2411与从点C延长到点A和点B之间的中点的中点线2413之间的夹角。通过使用三角法可以确定偏离角(θyaw)2405的值。通过余弦定理,点A到点B的长度(LAB)等于长度LCA 2315平方加上长度LCB 2317平方加上2乘以LCA2315乘以LCB 2317乘以视场角(θFOV)2403的余弦的结果的平方根,如等式所示:LAB=sqrt[LCA 2+LCB 2+2LCA LCBcosθFOV]。通过正弦定理,角A(θA)2407正弦除以从客户端设备115到点B的长度(LCB)等于视场角(θFOV)2403的正弦除以从点A到点B的长度(LAB)。如等式所示:sinθA/LCB=sinθFOV/LAB。变换该公式而创建公式θA=arcsin[(LCB/LAB)sinθFOV]。在做完这些计算和代换之后,角D(θD)2401等于90度减去角A(θA)2407。如等式所示:θD=(90°-θA)。因此,偏离角(θyaw)2405等于角D(θD)2401减去视场角(θFOV)2403除以2。如等式所示:θyaw=θD–(θFOV/2.0)。图24示出用于确定偏离角的数学公式的示例实施例。需要理解的是可以将其他三角公式和数学工具用于其他的实施例中以计算偏离角。
如图25A-图25D的示例所示,图形表示示出用于偏离校正的示例用户界面的实施例。在图25A中,图形表示示出无偏离误差反馈的用户界面2500。当存在偏离时,用户界面将较小的同心圆2501显示在出现垂直眼睑指示符的位置。因为较小的同心圆2501未显示垂直眼睑指示符数据2503,所以用户界面2500未检测到偏离。
在图25B中,用户界面2505通过显示较小同心圆2501内的一小部分来表示小的偏离误差反馈,由垂直眼睑指示符2507所覆盖的小部分用于向用户指示客户端设备115在Y轴方向上略微斜向中心的左侧。随着用户通过将客户端设备115沿着Y轴移动回到中心来校正该偏离误差,垂直眼睑指示符2511将会减小并且用户界面会回到图25A所示的状态。需要理解的是,在一些实施例中,阴影能够如图25B-图25D所示从左到右而不是从右到左增大。而且,除该阴影以外的其他视觉指示符诸如颜色、十字交叉等可以用在垂直眼睑指示符2507中以指示偏离误差的量。
在图25C中,用户界面2509通过示出较小的同心圆2501内的中等部分来示出中等的偏离误差反馈,其中中等的部分由垂直眼睑指示符2511所覆盖用于向用户指示客户端设备115在Y轴上偏向中心的左边。随着用户通过将客户端设备115沿着Y轴移动回到中心来校正该偏离误差,垂直眼睑指示符2511将会减小并且用户界面会回到图25A所示的状态。
在图25D中,用户界面2513通过显示较小同心圆2501内的一大部分来表示大的偏离误差,由垂直眼睑指示符2515所覆盖的大部分用于向用户指示客户端设备115在Y轴方向上较大程度地斜向中心的左侧。随着用户通过将客户端设备115沿着Y轴移动回到中心来校正该偏离误差,垂直眼睑指示符2515将会减小并且用户界面会回到图25A所示的状态。垂直眼睑指示符2515可以基于所计算的偏离角度在左方向或右方向上覆盖较小同心圆2501的任何部分,并且不限于图25A-图25D中所述的垂直眼睑指示符的三个示例。
如图26A-图26E的示例所示,图形表示示出对于图像进行预览并且在将其与先前图像进行拼接之前,在所预览的图像上显示偏离误差。在图形表示中,背景被拼接在一起以表示创建出的全景图像中的先前图像的示例,而图形用户界面2601出现在具有针对偏离误差的用户界面的前景中,其中用户界面位于前景图像的顶部之上。在图26A中,图形表示2600表示未检测到偏离误差的用户界面,如较小同心圆2602不存在垂直眼睑指示符2603所示。示例用户界面也包括球指示符2605以协助客户端设备115的用户调整接下来的图像以正确地捕获无任何偏离误差的拼接所需要的接下来的图像。在2604处,显示出y轴,客户端设备115相对该轴进行转动以创建偏离误差。如上所注意的,需要理解的是在一些实施例中用于指示偏离误差的阴影能够如图26B-图26E中所示从左到右而不是从右到左增大。而且,除该阴影以外的其他视觉指示符诸如颜色、十字交叉等可以用在垂直眼睑指示符2603中以指示偏离误差的量。
在图26B中,图形表示2606表示检测到小的偏离误差的用户界面。客户端设备115沿着Y轴2604斜向中心的左边,并且存在覆盖较小同心圆2602的小部分的垂直眼睑指示符2609。随着用户将客户端设备115朝向Y轴的中心2604转动回来而去除偏离误差,垂直眼睑指示符2609将会覆盖较小的同心圆2602更小的部分,以便向用户指示偏离误差正在减小。
在图26C中,图形表示2611表示检测到大的偏离误差的用户界面。客户端设备115沿着Y轴2604较大程度上地斜向中心的左侧,并且存在覆盖较小同心圆2602的大部分的垂直眼睑指示符2613。随着用户将客户端设备115朝向Y轴2604的中心转动回来而去除偏离误差,垂直眼睑指示符2613将会覆盖较小的同心圆2602少一些的部分,以便向用户指示用户偏离误差正在减小。
在图26D中,图形表示2615表示检测到小的偏离误差的用户界面。客户端设备115沿着Y轴2604斜向中心的右侧,并且存在覆盖较小同心圆2602的小部分的垂直眼睑指示符2617。随着用户将客户端设备115朝向Y轴2604的中心转动回来而去除偏离误差,垂直眼睑指示符2617将会覆盖较小的同心圆2602少一些的部分,以便向用户指示偏离误差正在减小。
在图26E中,图形表示2619表示检测到大的偏离误差的用户界面。客户端设备115沿着Y轴2604较大程度上地斜向中心的右侧,并且存在覆盖较小同心圆2602的小部分的垂直眼睑指示符2621。随着用户将客户端设备115朝向Y轴2604的中心转动回来而去除偏离误差,垂直眼睑指示符2621将会覆盖较小的同心圆2602少一些的部分,以便向用户指示偏离误差正在减小。
如图27的示例所示,图形表示2700表示显示用于向用户反馈的俯仰误差的用户界面。在用户界面中,存在较大的同心圆,其上存在水平眼睑指示符以向客户端设备115的用户指示俯仰误差。用户界面2701不存在水平眼睑指示符2705,向用户指示俯仰误差在可接受的水平之下。也存在球指示符2703以引导用户拍摄用于拼接全景图像的接下来的图像。在用户界面的第二示例2707中,随着客户端设备115从X轴向下倾斜,检测到少量的俯仰误差,而较大同心圆的小部分由水平眼睑指示符2709所覆盖以指示客户端设备115的用户存在俯仰误差。随着用户将客户端设备115从X轴向上倾斜而减小俯仰误差,水平眼睑指示符可以减少所覆盖的较大同心圆的部分。在用户界面的第三示例2711中,随着客户端设备115从X轴向下倾斜,检测到大量的俯仰误差,而较大同心圆的大部分由水平眼睑指示符2709所覆盖以指示客户端设备115的用户存在俯仰误差。随着用户将客户端设备115从X轴向上倾斜而减小俯仰误差,水平眼睑指示符可以减少所覆盖的较大同心圆的部分。随着俯仰误差偏离,基于俯仰偏差,图像的垂直度降低而图像的一部分是变形的。如果未减小俯仰误差,这些变形的图像在被拼接起来时会创建变形的全景图像。水平眼睑指示符2709可以沿着X轴在向上或向下的方向上基于所计算的俯仰角度覆盖较大同心圆的任何部分,并且不限于图27中所述的水平眼睑指示符2709的各个示例。
在图28中,图形表示2800表示包括针对偏离、俯仰和滚动指示符的指示符的示例用户界面。垂直眼睑指示符2801存在于较小同心圆2807内以指示用户在预览图像中检测到偏离误差。随着用户减小偏离误差,垂直眼睑指示符2801覆盖较小同心圆2807的更小的一部分;随着用户增大偏离误差,垂直眼睑指示符覆盖较小同心圆2807的更大的一部分。触觉反馈(未示出)也可以并入用户界面,使得当检测到偏离误差时,客户端设备115通过变调、振动或其他指示的触觉方法向用户指示所检测到的误差。可替换地,触觉反馈可以当偏离误差在阈值以下时向用户指示,提醒用户可以捕获图像。水平眼睑指示符2805可以存在于较大的同心圆2809内以向用户指示在预览图像中检测到俯仰误差。随着用户减小俯仰误差,垂直眼睑误差2805覆盖较大同心圆2809的更小的一部分,而随着用户增大俯仰误差,水平眼睑指示符覆盖较大同心圆2809的更大的一部分。触觉反馈也可以并入用户界面,使得当检测到俯仰误差时,客户端设备115通过变调、振动或其他指示的方法向用户指示所检测到的误差。可替换地,触觉反馈可以当俯仰误差在阈值以下时向用户指示,提醒用户可以捕获图像。球和箭头指示符2803存在于用户界面上以指示滚动误差,并且作为用于捕获接下来的预览图像的引导。随着滚动误差增加,球和箭头指示符2803会移动以指示滚动误差的增大,并且提醒用户将球和箭头移动到较大同心圆的顶部的位置处。可替换地,球指示符2803可以是如何在用于拼接的图像的系列中对齐接下来的图像的指示符。随着用户将较小同心圆2807向着球指示符2803移动时,拼接的接下来的图像所需要的预览图像与用户将捕获的实际图像将是相同的。在一些实施例中,水平线指示符2811可以存在于用户界面以指示滚动误差。随着滚动误差在一个方向上增大,水平线指示符2811绕较小同心圆2807的中心转动,向用户指示需要减小滚动误差。随着滚动误差减小,水平线指示符2811朝着水平位置转动回来,如图28所示。在该示例用户界面2800中,所有三个指示符都可以出现于针对目标设备的屏幕的中心附近。通过将三个指示符都并入中心附近,随着用户对齐预览图像以捕获用于全景拼接的图像的系列中的接下来的图像,用户会更容易地接收反馈。通过将所有三个指示符都并入,用户能够基于指示符的反馈进行调整,可以捕获具有减小的偏离、俯仰或滚动误差的用于拼接的更高质量的图像,这导致获得更高质量的全景图像。
在一些实施例中,拼接模块209向识别服务器101发送所捕获图像的集合与重叠信息,用于拼接单个线性全景图像。在一些实施例中,拼接模块209将所捕获图像的集合中每个单独图像的所提取的特征与用于识别的电子数据库列表中所存储的那些特征进行比较。拼接模块209识别,例如单个图像中的商品,并使用这样的数据与重叠信息相结合用于将所捕获图像的集合拼接成单个线性全景图像。
已经描述了针对消除相机姿态中偏离误差和偏离用户界面的呈现的算法的系统和方法。在上述方法中,出于解释的目的,阐述了许多具体细节以便提供对上述介绍的技术的彻底理解。但应当理解的是,对于本领域技术人员而言,可以在没有这些具体细节的情况下实现本申请中的技术。在其他示例中,以方框图形式示出了结构和设备,以便避免对说明书造成模糊并便于理解。例如,在上文中主要参照软件和特定硬件在一个实施例中描述了技术。但是,本发明适用于能够接收数据和指令的任何类型的计算系统,并且将信息作为提供服务的任何外围设备的一部分进行呈现。
在本说明书中对“一个实施例”或“实施例”的引用表示与实施例相关联而描述的特定的特征、结构或特性被包括在至少一个实施例中。本说明书中各处出现的词语“在一个实施例中”不一定都指示相同的实施例。
以对计算机存储器内的数据比特进行操作的算法和符号表示的形式呈现了以上描述的详细说明中的一部分。在一些情况下,这些算法描述和表示由数据处理技术领域的技术人员使用,用于将他们工作的实质传递给本领域中的其他技术人员。这样的算法通常被构思为能够得到期望的结果的自身一致的步骤的序列。这些步骤需要针对物理量的物理操作。尽管并非必要,但这些量一般采用能够被存储、传输、组合、比较或进行其他操作的电信号或磁信号的形式。已经证实了在一些情况下主要出于公共使用的原因以比特、值、单元、符号、字符、词语或数字等参照这些信号是有益的。
但应当理解,所有这些和类似词语将关联于适当的物理量,并且仅是被应用于这些量的方便标签。除非在以下论述中另有明确说明,否则应当理解在说明书中使用诸如“处理”、“计算”、“算术”、“确定”或“显示”之类的词语进行的论述是指计算机系统或类似的电子计算设备的动作或处理,其中的计算机系统或类似的电子计算设备操作并将被表示为计算机系统的寄存器和存储器中的物理(电子)量的数据转换为被类似表示为计算机系统的存储器或寄存器或其他这样的信息存储、传输或显示设备中的物理量的其他数据。
本技术还涉及用于执行本文中所述的操作的装置。可以为了所需的目的专门构造该装置,或者其可以包括被选择性地激活的通用计算机或通过在计算机中存储的计算机程序被重新配置。这样的计算机程序可以被存储在计算机可读存储介质中,例如但不限于任何类型的盘片(包括软盘、光盘、CD-ROM和磁盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、包括具有非易失性存储器的USB密钥的闪速存储器或适合于存储电子指令的任何类型的介质,上述存储介质均耦接到计算机系统总线。
一些实施例可以采用完全硬件实施例的形式、完全软件实施例的形式或包括硬件和软件单元两者的实施例的形式。以软件实现实施例,所述软件包括但不限于固件、驻留软件、微代码等。
此外,一些实施例可以采用从计算机可使用或计算机可读介质可访问的计算机程序产品的形式,所述介质提供程序代码,以供由计算机或任何指令执行系统使用或与计算机或任何指令执行系统相关联地使用。出于本说明的目的,计算机可使用或计算机可读介质可以是能够包含、存储、通信、传播或传输程序的任何装置,所述程序由指令执行系统、装置或设备使用或与指令执行系统、装置或设备相关联地使用。
适用于存储和/或执行程序代码的数据处理系统可以包括通过系统总线与存储器单元直接或间接耦接的至少一个处理器。处理器单元包括在程序代码实际执行期间采用的本地存储器、大容量存储器或高速缓存存储器,所述高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器获取代码的次数。
输入/输出(I/O)设备(包括但不限于键盘、显示器、指向设备等)可以被直接或通过中间I/O控制器耦接到系统。
网络适配器还可以耦接到系统,以使得数据处理系统能够通过中间私有或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器和以太网卡仅仅是当前可用类型的网络适配器中的一些。
最后,本文中出现的算法和显示并不内在地涉及任何特定的计算机或其他装置。可用根据本文中的教导与程序一起使用各种通用系统,或可以证明便捷地构件更专门的装置来执行所需的方法步骤。从以上的描述中可以看出各种这些系统所需的结构。此外,并不参照任何特定的编程语言来描述上述技术。应当理解,可以使用各种编程语言来实现在本文中描述的各个实施例的教导。
出于说明和描述的目的已经呈现了实施例的以上描述。其并不意在是穷尽的或将说明书限制到所公开的精确形式。根据上述教导可以进行许多修改和变更。并非由详细的说明书、而是由本申请的权利要求来限制实施例的范围。如本领域技术人员所熟悉的那样,实施例可以被体现为其他具体形式,而不偏离其精神和实质特征。同样,模型、例程、特征、属性、方法或其他方面的特定名称和划分并不是必要或重要的,并且实现说明或其特征的机构可以具有不同的名称、划分和/或格式。此外,如对于本领域一般技术人员而言显而易见的,本说明书的模型、例程、特征、属性、方法或其他方面可以被实现为软件、硬件、固件或这三者的任意组合。而且,在本说明书的组件(其示例是模块)被实现为软件的情况下,组件可以被实现为单独的程序、大型程序的一部分、多个分离的程序、静态或动态的链接库、内核可加载模块、设备驱动器,和/或如计算机编程领域的一般技术人员现在或在未来以每种方式或以任何其他方式已知的那样。此外,说明书并不被限制为任何特定编程语言的实施例,或并不被限制为任何特定的操作系统或环境。相应地,本公开文本意在是说明性的,而非限制说明的范围,其在所附权利要求中进行限制。
本申请基于并要求于2015年9月30日提交的美国临时专利申请No.62/234,804,名称为“Camera Pose Yaw Error Determination and Use in a Yaw User Interface(相机姿态偏离误差确定和在偏离用户界面中的使用)”和于2016年1月29日提交的美国优先权申请No.15/010,620的优先权,上述申请的全部内容通过引用方式并入到本文中。
Claims (15)
1.一种方法,包括:
通过一个或多个计算设备,接收对象的预览图像;
通过一个或多个计算设备,对于预览图像执行线检测以检测出多条线;
通过一个或多个计算设备,针对多条线计算线参数化;
通过一个或多个计算设备,使用线参数化计算偏离角度;以及
通过一个或多个计算设备,使用偏离角度修正对象的预览图像。
2.根据权利要求1所述的方法,其中第一线与第二线不平行。
3.根据权利要求1所述的方法,其中:
所述执行线检测进一步包括:确定对象的预览图像中的第一线和第二线;确定预览图像中在第一点处第一线与第二线之间的第一高度;确定预览图像中在第二点处第一线与第二线之间的第二高度;以及
所述针对多条线计算线参数化包括:计算从捕获设备点到第一点的第一距离;计算从捕获设备点到第二点的第二距离;以及确定第一线和第二线的起点、终点、点和斜率中的一个或多个。
4.根据权利要求1所述的方法,其中所述使用偏离角度修正对象的预览图像包括:使用偏离角度来调整预览图像并且去除由偏离误差所引入的误差的一部分。
5.根据权利要求4所述的方法,进一步包括:
通过一个或多个计算设备,将已调整的预览图像拼接到多个先前捕获的图像之中以创建对象的线性全景图像。
6.根据权利要求1所述的方法,其中所述使用偏离角度修正对象的预览图像包括:通过一个或多个计算设备,在显示设备上的用户界面中呈现用于体现偏离角度的指示符。
7.根据权利要求6所述的方法,其中所述用于体现偏离角度的指示符是垂直眼睑指示符,所述方法进一步包括:
通过一个或多个计算设备,计算针对预览图像的俯仰角度和滚动角度;
通过一个或多个计算设备,基于偏离角度确定垂直眼睑指示符;
通过一个或多个计算设备,基于俯仰角度确定水平眼睑指示符;
通过一个或多个计算设备,基于滚动角度确定球指示符;
通过一个或多个计算设备,在居中于显示设备的较小同心圆的一部分内部区域之上呈现所述垂直眼睑指示符;
通过一个或多个计算设备,在居中于显示设备的较大同心圆的一部分内部区域之上呈现所述水平眼睑指示符;以及
通过一个或多个计算设备,沿着居中于显示设备的较大同心圆的外边缘呈现所述球指示符。
8.根据权利要求1所述的方法,进一步包括:
通过一个或多个计算设备,使用第一线和第二线的参数化来确定消失点。
9.一种系统,包括:
处理器;以及
存储指令的存储器,当执行所述指令时,使得所述系统:
接收对象的预览图像;
对于预览图像执行线扫描以检测出多条线;
计算针对多条线的线参数化;
使用线参数化计算偏离角度;以及
使用偏离角度修正对象的预览图像。
10.根据权利要求9所述的系统,其中第一线与第二线不平行。
11.根据权利要求9所述的系统,其中当执行所述指令时,所述指令使得系统:
执行线检测,即确定对象的预览图像中的第一线和第二线;确定预览图像中在第一点处第一线与第二线之间的第一高度;确定预览图像中在第二点处第一线与第二线之间的第二高度;以及
计算针对多条线的线参数化,即计算从捕获设备点到第一点的第一距离;计算从捕获设备点到第二点的第二距离;以及确定第一线和第二线的起点、终点、点和斜率中的一个或多个。
12.根据权利要求9所述的系统,其中当执行所述指令时,所述指令使得系统使用偏离角度来修正对象的预览图像包括:使用偏离角度来调整预览图像并且去除由偏离误差所引入的误差的一部分。
13.根据权利要求12所述的系统,其中当执行所述指令时,所述指令进一步使得系统:
将已调整的预览图像拼接到多个先前捕获的图像之中以创建对象的线性全景图像。
14.根据权利要求9所述的系统,其中当执行所述指令时,所述指令进一步使得系统使用偏离角度修正对象的预览图像包括:当执行所述指令时,指令使得系统在显示设备上的用户界面中呈现用于体现偏离角度的指示符。
15.根据权利要求14所述的系统,其中用于体现偏离角度的指示符是垂直眼睑指示符,并且其中当执行所述指令时,所述指令进一步使得系统:
计算针对预览图像的俯仰角度和滚动角度;
基于偏离角度确定垂直眼睑指示符;
基于俯仰角度确定水平眼睑指示符;
基于滚动角度确定球指示符;
在居中于显示设备的较小同心圆的一部分内部区域之上呈现所述垂直眼睑指示符;
在居中于显示设备的较大同心圆的一部分内部区域之上呈现所述水平眼睑指示符;以及
沿着居中于显示设备的较大同心圆的外边缘呈现所述球指示符。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562234804P | 2015-09-30 | 2015-09-30 | |
US62/234,804 | 2015-09-30 | ||
US15/010,620 | 2016-01-29 | ||
US15/010,620 US9986150B2 (en) | 2015-09-30 | 2016-01-29 | Algorithm to estimate yaw errors in camera pose |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106558027A true CN106558027A (zh) | 2017-04-05 |
CN106558027B CN106558027B (zh) | 2020-06-16 |
Family
ID=57256036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610847646.2A Active CN106558027B (zh) | 2015-09-30 | 2016-09-23 | 用于估计相机姿态中的偏离误差的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9986150B2 (zh) |
EP (1) | EP3151199A3 (zh) |
JP (1) | JP6330880B2 (zh) |
CN (1) | CN106558027B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104822A (zh) * | 2018-10-25 | 2020-05-05 | 北京嘀嘀无限科技发展有限公司 | 人脸朝向识别方法、装置及电子设备 |
WO2021018019A1 (zh) * | 2019-07-30 | 2021-02-04 | 阿里巴巴集团控股有限公司 | 图像采集方法、装置、电子设备及计算机存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105791660A (zh) * | 2014-12-22 | 2016-07-20 | 中兴通讯股份有限公司 | 一种纠正被摄物体拍摄倾斜的方法、装置及移动终端 |
US9950669B2 (en) * | 2015-11-12 | 2018-04-24 | Robert Bosch Gmbh | Vehicle camera system with multiple-camera alignment |
CN107240069B (zh) * | 2017-05-24 | 2021-08-24 | 努比亚技术有限公司 | 一种图像拼接处理方法、移动终端以及计算机可读存储介质 |
US10687046B2 (en) * | 2018-04-05 | 2020-06-16 | Fyusion, Inc. | Trajectory smoother for generating multi-view interactive digital media representations |
US10885657B2 (en) * | 2018-10-31 | 2021-01-05 | Disney Enterprises, Inc. | Configuration for indicating image capture device position |
CN110262829A (zh) * | 2019-05-17 | 2019-09-20 | 平安科技(深圳)有限公司 | 私有镜像生成方法、装置、计算机设备及存储介质 |
CN110738599B (zh) * | 2019-10-14 | 2023-04-25 | 北京百度网讯科技有限公司 | 图像拼接方法、装置、电子设备及存储介质 |
DE102021102633A1 (de) * | 2021-02-04 | 2022-08-04 | Jungheinrich Aktiengesellschaft | Verfahren zur Bestimmung einer Orientierung eines Flurförderzeugs |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204021A (ja) * | 1992-01-24 | 1993-08-13 | Nikon Corp | カメラ |
JP4010754B2 (ja) * | 2000-08-10 | 2007-11-21 | 株式会社リコー | 画像処理装置と画像処理方法及びコンピュータ読み取り可能な記録媒体 |
JP2008003394A (ja) * | 2006-06-23 | 2008-01-10 | Nikon Corp | カメラ、カメラシステム、及び姿勢調整方法 |
US20100295948A1 (en) * | 2009-05-21 | 2010-11-25 | Vimicro Corporation | Method and device for camera calibration |
CN102045546A (zh) * | 2010-12-15 | 2011-05-04 | 广州致远电子有限公司 | 一种全景泊车辅助系统 |
US20110234750A1 (en) * | 2010-03-24 | 2011-09-29 | Jimmy Kwok Lap Lai | Capturing Two or More Images to Form a Panoramic Image |
CN102842117A (zh) * | 2012-07-13 | 2012-12-26 | 浙江工业大学 | 显微视觉系统中运动误差矫正方法 |
US20130050407A1 (en) * | 2011-08-24 | 2013-02-28 | Htc Corporation | Method and electric device for taking panoramic photograph |
JP2013250647A (ja) * | 2012-05-30 | 2013-12-12 | Dongjoo Shin | 商品陳列情報集計方法とデータ構造およびそれを記録した記録媒体 |
US20140043473A1 (en) * | 2011-04-25 | 2014-02-13 | Nikhil Gupta | Method and system for dynamically calibrating vehicular cameras |
CN104085396A (zh) * | 2014-07-03 | 2014-10-08 | 上海纵目科技有限公司 | 一种全景车道偏离预警方法及系统 |
WO2015114621A1 (en) * | 2014-02-02 | 2015-08-06 | Trax Technology Solutions Pte. Ltd. | System and method for panoramic image processing |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7893963B2 (en) * | 2000-03-27 | 2011-02-22 | Eastman Kodak Company | Digital camera which estimates and corrects small camera rotations |
US6985177B2 (en) * | 2000-07-04 | 2006-01-10 | Canon Kabushiki Kaisha | Image sensing system and its control method |
JP3996805B2 (ja) * | 2002-06-06 | 2007-10-24 | 株式会社日立製作所 | 監視カメラ装置、監視カメラシステム装置及び撮像画面のマスク方法 |
JP3862688B2 (ja) | 2003-02-21 | 2006-12-27 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
US7336296B2 (en) * | 2003-10-10 | 2008-02-26 | International Business Machines Corporation | System and method for providing position-independent pose estimation |
JP4593968B2 (ja) * | 2004-05-14 | 2010-12-08 | キヤノン株式会社 | 位置姿勢計測方法および装置 |
US20060203090A1 (en) * | 2004-12-04 | 2006-09-14 | Proximex, Corporation | Video surveillance using stationary-dynamic camera assemblies for wide-area video surveillance and allow for selective focus-of-attention |
US7379619B2 (en) * | 2005-03-09 | 2008-05-27 | Texas Instruments Incorporated | System and method for two-dimensional keystone correction for aerial imaging |
JP4715334B2 (ja) * | 2005-06-24 | 2011-07-06 | 日産自動車株式会社 | 車両用画像生成装置および方法 |
KR100793838B1 (ko) * | 2006-09-27 | 2008-01-11 | 한국전자통신연구원 | 카메라 모션 추출장치, 이를 이용한 해상장면의 증강현실 제공 시스템 및 방법 |
US8330824B2 (en) * | 2007-11-09 | 2012-12-11 | Panasonic Corporation | Camera, camera system, and camera body |
US8405720B2 (en) * | 2008-08-08 | 2013-03-26 | Objectvideo, Inc. | Automatic calibration of PTZ camera system |
KR101496467B1 (ko) | 2008-09-12 | 2015-02-26 | 엘지전자 주식회사 | 파노라마 촬영 기능이 구비된 이동 단말기 및 그의 동작방법 |
US20100225773A1 (en) * | 2009-03-09 | 2010-09-09 | Apple Inc. | Systems and methods for centering a photograph without viewing a preview of the photograph |
WO2010123011A1 (ja) * | 2009-04-20 | 2010-10-28 | 京セラ株式会社 | 撮像装置および撮像方法 |
US20100293502A1 (en) * | 2009-05-15 | 2010-11-18 | Lg Electronics Inc. | Mobile terminal equipped with multi-view display and method of controlling the mobile terminal |
JP2011071962A (ja) * | 2009-08-28 | 2011-04-07 | Sanyo Electric Co Ltd | 撮像装置及び再生装置 |
JP5486298B2 (ja) * | 2009-12-28 | 2014-05-07 | キヤノン株式会社 | 画像処理装置および画像処理方法 |
US9805331B2 (en) | 2011-02-09 | 2017-10-31 | Deutsche Telekom Ag | Smartphone-based asset management system |
JP5825817B2 (ja) * | 2011-04-01 | 2015-12-02 | キヤノン株式会社 | 固体撮像素子及び撮像装置 |
FR2973540B1 (fr) | 2011-04-01 | 2013-03-29 | CVDM Solutions | Procede d'extraction automatisee d'un planogramme a partir d'images de lineaire |
US8988578B2 (en) * | 2012-02-03 | 2015-03-24 | Honeywell International Inc. | Mobile computing device with improved image preview functionality |
JP2013168843A (ja) | 2012-02-16 | 2013-08-29 | Kddi Corp | ファインダ内に写る画像の撮影向きを判定する撮影支援プログラム、情報機器及び方法 |
US20140375762A1 (en) * | 2012-02-17 | 2014-12-25 | Sony Corporation | Information processing apparatus and method, image processing apparatus and method, and program |
FR2998363B1 (fr) * | 2012-11-19 | 2015-01-02 | Inria Inst Nat Rech Informatique & Automatique | Procede de determination, dans un referentiel fixe 3d, de la localisation d'un engin en mouvement, dispositif et programme d'ordinateur associes |
US10127724B2 (en) * | 2013-01-04 | 2018-11-13 | Vuezr, Inc. | System and method for providing augmented reality on mobile devices |
US9881203B2 (en) * | 2013-08-29 | 2018-01-30 | Nec Corporation | Image processing device, image processing method, and program |
US9886678B2 (en) | 2013-09-25 | 2018-02-06 | Sap Se | Graphic representations of planograms |
US20150215532A1 (en) | 2014-01-24 | 2015-07-30 | Amazon Technologies, Inc. | Panoramic image capture |
US9495606B2 (en) | 2014-02-28 | 2016-11-15 | Ricoh Co., Ltd. | Method for product recognition from multiple images |
JP6125455B2 (ja) * | 2014-03-26 | 2017-05-10 | 京セラドキュメントソリューションズ株式会社 | 画像形成システム、携帯端末、及び画像表示プログラム |
GB2525232A (en) * | 2014-04-17 | 2015-10-21 | Nokia Technologies Oy | A device orientation correction method for panorama images |
US9626589B1 (en) | 2015-01-19 | 2017-04-18 | Ricoh Co., Ltd. | Preview image acquisition user interface for linear panoramic image stitching |
US10360718B2 (en) * | 2015-08-14 | 2019-07-23 | Samsung Electronics Co., Ltd. | Method and apparatus for constructing three dimensional model of object |
-
2016
- 2016-01-29 US US15/010,620 patent/US9986150B2/en active Active
- 2016-09-16 EP EP16189111.4A patent/EP3151199A3/en not_active Withdrawn
- 2016-09-23 CN CN201610847646.2A patent/CN106558027B/zh active Active
- 2016-09-27 JP JP2016188646A patent/JP6330880B2/ja active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204021A (ja) * | 1992-01-24 | 1993-08-13 | Nikon Corp | カメラ |
JP4010754B2 (ja) * | 2000-08-10 | 2007-11-21 | 株式会社リコー | 画像処理装置と画像処理方法及びコンピュータ読み取り可能な記録媒体 |
JP2008003394A (ja) * | 2006-06-23 | 2008-01-10 | Nikon Corp | カメラ、カメラシステム、及び姿勢調整方法 |
US20100295948A1 (en) * | 2009-05-21 | 2010-11-25 | Vimicro Corporation | Method and device for camera calibration |
US20110234750A1 (en) * | 2010-03-24 | 2011-09-29 | Jimmy Kwok Lap Lai | Capturing Two or More Images to Form a Panoramic Image |
CN102045546A (zh) * | 2010-12-15 | 2011-05-04 | 广州致远电子有限公司 | 一种全景泊车辅助系统 |
US20140043473A1 (en) * | 2011-04-25 | 2014-02-13 | Nikhil Gupta | Method and system for dynamically calibrating vehicular cameras |
US20130050407A1 (en) * | 2011-08-24 | 2013-02-28 | Htc Corporation | Method and electric device for taking panoramic photograph |
JP2013250647A (ja) * | 2012-05-30 | 2013-12-12 | Dongjoo Shin | 商品陳列情報集計方法とデータ構造およびそれを記録した記録媒体 |
CN102842117A (zh) * | 2012-07-13 | 2012-12-26 | 浙江工业大学 | 显微视觉系统中运动误差矫正方法 |
WO2015114621A1 (en) * | 2014-02-02 | 2015-08-06 | Trax Technology Solutions Pte. Ltd. | System and method for panoramic image processing |
CN104085396A (zh) * | 2014-07-03 | 2014-10-08 | 上海纵目科技有限公司 | 一种全景车道偏离预警方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104822A (zh) * | 2018-10-25 | 2020-05-05 | 北京嘀嘀无限科技发展有限公司 | 人脸朝向识别方法、装置及电子设备 |
CN111104822B (zh) * | 2018-10-25 | 2023-09-19 | 北京嘀嘀无限科技发展有限公司 | 人脸朝向识别方法、装置及电子设备 |
WO2021018019A1 (zh) * | 2019-07-30 | 2021-02-04 | 阿里巴巴集团控股有限公司 | 图像采集方法、装置、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP6330880B2 (ja) | 2018-05-30 |
EP3151199A3 (en) | 2017-04-19 |
CN106558027B (zh) | 2020-06-16 |
EP3151199A2 (en) | 2017-04-05 |
JP2017069957A (ja) | 2017-04-06 |
US9986150B2 (en) | 2018-05-29 |
US20170094158A1 (en) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106558026A (zh) | 偏离用户界面 | |
CN106558027A (zh) | 用于估计相机姿态中的偏离误差的算法 | |
CN105809619B (zh) | 用于线性全景图像拼接的图像获取用户界面 | |
US10511768B2 (en) | Preview image acquisition user interface for linear panoramic image stitching | |
US10192323B2 (en) | Remote determination of containers in geographical region | |
JP6397144B2 (ja) | 画像からの事業発見 | |
CN108062776B (zh) | 相机姿态跟踪方法和装置 | |
CN105787478B (zh) | 基于神经网络和灵敏度参数的人脸转向识别方法 | |
JP4799105B2 (ja) | 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体 | |
CN107424160A (zh) | 通过视觉系统查找图像中线的系统和方法 | |
JP2007087345A (ja) | 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体 | |
CN108112271A (zh) | 检测图像中的运动 | |
CN110222641B (zh) | 用于识别图像的方法和装置 | |
US10248652B1 (en) | Visual writing aid tool for a mobile writing device | |
US11562489B2 (en) | Pixel-wise hand segmentation of multi-modal hand activity video dataset | |
EP3177005B1 (en) | Display control system, display control device, display control method, and program | |
CN103617616A (zh) | 一种仿射不变的图像匹配方法 | |
CN108629786A (zh) | 图像边缘检测方法及装置 | |
CN111783637A (zh) | 关键点标注方法及装置、目标物空间位姿确定方法及装置 | |
JP7405528B2 (ja) | 媒体判別装置、媒体判別システム及び媒体判別方法 | |
US20240005594A1 (en) | Virtualization of tangible object components | |
CN117253022A (zh) | 一种对象识别方法、装置及查验设备 | |
JP2011028611A (ja) | 文字情報読取装置および文字情報読取方法 | |
CN107578449A (zh) | 一种免校准互动白板投影机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |