用于检测图像中的运动的方法和计算机可读装置转让专利

申请号 : CN201680061608.2

文献号 : CN108112271B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 洪微马里厄斯·伦恩罗德里戈·卡尔斯罗尼

申请人 : 谷歌有限责任公司

摘要 :

一种计算系统接收由相机捕捉的第一和第二图像。该计算系统使用图像来产生数学变换,其指示相机从第一图像到第二图像的移动(110)。计算系统使用第一图像和数学变换来产生第一图像的修改版本(120、115),其呈现从捕捉第二图像时相机的位置由第一图像捕捉到的场景。计算系统通过将第一图像的修改版本与第二图像进行比较来确定第一图像或第二图像的部分(130),在该部分处场景中的对象的位置移动。

权利要求 :

1.一种用于检测图像中的运动的计算机实现的方法,包括:

由计算系统接收由相机捕捉的第一图像;

由所述计算系统接收由所述相机捕捉的第二图像;

由所述计算系统使用所述第一图像和所述第二图像来产生数学变换,所述数学变换指示:相对于在所述第一图像和所述第二图像中反映的场景的、所述相机从所述第一图像到所述第二图像的移动;

由所述计算系统使用所述第一图像和所述数学变换来产生所述第一图像的修改版本,所述第一图像的所述修改版本从捕捉所述第二图像时所述相机的位置呈现由所述第一图像捕捉的场景,其中捕捉所述第一图像时所述相机的位置与捕捉所述第二图像时所述相机的位置不同;以及通过将所述第一图像的所述修改版本与所述第二图像进行比较,由所述计算系统确定所述第一图像或第二图像中所述场景中的对象的位置移动的部分,其中将所述第一图像的所述修改版本与所述第二图像进行比较包括:由所述计算系统计算所述第一图像或所述第二图像的空间梯度,以识别所述第一图像或所述第二图像中存在对象边缘的部分;

由所述计算系统识别所述第一图像的所述修改版本与所述第二图像之间的像素差异;

以及

由所述计算系统确定所述第一图像或所述第二图像中存在所述对象的移动边缘的部分,作为下述的结果:(i)所计算的空间梯度指示所述对象的所述边缘存在于所述第一图像或所述第二图像的所述部分中,以及(ii)在所述第一图像或所述第二图像的所述部分处存在所述第一图像的所述修改版本与所述第二图像之间的所识别的像素差异。

2.根据权利要求1所述的计算机实现的方法,其中所述第二图像是在所述相机捕捉了图像系列中的所述第一图像之后所述相机在所述图像系列中捕捉的图像。

3.根据权利要求1所述的计算机实现的方法,进一步包括:

由所述计算系统识别所述第一图像或所述第二图像中要分析移动的多个区域的网格,其中所述多个区域的网格包括多个行,其中每个行包括多个所述多个区域;以及由所述计算系统针对所述多个区域中的一个以上的区域确定识别相应区域的所计算运动的值,其中确定所述第一图像或所述第二图像中所述场景中所述对象中的所述位置移动的所述部分包括:确定识别所述多个区域中的特定区域的所计算运动的值。

4.根据权利要求3所述的计算机实现的方法,其中所述多个区域的网格中的全部区域是相同的大小和形状。

5.根据权利要求3所述的计算机实现的方法,进一步包括:

通过组合识别相应区域的所计算运动的所述值中的至少一些值,由所述计算系统产生识别所述第一图像与所述第二图像之间的一般移动水平的值。

6.根据权利要求1所述的计算机实现的方法,进一步包括:

由所述计算系统接收图像序列,除了多个其他图像之外,所述图像序列至少还包括所述第一图像和所述第二图像;

由所述计算系统基于所述第一图像的所述修改版本与所述第二图像的所述比较来确定由所述第一图像或所述第二图像反映的移动水平;以及由所述计算系统基于由所述第一图像或所述第二图像反映的所确定的移动水平来确定:(i)将所述第一图像或所述第二图像维持在计算机存储器中,至少直到用户输入从所述计算机存储器中移除所述第一图像或所述第二图像为止,以及(ii)从存储器移除所述多个其他图像中的至少一个,而无需接收用户输入,所述用户输入指定所述多个其他图像中的所述至少一个要从存储器移除。

7.根据权利要求1所述的计算机实现的方法,其中指示所述相机的移动的所述数学变换包括单应性变换矩阵。

8.包括指令的一个或多个非暂时性计算机可读装置,所述指令在由一个或多个处理器执行时致使执行操作,所述操作包括:由计算系统接收由相机捕捉的第一图像;

由所述计算系统接收由所述相机捕捉的第二图像;

由所述计算系统使用所述第一图像和所述第二图像来产生数学变换,所述数学变换指示:相对于在所述第一图像和所述第二图像中反映的场景的、所述相机从所述第一图像到所述第二图像的移动;

由所述计算系统使用所述第一图像和所述数学变换来产生所述第一图像的修改版本,所述第一图像的所述修改版本从捕捉所述第二图像时所述相机的位置呈现由所述第一图像捕捉的场景,其中捕捉所述第一图像时所述相机的位置与捕捉所述第二图像时所述相机的位置不同;以及通过将所述第一图像的所述修改版本与所述第二图像进行比较,由所述计算系统确定所述第一图像或第二图像中所述场景中的对象的位置移动的部分,其中将所述第一图像的所述修改版本与所述第二图像进行比较包括:

由所述计算系统计算所述第一图像或所述第二图像的空间梯度,以识别所述第一图像或所述第二图像中存在对象边缘的部分;

由所述计算系统识别所述第一图像的所述修改版本与所述第二图像之间的像素差异;

以及

由所述计算系统确定所述第一图像或所述第二图像中存在所述对象的移动边缘的部分,作为下述的结果:(i)所计算的空间梯度指示所述对象的所述边缘存在于所述第一图像或所述第二图像的所述部分中,以及(ii)在所述第一图像或所述第二图像的所述部分处存在所述第一图像的所述修改版本与所述第二图像之间的所识别的像素差异。

9.根据权利要求8所述的一个或多个非暂时性计算机可读装置,其中所述第二图像是在所述相机捕捉了图像系列中的所述第一图像之后所述相机在所述图像系列中捕捉的图像。

10.根据权利要求8所述的一个或多个非暂时性计算机可读装置,其中所述操作进一步包括:由所述计算系统识别所述第一图像或所述第二图像的要分析移动的多个区域的网格,其中所述多个区域的网格包括多个行,其中每个行包括多个所述多个区域;以及由所述计算系统针对所述多个区域中的一个以上的区域确定识别相应区域的所计算的运动的值,其中确定所述第一图像或所述第二图像中所述场景中的所述对象中的所述位置移动的所述部分包括:确定识别所述多个区域中的特定区域的所计算运动的值。

11.根据权利要求10所述的一个或多个非暂时性计算机可读装置,其中所述多个区域的网格中的全部区域是相同的大小和形状。

12.根据权利要求10所述的一个或多个非暂时性计算机可读装置,其中所述操作进一步包括:通过组合识别相应区域的所计算运动的所述值中的至少一些值,由所述计算系统产生识别所述第一图像与所述第二图像之间的一般移动水平的值。

13.根据权利要求8所述的一个或多个非暂时性计算机可读装置,其中所述操作进一步包括:由所述计算系统接收图像序列,除了多个其他图像之外,所述图像序列至少还包括所述第一图像和所述第二图像;

由所述计算系统基于所述第一图像的所述修改版本与所述第二图像的所述比较来确定由所述第一图像或所述第二图像反映的移动水平;以及由所述计算系统基于由所述第一图像或所述第二图像反映的所确定的移动水平来确定:(i)将所述第一图像或所述第二图像维持在计算机存储器中,至少直到用户输入从所述计算机存储器中移除所述第一图像或所述第二图像为止,以及(ii)从存储器移除所述多个其他图像中的至少一个,而无需接收用户输入,所述用户输入指定所述多个其他图像中的所述至少一个要从存储器移除。

14.根据权利要求8所述的一个或多个非暂时性计算机可读装置,其中指示所述相机的移动的所述数学变换包括单应性变换矩阵。

15.一种计算机实现的方法,包括:

由计算系统接收图像序列,除了由相机捕捉作为所述图像序列的一部分的多个其他图像之外,所述图像序列还包括第一图像和第二图像,其中相对于在所述第一图像和所述第二图像中反映的场景,捕捉所述第一图像时所述相机的位置与捕捉所述第二图像时所述相机的位置不同;

由所述计算系统产生所述第一图像的修改版本,所述第一图像的所述修改版本从捕捉所述第二图像时所述相机的位置呈现在所述第一图像中描绘的所述场景;

由所述计算系统基于所述第一图像的所述修改版本与所述第二图像的比较来确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的移动水平;以及由所述计算系统基于已经确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平满足标准来确定:(i)将所述第一图像或所述第二图像维持在计算机存储器中,至少直到用户输入从所述计算机存储器中移除所述第一图像或所述第二图像为止,以及(ii)从所述计算机存储器移除由所述相机捕捉作为所述图像序列的一部分的所述多个其他图像中的至少一个图像,而无需接收用户输入,所述用户输入指定所述至少一个图像要从所述计算机存储器移除。

16.根据权利要求15所述的计算机实现的方法,其中所述第二图像是在所述相机捕捉了所述图像序列中的所述第一图像之后所述相机立即在所述图像序列中捕捉的图像。

17.根据权利要求15所述的计算机实现的方法,进一步包括由所述计算系统识别从捕捉所述第一图像时到捕捉所述第二图像时所述相机的移动;

其中使用所识别的从捕捉所述第一图像时到捕捉所述第二图像时所述相机的移动产生所述第一图像的所述修改版本,所述第一图像的所述修改版本呈现从捕捉所述第二图像时所述相机的所述位置在所述第一图像中描绘的所述场景。

18.根据权利要求17所述的计算机实现的方法,其中识别从捕捉所述第一图像时到捕捉所述第二图像时所述相机的所述移动包括产生指示从捕捉所述第一图像时到捕捉所述第二图像时所述相机的所述移动的数学变换。

19.根据权利要求18所述的计算机实现的方法,其中所述数学变换包括单应性变换矩阵。

20.根据权利要求15所述的计算机实现的方法,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括识别所述第一图像的所述修改版本与所述第二图像之间的像素差异。

21.根据权利要求15所述的计算机实现的方法,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括由所述计算系统通过以下步骤确定所修改的第一图像或所述第二图像中存在对象的移动边缘的部分:(i)识别所修改的第一图像或所述第二图像中存在边缘的部分,以及

(ii)由于所述边缘正位于所述第一图像的所述修改版本与所述第二图像之间的像素差异的位置处,确定所述边缘正在移动。

22.根据权利要求21所述的计算机实现的方法,其中识别所修改的第一图像或所述第二图像中存在所述边缘的所述部分包括所修改的第一图像或所述第二图像的空间梯度。

23.根据权利要求15所述的计算机实现的方法,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括:(i)由所述计算系统识别所修改的第一图像或所述第二图像中要分析移动的多个区域的网格,其中所述多个区域的网格包括多个行,其中每个行包括所述多个区域的多个子集,(ii)由所述计算系统针对所述多个区域中的一个以上的区域中的每个区域确定识别所述第一图像的所述修改版本与所述第二图像之间的相应区域的所计算运动的值,以及(iii)通过组合所述值中的至少一些来确定所述场景中的所述移动水平,所述值中的至少一些识别针对来自所述多个区域的网格的相应区域计算的所计算运动。

24.根据权利要求23所述的计算机实现的方法,其中所述多个区域的网格中的全部区域是相同的大小和形状。

25.包括指令的一个或多个非暂时性计算机可读装置,所述指令在由一个或多个处理器执行时致使执行操作,所述操作包括:由计算系统接收图像序列,除了由相机捕捉作为所述图像序列的一部分的多个其他图像之外,所述图像序列还包括第一图像和第二图像,其中相对于在所述第一图像和所述第二图像中反映的场景,捕捉所述第一图像时所述相机的位置与捕捉所述第二图像时所述相机的位置不同;

由所述计算系统产生所述第一图像的修改版本,所述第一图像的所述修改版本从捕捉所述第二图像时所述相机的位置呈现在所述第一图像中描绘的所述场景;

由所述计算系统基于所述第一图像的所述修改版本与所述第二图像的比较来确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的移动水平;以及由所述计算系统基于已经确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平满足标准来确定:(i)将所述第一图像或所述第二图像维持在计算机存储器中,至少直到用户输入从所述计算机存储器中移除所述第一图像或所述第二图像为止,以及(ii)从所述计算机存储器移除由所述相机捕捉作为所述图像序列的一部分的所述多个其他图像中的至少一个图像,而无需接收用户输入,所述用户输入指定所述至少一个图像要从所述计算机存储器移除。

26.根据权利要求25所述的一个或多个非暂时性计算机可读装置,其中所述第二图像是在所述相机捕捉了所述图像序列中的所述第一图像之后所述相机立即在所述图像序列中捕捉的图像。

27.根据权利要求25所述的一个或多个非暂时性计算机可读装置,进一步包括由所述计算系统识别从捕捉所述第一图像时到捕捉所述第二图像时所述相机的移动;

其中使用所识别的从捕捉所述第一图像时到捕捉所述第二图像时所述相机的移动产生所述第一图像的所述修改版本,所述第一图像的所述修改版本呈现从捕捉所述第二图像时所述相机的所述位置在所述第一图像中描绘的所述场景。

28.根据权利要求27所述的一个或多个非暂时性计算机可读装置,其中识别从捕捉所述第一图像时到捕捉所述第二图像时所述相机的所述移动包括产生指示从捕捉所述第一图像时到捕捉所述第二图像时所述相机的所述移动的数学变换。

29.根据权利要求28所述的一个或多个非暂时性计算机可读装置,其中所述数学变换包括单应性变换矩阵。

30.根据权利要求25所述的一个或多个非暂时性计算机可读装置,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括识别所述第一图像的所述修改版本与所述第二图像之间的像素差异。

31.根据权利要求25所述的一个或多个非暂时性计算机可读装置,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括由所述计算系统通过以下步骤确定所修改的第一图像或所述第二图像中存在对象的移动边缘的部分:(i)识别所修改的第一图像或所述第二图像中存在边缘的部分,以及

(ii)由于所述边缘正位于所述第一图像的所述修改版本与所述第二图像之间的像素差异的位置处,确定所述边缘正在移动。

32.根据权利要求31所述的一个或多个非暂时性计算机可读装置,其中识别所修改的第一图像或所述第二图像中存在所述边缘的所述部分包括所修改的第一图像或所述第二图像的空间梯度。

33.根据权利要求29所述的一个或多个非暂时性计算机可读装置,其中确定在捕捉所述第一图像时与捕捉所述第二图像时之间所述场景中的所述移动水平包括:(i)由所述计算系统识别所修改的第一图像或所述第二图像中要分析移动的多个区域的网格,其中所述多个区域的网格包括多个行,其中每个行包括所述多个区域的多个子集,(ii)由所述计算系统针对所述多个区域中的一个以上的区域中的每个区域确定识别所述第一图像的所述修改版本与所述第二图像之间的相应区域的所计算运动的值,以及(iii)通过组合所述值中的至少一些来确定所述场景中的所述移动水平,所述值中的至少一些识别针对来自所述多个区域的网格的相应区域计算的所计算运动。

34.根据权利要求33所述的一个或多个非暂时性计算机可读装置,其中所述多个区域的网格中的全部区域是相同的大小和形状。

说明书 :

用于检测图像中的运动的方法和计算机可读装置

技术领域

[0001] 本文档总体上涉及检测图像中的运动。

背景技术

[0002] 人们携带包括内置相机的移动计算装置——诸如智能电话或平板型计算装置——越来越普遍。随着这些装置的处理速度和存储容量的增加,人们可以更普遍地使用所述装置来捕捉视频或各种系列的图片(例如,通过按下快门按钮来捕捉以在短时间段内捕捉许多图片)。这些视频和系列图片可以捕捉到一个场景,其中对象或人物从图像到图像在场景中移动。

发明内容

[0003] 本文档描述用于检测图像中的运动的技术、方法、系统和其他机制。运动检测机制可以将最近接收的图像与先前接收的图像进行比较,以识别哪些对象在图像所展示的场景中移动。因为相机可能一直在移动,这将导致背景中的静止对象出现在每个图像中的不同位置,所以运动检测机制可以分析图像以识别相机如何移动。接着,可以使用此分析来修改先前接收的图像,以在捕捉最近接收的图像时根据相机的估计定向来展示其内容。以此方式,背景可以看起来在修改的先前接收的图像与当前接收的图像之间保持实质上相同和静止。这使系统能够分析这两个图像来识别独立于背景移动的对象。
[0004] 作为对下文描述的实施例的额外描述,本公开描述了以下实施例。
[0005] 实施例1是用于检测图像中的运动的计算机实现的方法。所述方法包括由计算系统接收由相机捕捉的第一图像。所述方法包括由计算系统接收由相机捕捉的第二图像。所述方法包括由所述计算系统使用所述第一图像和所述第二图像来产生数学变换,所述数学变换指示所述相机相对于在所述第一图像和所述第二图像中反映的场景从所述第一图像到所述第二图像的移动。所述方法包括由所述计算系统使用所述第一图像和所述数学变换来产生所述第一图像的修改版本,其呈现从捕捉所述第二图像时所述相机的位置由所述第一图像捕捉的场景,其中捕捉所述第一图像时所述相机的位置与捕捉所述第二图像时所述相机的位置不同。所述方法包括通过将所述第一图像的所述修改版本与所述第二图像进行比较,由所述计算系统确定所述第一图像或第二图像的部分,在所述部分处所述场景中的对象的位置移动。
[0006] 实施例2是实施例1的计算机实现的方法,其中所述第二图像是在所述相机捕捉图像系列中的所述第一图像之后在所述图像系列中所述相机捕捉的图像。
[0007] 实施例3是实施例1的计算机实现的方法,其中将所述第一图像的所述修改版本与所述第二图像进行比较包括:识别所述第一图像的所述修改版本与所述第二图像之间的像素差异。
[0008] 实施例4是实施例1的计算机实现的方法,其中将所述第一图像的所述修改版本与所述第二图像进行比较包括:由所述计算系统计算所述第一图像或所述第二图像的空间梯度,以识别所述第一图像或所述第二图像的存在对象边缘的部分;由所述计算系统识别所述第一图像的所述修改版本与所述第二图像之间的像素差异;以及作为(i)所计算的空间梯度指示所述对象的所述边缘存在于所述第一图像或所述第二图像的所述部分中,并且(ii)在所述第一图像的所述部分处存在所述第一图像的所述修改版本与所述第二图像之间的识别的像素差异的结果,由所述计算系统确定所述第一图像或所述第二图像的存在所述对象的移动边缘的部分。
[0009] 实施例5是实施例1的计算机实现的方法。所述方法进一步包括由所述计算系统识别所述第一图像或所述第二图像的要分析移动的多个区域的网格,其中所述多个区域的网格包括多个行,其中每个行包括多个所述多个区域;以及由所述计算系统针对所述多个区域中的一个以上的区域确定识别相应区域的所计算的运动的值。确定所述第一图像或所述第二图像的所述场景中的所述对象中的所述位置移动的所述部分包括:确定识别所述多个区域中的特定区域的所计算的运动的值。
[0010] 实施例6是实施例5的计算机实现的方法,其中多个区域的网格中的全部区域均是相同的大小和形状。
[0011] 实施例7是实施例5的计算机实现的方法。所述方法进一步包括通过组合识别相应区域的所计算的运动的所述值中的至少一些,由所述计算系统产生识别所述第一图像与所述第二图像之间的一般移动水平的值。
[0012] 实施例8是实施例1的计算机实现的方法。所述方法进一步包括:由所述计算系统接收图像序列,除了多个其他图像之外,所述图像序列至少包括所述第一图像和所述第二图像;由所述计算系统基于所述第一图像的所述修改版本与所述第二图像的所述比较来确定由所述第一图像或所述第二图像反映的移动水平;以及由所述计算系统基于由所述第一图像或所述第二图像反映的所确定的移动水平来确定:(i)将所述第一图像或所述第二图像维持在计算机存储器中,至少直到用户输入从所述计算机存储器中移除所述第一图像或所述第二图像为止,以及(ii)从存储器移除多个其他图像中的至少一个,而无需接收指定所述多个其他图像中的所述至少一个要从存储器移除的用户输入。
[0013] 实施例9是实施例1的计算机实现的方法,其中指示所述相机的移动的所述数学变换包括单应性变换矩阵。
[0014] 在另一实施例中,计算机实现的方法是检测图像中的运动。所述方法包括由计算系统接收由相机捕捉的第一图像。所述方法包括由计算系统接收由相机捕捉的第二图像。所述方法包括由所述计算系统识别所述第二图像的要分析移动的多个区域的网格,其中多个区域的网格包括多个行,其中每个行包括多个区域。所述方法包括由所述计算系统针对所述多个区域中的一个以上的区域确定识别相应区域的计算的运动的值。
[0015] 在某些情况下,特定实施方式可以实现以下优点中的一个或多个。本公开中描述的技术允许装置确定相机正捕捉的场景中的对象何时移动,即使相机本身正在移动。因而,所述装置能够区分场景中的对象的移动与由相机移动引起的场景的背景的明显移动(例如参见在权利要求1、3、4、10、12、13、19、21和22中产生第一图像的修改版本的论述以及将第一图像的修改版本与第二图像进行比较的论述)。所述装置可以通过补偿相机在所有八个移动度上的移动来区分前景和背景移动(参见例如id.)。所述装置不仅能够确定发生移动的图像的区域,而且能够产生运动显著性的一般指示,例如,场景中移动的显著性的指示(例如参见权利要求7、16和25中的产生识别一般移动水平的值的论述)。此外,本文描述的过程可能不需要显著的处理能力且可以能够充分补偿相机运动的八个自由度,且因此可以适合于在移动计算装置上进行实时计算。
[0016] 在附图和下文描述中陈述一个或多个实施方式的细节。其他特征、目标和优点将从描述和附图以及从权利要求显而易见。

附图说明

[0017] 图1展示用于检测图像中的运动的过程的图形说明。
[0018] 图2展示用于将两个图像进行比较的过程的图形说明。
[0019] 图3A‑B展示用于检测图像中的运动的过程的流程图说明。
[0020] 图4是可以用于实现本文档中描述的系统和方法的、作为客户端或作为服务器或多个服务器的计算装置的框图。
[0021] 各个附图中的相同附图标记指示相同的元件。

具体实施方式

[0022] 本文档总体上描述检测图像中的运动。计算系统可以通过将两个图像进行比较来执行运动检测过程,以便识别图像的哪些部分展示在真实生活中移动的对象,并产生识别对于此移动的显著性水平的值(例如,在空中跳跃的人可能比许多在风中漂移的小叶子更显著)。计算系统可以补偿相机的移动,这可以帮助计算系统区分由于相机的移动而看起来从一个图像到下一图像移动的静止对象与相对于静止对象实际上在真实生活中移动的那些对象。
[0023] 图像的哪些部分正在移动的识别以及该移动的显著性水平可以以各种方式来由计算系统或其他计算系统使用。一个示例性用途是帮助计算系统确定由计算系统捕捉的图像系列中的哪些图像要保存以及哪些图像要删除。作为示例,如果用户按下快门按钮以捕捉图像系列,那么这些图像中的许多图像可能几乎相同,且永久存储所有几乎相同的图像或者甚至提供它们显示给用户可能是无益的。因而,计算系统可以确定哪些图像表示相对于其他图像的显著移动水平,且可以仅存储展示显著的移动水平的那些图像。关于图1来用图表示出和解释此过程。
[0024] 图1展示用于检测图像中的运动的过程的图形说明。在此图示中,移动计算装置(在此示例中是手机,但其也可以是例如膝上型计算机或独立相机)的用户已捕捉了朋友蹲在原地且接着在空中跳跃的图像系列A‑D。用户可能已经将他的手机相机的相机镜头面向朋友,且用户可能在朋友跳跃之前按下并按住快门按钮以使手机捕捉朋友跳跃的图像系列。该图像系列可以包括朋友准备跳跃的两个图像(图像A和B)、朋友跳到空中的过程的一个图像(图像C)、以及朋友返回到地面的过程的一个图像(图像D)。
[0025] 尽管此图示为了便于说明而展示手机捕捉四个图像,但手机可能在同一时间段内捕获了数十个图像。永久存储所有这些图像可能没有意义,因为这些图像占据了有潜在价值的计算机存储器,且因为一些图像可能几乎是相同的。因而,手机可以被编程以估计用户可能最感兴趣查看哪些图像,且可以甚至在不提供所删除的图像以供用户查看或显示的情况下删除剩余的图像。作为示例,手机可以将所捕捉的图像存储在缓冲器中,但是一旦缓冲器填满,计算系统就可以删除评分较低的图像,以便允许缓冲器存储正在接收的更高评分的图像。在计算系统捕捉下一图像之前,计算系统可以用每个新接收的图像执行或至少开始评分过程。
[0026] 用以识别图像中的运动的第一步骤可以是识别两个图像用于比较。两个图像可以是在时间上彼此相邻而捕捉的图像。例如,图像可以是视频中的相邻帧。
[0027] 接着,计算系统可以补偿手机的移动。因为手机是移动装置,所以用户可能在用户正捕捉系列图片时移动手机(例如,通过平移手机或转动手机)。由于手机的移动,可能难以将两个图像直接相互比较,因为由图像捕捉的在场景中静止的物品的位置可能由于相机移动而出现在图像的不同位置。
[0028] 计算系统可以通过使用第一图像和第二图像产生数学变换来补偿照相机的移动,该数学变换指示相机从第一图像到第二图像相对于在第一图像和第二图像中反映的场景的移动(框110)。数学变换(项115)可以是指示或可以用于指示相机相对于从一个图像到下一个图像的场景的移动的数学数字、一系列数字、矩阵或算法。可以通过识别每个图像中相同特征的位置并识别该特征从一个图像到下一图像如何移动来产生变换。如下文描述,数学变换115可以用于修改图像中的一个的像素以从不同位置(例如,捕捉两个图像中的另一图像的位置)同时估计相同场景的捕捉。
[0029] 计算系统接着可以使用第一图像和数学变换来产生第一图像的修改版本。第一图像的修改版本可以呈现从捕捉第二图像时的相机位置由第一图像捕捉到的场景(框120)。换句话说,计算系统可以采用第一图像,并将其进行也使用数学变换115作为输入的数学处理。数学处理的效果可以是以数学变换指定或指示的方式将第一图像中的至少一些像素移动到新的位置。这种重新布置可以产生新的图像,其是原始图像的“扭曲(warped)”版本,且看起来从不同的相机角度展示原始图像。图1中将修改的第一图像示出为图像B’(项125)。
在捕捉第一图像时的相机的位置(例如,定位和/或定向)可以与在捕捉第二图像时的相机的位置不同。
[0030] 计算系统接着可以将第一图像的修改版本与第二图像进行比较(框130)。此比较的计算输出可以包括对象移动(例如,相对于静止背景)的第二图像的部分的指示。图1中将这些比较过程的一个或多个输出示出为运动数据135。关于图2更详细地描述比较过程。一般而言,比较过程识别图像的哪些部分改变(在已补偿相机移动之后)。比较过程可以另外识别图像的哪些部分表示对象的边缘,且计算可以加重边缘位置处的改变,而不是具有较不突出边缘的特征的改变。
[0031] 在一些实施方式中,手机使用运动数据来选择保存图像还是丢弃图像(框140)。例如,如上所述,装置可以捕捉到比存储或展示给用户所需的图像更多的图像。因此,在给予用户查看图像的机会之前,装置可以从存储器中移除一些所捕捉的图像(例如,在没有用户输入的情况下移除图像)。或者,装置可以去着重评分较低的图像(例如,通过要求额外的用户输入来查看图像或以不同方式标记图像)。作为计算系统具有被配置成针对任何给定的所捕捉的图像序列(例如,固定的缓冲器大小)而存储的固定数量的图像或者每当图像具有低于给定阈值的图像分数的结果,计算系统可以执行这些移除或去着重操作(例如,删除不感兴趣的图像,即使缓冲器可能未满)。
[0032] 用于确定哪些图像是感兴趣的或不感兴趣的示例性输入(例如,用以计算上述图像分数的输入)是指定图像中的运动的显著性或重要性的输入,其可以根据以上描述来确定。此运动识别输入可以与其他输入(例如,指定图像中的人是否睁着眼睛的分数以及指定图像是否不模糊的分数)一起用于产生图像的总体分数。总体分数可以用以确定是移除图像还是保留图像用于稍后呈现给用户。当然,本文描述的运动检测技术可以用以实现其他结构,例如跟踪对象的定位。
[0033] 图2展示用于将两个图像进行比较的过程的图形说明。图2中所示的过程可以表示与先前在框130(图1)处描述的比较操作相关的附加细节。
[0034] 比较可以包括装置最初计算关于修改的第一图像和关于第二图像的一些统计信息。例如,装置可以比较图像以识别时间梯度215(框210)。时间梯度数据215可以表示图像之间的像素差异。因为修改的第一图像表示从捕捉第二图像时的相机位置拍摄的图像,所以图像的表示静止特征的部分可以具有类似的像素值。因而,在此类图像位置处的像素差异可以是零或近零。另一方面,在对象移动到的图像中的位置处可能存在显著的像素差异(例如,对象曾经在但不再在的位置,或者对象曾经不在但现在所在的位置)。时间梯度可以表示从一个图像到下一图像的时间或时间差,且可以针对多个像素(例如,图像中的每个像素)来计算。
[0035] 装置还可以计算和识别与第二图像的空间梯度(框220)。该计算可以产生空间梯度数据225,其可以指示图像在图像中的特定方向上如何在一个像素与下一像素之间不同。例如,针对图像中的任一给定像素,水平梯度可以识别给定像素左边的像素的灰度值与给定像素右边的像素的灰度值如何不同。作为另一示例,针对任一给定像素,垂直梯度可以识别顶部像素的灰度值与底部像素的灰度值如何不同。显著的空间梯度值可以指示图像中存在边缘。
[0036] 计算装置可以使用这些统计值来识别发生运动的图像的位置。此分析可以在图像的补块(patch)或区域上执行。因而,计算系统可以产生补块网格或多个区域的网格(框230)。在以下详细描述中,使用术语补块网格(grid of patch)。产生补块网格可以包括在表示一个图像的区域上产生均匀间隔点的网格,并且产生以均匀间隔点中的每个为中心的补块(例如,10像素×10像素正方形)。补块网格235中的补块可以或可以不重叠,或者可以彼此邻接(它们在图2中示出为每个补块之间具有空间,使得它们不彼此重叠或邻接)。
[0037] 装置接着可以使用时间梯度数据215和空间梯度数据225来计算每个补块的运动分数(框240)。关于图3A‑B更详细地描述了每个补块的运动分数的计算,但是此计算可以产生分数图245。分数图245可以包括每个补块的一个值,其指示该补块中运动的显著性。此分数图245(或其缩减版本)可以被装置用来指示图像的哪些区域正在发生运动。在图2中,在图像B'和C的朋友移动的区域展示分数图245中的最高值。分数图245中的值被示出为从0到5的范围,但这些值可以占据其他范围,诸如从0到1的范围。
[0038] 装置接着可以计算总体运动分数值(框250)。明确地说,装置可以使用分数图245中的值来产生总体运动分数值数据255。在各种示例中,计算总体运动分数值数据255可以包括对分数图245中的值求平均。在一些示例中,如关于图3A‑B更详细地描述的那样,使用将值归一化到标准范围(例如,在0和1之间)的非线性映射函数来计算总体运动分数值数据255。
[0039] 图3A‑B展示用于检测图像中的运动的过程的流程图说明。关于图3A‑B描述的过程提供了关于图1和图2描述的过程的至少一些方面的附加描述。
[0040] 在框302,计算系统接收图像。所接收的图像可以是由计算装置的相机(例如,图像传感器)最近捕捉的图像。计算系统可以对图像进行降采样(框304),以便降低执行本文所述的运动检测过程所需的处理水平。例如,所接收的图像可以具有1920×1080像素的分辨率,且降采样过程可以将所接收图像转换为320×180像素的较小分辨率。在一些实施方式中,计算系统还将所接收的图像(例如,在降采样之前或之后,与任何降采样无关)从颜色转换为灰度。计算系统可以将所接收的图像(和/或其降采样和颜色转换的版本)存储在图像缓冲器306中,使得系统可以访问先前捕捉的图像。无论是原始图像还是其降采样和颜色转换的版本,被执行处理的图像被指定为I(x,y)。
[0041] 确定图像的哪些部分表示正移动的对象可能涉及将所接收的图像与先前接收的图像进行比较。但是,如果相机正在移动,那么由于相机在不同时间点位于不同位置,所有或大部分接收的图像和先前接收的图像可能不同。因此,“扭曲”先前接收的图像以便从所接收图像的有利位置展示它可以是有帮助的。这样做可能涉及分析两个图像以识别相机如何移动,以及产生指示或以其他方式识别相机运动的变换,如下文更详细描述的。
[0042] 在框308,计算系统估计相机运动并产生指示相机运动的变换。所产生的变换可以是使用至少两个图像作为输入(例如,来自图像缓冲器的I和I_previous)而创建的矩阵。转换可以被指定为“H_inframe”。此帧到帧运动矩阵可以是单应性变换矩阵。单应性变换矩阵可以是能够表示场景的移动或捕捉场景的相机从一个图像到下一图像(例如,从I_previous到I)的移动的矩阵。
[0043] 作为示例,假设第一图像表示从正方形正前方的一个正方形拍摄的照片,使得正方形在图像中具有九十度角的等长边(换句话说,看起来是正方形)。现在假设相机移动到了一边(或者正方形本身被移动了),使得下一图像显示正方形倾斜,一些边比另一边长,并且角度不是九十度。可以将第一图像中正方形的四个角点的位置映射到第二图像中四个角点的位置,以识别相机或场景从一个图像到下一图像如何移动。
[0044] 在图像中这些角点到彼此的所识别的映射可以用于产生表示相机视点相对于其捕捉的场景的运动的单应性变换矩阵。给定此类单应性变换矩阵,系统可以将第一图像与所产生的单应性变换矩阵组合,以例如通过根据已知的单应性变换方法将第一帧中的像素移动到不同位置来重新创建第二帧。
[0045] 上述单应性变换矩阵不仅可以表示相机的平移移动,还可以表示旋转、缩放和非刚性滚动快门失真。以此方式,单应性变换矩阵可以表示相机在八个自由度上的移动。为了比较,一些图像比较技术仅考虑平移运动(例如,上/下和左/右移动)。
[0046] 上述单应性变换矩阵可以是3×3单应性变换矩阵,但是可以使用其他类型的单应性矩阵(以及从一个图像到另一图像的移动的其他数学表示——甚至不是单应性矩阵或者甚至不是矩阵——也可以被使用)。系统可以按以下方式来确定3×3矩阵(H_interframe)。首先,计算系统可以识别当前图像中的一组特征点(有时是角点),其中那些点可以表示为[x’_i,y’_i],i=1…N(N是特征点的数量)。接着,计算系统可以识别先前帧中的对应特征点,其中对应的特征点可以表示为[x_i,y_i]。请注意,这些点被描述为处于GL坐标系中(即,以帧中心为原点、范围从‑1到1的x和y)。如果该点处于图像像素坐标系中,其中x范围从0到图像宽度且y范围从0到图像高度,那么可以将该点变换为GL坐标系,或者可以对所得的矩阵进行变换以进行补偿。
[0047] 上述H_interfame矩阵可以是包含9个元素的3×3矩阵:
[0048] ·
[0049] H_interfame将[x_i,y_i]变换为[x’_i,y’_i],如下文描述:
[0050] · z_i’*[x’_i,y’_i,1]’=H_interframe*[x_i,y_i,1]’.[0051] ·[x’_i,y’_i,1]’是3×1向量,它是[x'_i,y'_i,1]向量的转置。
[0052] ·[x_i,y_i,1]’是3×1向量,它是[x_i,y_i,1]向量的转置。
[0053] ·z_i'是比例因子。
[0054] 给定一组相应的特征点,在以下的计算机视觉书中的算法4.1(第91页)和算法4.6(第123页)描述了用于估计矩阵的示例性算法:“Hartley,R.,Zisserman,A.:Multiple View Geometry in Computer Vision(计算机视觉中的多视图几何)剑桥大学出版社(2000),“可在ftp://vista.eng.tau.ac.il/dropbox/SimonKolotov‑Thesis/Articles/[Richard_Hartley_Andrew_Zisserman]_Multiple_View_G(BookFi.org).pdf和http://cvrs.whu.edu.cn/downloads/ebooks/Multiple%20View%20Geometry%20in%20Computer%20Vision%20(Second%20Edition).pdf获得。
[0055] 上述算法4.1如下。目的。给定n≥4的2D到2D点对应关系 确定2D单应性矩阵H,使得x’i=Hxi。算法。(i)对于每个对应关系 根据(4.1)计算矩阵Ai。一般只需要使用前两行。(ii)将n个2×9矩阵Ai组合成单个2n×9矩阵A。(iii)获得A的SVD(A4.4节(p585))。对应于最小奇异值的单位奇异向量是解h。具体来说,如果A=具有正对角条目的DT对角线的UDV ,沿着对角线降序排列,那么h是V的最后一列。(iv)矩阵H按照(4.2)由h来确定。
[0056] 上述算法4.6如下。目的。计算两个图像之间的2D单应性。算法。(i)兴趣点:计算每个图像中的兴趣点。(ii)假定的对应关系:基于兴趣点的强度邻域的接近性和相似性来计算一组兴趣点匹配。(iii)RANSAC鲁棒估计:针对N个样本重复,其中N如算法4.5中那样自适应地确定:(a)选择4个对应关系的随机样本并计算单应性H。(b)计算每个假定的对应关系的距离d⊥。(c)通过d⊥
[0057] 上述算法4.5遵循N=∞,样本计数=0。当N>样本计数,重复。–选择样本并计算内围数。–设置=1–(内围数)/(点数总数)–将N和(4.18)设为p=0.99。–将样本计数增加1。终止。
[0058] 在框310,计算系统对当前图像进行平滑化。例如,计算系统可以用高斯滤波器对输入图像进行平滑化,以产生平滑的输入图像(I_smoothed)。对输入图像进行平滑化可以提高过程的鲁棒性,因为对图像进行降采样和变换可能会产生混叠假影或其他噪声,其可以通过平滑化而被消除或减少。计算系统可以将平滑图像存储在平滑图像缓冲器312中,平滑图像缓冲器312存储先前接收的图像上的此过程的先前迭代的平滑图像。在本公开中,在图像上执行的操作的描述包括在图像或平滑版本的图像上执行的操作。
[0059] 在框316,计算系统使用变换矩阵来将先前平滑化的图像扭曲为新图像(例如,通过将I_smoothed_previous扭曲为I_smoothed_previous_warped)。这样做可以有效地将相机从拍摄前一张图像时的位置改变,使之与拍摄当前图像时的相机位置相匹配。因而,在扭曲之后,I_smoothed_previous_warped和I_smoothed的背景、静态部分可以大致相互匹配。这允许计算系统比较图像以识别图像的哪些部分是移动的非背景部分。计算系统可以使用H_inframe从I_smoothed_previous的坐标确定I_smoothed_previous_warped的坐标,如下所示:
[0060] · z’*[x’,y’,1]’=H_interframe*[x,y,1]’。
[0061] ·[x,y,1]’是表示I_smoothed_previous中的坐标的3×1向量。
[0062] ·[x’,y’,1]’是表示I_smoothed_previous_warped中的坐标的3×1向量。
[0063] · z′是比例因子。
[0064] 对于I_smoothed_previous中的每个像素[x,y],计算系统能够使用上述变换来确定I_smoothed_previous_warped中的位置[x’,y’],且计算系统可以将I_smoothed_previous中的[x,y]的像素值复制到I_smoothed_previous_warped中的[x′,y′]。
[0065] 在框318,计算系统计算当前图像与扭曲版本的先前图像之间的时间梯度(例如,像素之间的差异)。其可以对每个像素进行如下操作:
[0066] · I_t(x,y)=I_smoothed(x,y)‑I_smoothed_prevous_warped(x,y)[0067] 时间梯度值可以进一步从零开始,在从一个图像到下一图像的位置发生更多的变化。因而,较高的数字(至少取一次绝对值)可以识别发生移动的图像的部分。
[0068] 在框318,计算系统附加地或替代地计算图像上的一个或多个方向上的变化率(例如,空间梯度)。其可以在x方向进行如下操作:
[0069] · I_x(x,y)=(I_smoothed(x+1,y)‑I_smoothed(x‑1,y))/2.
[0070] 其可以在y方向进行如下操作:
[0071] · I_y(x,y)=(I_smoothed(x,y+1)‑I_smoothed(x,y‑1))/2.
[0072] 如果像素位于边缘或边界处,那么变化率较大(例如,因为当像素位于边缘或边界时,与像素位于图像的没有太多变化的部分中的情况相比,像素强度在左侧像素与右侧像素之间可能变化更大。)因而,更高的数字可以识别边缘。
[0073] 在框330,计算系统计算点的网格,从其可以产生补块网格。计算系统可以计算网格p(i,j),其中i=1→网格宽度和j=1→网格高度。网格的计算可以排除图像边缘的边距,例如图像边缘的百分之三。网格点可以是均匀间隔的,例如,沿x方向相隔4个像素,且沿y方向相隔4个像素。作为示例,如果帧大小是320×180,那么计算系统可以排除左边和右边的10个像素(320*3%=10像素)以及顶部和底部的6个像素(240*3%=6像素)。这提供了具有网格宽度=75和网格高度=42的网格。
[0074] 对于网格中的每个点p(i,j),计算系统可以从I_smoothed识别基于该点的位置的补块(例如,补块可以以该点为中心)(框332)。作为示例,补块可以具有7的补块宽度和7的补块高度。补块可以重叠、相互分离、或者相互邻近和邻接(例如,如同棋盘)。
[0075] 在框334,计算系统计算每个补块的一个或多个统计数据。这些统计数据可以使用先前计算的时间和空间梯度。
[0076] 计算系统可以计算的第一统计数据是补块中水平变化速率的平均值,例如,如下:
[0077] · Ixx是补块内所有像素的I_x(x,y)*I_x(x,y)的平均值。
[0078] 此计算可以乘以水平空间梯度值以强调平滑变化中存在垂直边缘。
[0079] 计算系统可以计算的第二统计数据是补块中垂直变化速率的平均值,例如,如下:
[0080] · Iyy是补块内所有像素的I_y(x,y)*I_y(x,y)的平均值。
[0081] 此计算可以乘以垂直空间梯度值以强调平滑变化中存在水平边缘。
[0082] 计算系统可以计算的第三统计数据是补块中对角线变化的平均速率,例如,如下:
[0083] · Ixy是补块内所有像素的I_x(x,y)*I_y(x,y)的平均值。
[0084] 计算系统可以计算的第四统计数据是识别在图像中移动的垂直边缘的值,通过组合给定位置处的水平空间梯度与该位置处的时间梯度,以产生识别垂直边缘是否在该点移动的值,例如,如下:
[0085] · Ixt是补块内所有像素的I_x(x,y)*I_t(x,y)的平均值。
[0086] 计算系统可以计算的第五统计数据是识别在图像中移动的水平边缘的值,通过组合给定位置处的垂直空间梯度与所述位置处的时间梯度以产生识别水平边缘是否在所述点移动的值,例如,如下:
[0087] · Iyt是补块内所有像素的I_y(x,y)*I_t(x,y)的平均值。
[0088] 统计数据的计算可以通过使用积分图像来优化。
[0089] 在框338,计算系统选择具有纹理的那些补块(例如,通过忽略那些可能不具有纹理的补块,以及可能仅仅是表示空白墙的图像的部分的补块)。换句话说,计算系统可以确定每个补块是否具有足够的纹理,且对于那些没有足够纹理的补块,可以将补块的运动分数设为“0”(框340)。选择具有纹理的补块的过程可以包括识别补块海森(Hessian)2×2矩阵:
[0090] {Ixx Ixy
[0091] Ixy Iyy}
[0092] 计算系统可以确定矩阵的行列式(det)。较大的特征值可以表示为max_eigenvalue,且较小的特征值可以表示为min_eigenvalue。如果补块满足以下条件,那么计算系统可以选择具有纹理的补块:
[0093] ·(条件1)det>0。
[0094] 当图像中的边缘至少具有适度的x和y分量时,行列式可以大于零(例如,边缘不是纯粹水平的或纯粹是垂直的,在此情况下,可能难以分别在水平或垂直方向上识别运动)。
[0095] ·(条件2)min_eigenvalue>EigenvalueThreshold*frameWidth*frameHeight。
[0096] 此条件可以保证在任何给定的方向上至少存在一些边缘。EigenvalueThreshold是手动调谐的,且示例值可以是0.0025。
[0097] ·(条件3)max_eigenvalue<EigenvalueRatioThreshold*min_eigenvalue。
[0098] 此条 件可以 保 证主 导方向 的 边缘不 会压 倒 另一方向 的 边缘 。EigenvalueRatioThreshold也是手动调谐的,且示例值可以是5。如果补块未能满足上述条件检查,那么计算系统可以将补块的运动向量设置为motion_x=motion_y=0。
[0099] 在框344,对于被识别为具有足够纹理的每个补块,计算系统通过计算补块的运动向量来估计补块的运动(例如,由补块中的像素描绘的对象),例如,如下:
[0100] · motion_x=(‑Ixt*Iyy+Iyt*Ixy)/det.
[0101] · motion_y=(Ixt*Ixy‑Iyt*Ixx)/det.
[0102] 在一些示例中,计算系统应用卢卡斯‑卡纳德(Lucas‑Kanade)微分法来进行光流估计。
[0103] 在框346,计算系统计算每个补块的运动分数。可以组合运动分数以产生运动分数图352。可以如下计算运动分数图:
[0104] · score(i,j)=1‑exp(‑(motion_x(i,j)*motion_x(i,j)+motion_y(i,j)*motion_y(i,j))/motionParam).
[0105] 在这个等式中,motionParam可以由用户手动设置,并且可以具有10的值。在一些示例中,计算系统可以将分数集合(例如,每个补块的一个分数,其中一些具有0值)降采样为较小的运动分数图:score_small(k,l),k=1→scoreWidth,l=1→scoreHeight(框348)。对分数图进行降采样的示例性插值方法是对多个点的窗求平均以获得一个值。例如,为了降采样3,对每3×3窗求平均来获得一个像素。因而,计算系统最终可能会得到一个10×10的分数网格,而不是50×50的分数网格。本公开中相关运动分数图的描述可以指代运动分数图或其降采样的版本。
[0106] 在框354,计算系统计算分数图的熵值,如下:
[0107] ·对于所有的k和1,total_score=sum(score_small(k,l)+Epsilon)[0108] · p(k,l)=(score_small(k,l)+Epsilon)/total_score).
[0109] · entropy=‑sum(Log(p(k,l)*P(k,l)).
[0110] Epsilon(ε)可以是较小的数字,以避免由0引起的问题。熵值可以识别图像中的混乱,其可以说明整个图像中的移动的差异。例如,如果全部或大部分图像正在移动(例如,因为相机聚焦在正在离开的大卡车的侧面),那么没有太多混乱,因为全部或大部分图像正在移动。另一方面,如果图像中有多个人正在四处乱跑,那么会出现大量的混乱和高熵现象,因为图像的很多部分正在移动,而且很多部分不移动。如果运动高度集中在图像的更少的部分,那么熵可能很大。
[0111] 计算系统可以使用所产生的熵值来产生运动显著性分数。此分数可以识别图像中的运动的重要性。motion_saliency_score可以是0到1之间的值,可以使用以下非线性映射函数产生:
[0112] ·  motion_saliency_score=1‑exp(entropy*saliencyParam1)*saliencyParam2.
[0113] · saliencyParam1可被手动调谐。
[0114] · saliencyParam2可被手动调谐。
[0115] 计算系统输出运动显著性分数356以通知另一过程或装置在图像中的运动有多显著。计算系统还可以输出运动分数图以通知另一过程或装置在帧内何处发生运动。
[0116] 在以上描述中,先前接收的图像被扭曲以匹配稍后接收的图像的相机位置,且接着对稍后接收的图像执行各种操作,例如空间梯度的计算。本领域的技术人员将了解,可以通过将过程应用到两个图像中的另一个来实现类似的结果。例如,稍后接收的图像可以是被扭曲以匹配先前接收的图像的位置的图像,且可对先前接收的图像执行诸如空间梯度的计算的随后操作。此外,可以对扭曲的图像执行这些操作(例如,空间梯度),无论是先前接收的图像还是稍后接收的图像。因而,本公开的部分可以指代对第一图像“或”第二图像执行的操作,以示出可以执行运动估计机制的各种方式。
[0117] 在各种实施方式中,如果先前操作不成功(例如,如果未执行确定),那么“响应于”或“由于”另一操作(例如,确定或识别)而执行的操作不被执行。“自动”执行的操作是在没有用户介入(例如,介入用户输入)的情况下执行的操作。本文档中使用条件语言描述的特征可以描述可选的实施方式。在一些示例中,从第一装置“传输”到第二装置包括第一装置将数据放入网络中以供第二装置接收,但可能不包括第二装置接收数据。相反,从第一装置“接收”可以包括从网络接收数据,但可能不包括第一装置传输数据。
[0118] 由计算系统“确定”可以包括计算系统请求另一装置执行确定并将结果供应给计算系统。此外,由计算系统“显示”或“呈现”可以包括计算系统发送数据以致使另一装置显示或呈现参考信息。
[0119] 图4是可以用于实现本文档中描述的系统和方法的作为客户端或作为服务器或多个服务器的计算装置400、450的框图。计算装置400意图表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算装置450意图表示各种形式的移动装置,诸如个人数字助理、蜂窝式电话、智能电话和其他类似的计算装置。本文所展示的部件、其连接和关系、以及其功能意图仅作为示例,且并不意图限制本文档中描述和/或主张的实施方式。
[0120] 计算装置400包括处理器402、存储器404、存储装置406、连接到存储器404和高速扩展端口410的高速接口408、以及连接到低速总线414和存储装置406的低速接口412。部件402、404、406、408、410和412中的每个个使用各种总线来互连,且可以安装在常用主板上或视情况以其他方式安装。处理器402可以处理用于在计算装置400内执行的指令,包括存储在存储器404中或存储装置406上的指令,以在外部输入/输出装置上显示用于GUI的图形信息,诸如耦合到高速接口408的显示器416。在其他实施方式中,可以视情况连同多个存储器和多个类型的存储器来使用多个处理器和/或多个总线。而且,可以连接多个计算装置400,其中每个装置提供必要的操作的部分(例如,作为服务器阵列、一组刀片服务器、或多处理器系统)。
[0121] 存储器404将信息存储在计算装置400内。在一个实施方式中,存储器404是易失性存储器单元。在另一实施方式中,存储器404是非易失性存储器单元。存储器404还可以是另一形式的计算机可读介质,诸如磁盘或光盘。
[0122] 存储装置406能够提供用于计算装置400的大容量存储。在一个实施方式中,存储装置406可以是或包含计算机可读介质,诸如软盘装置、硬盘装置、光盘装置、或磁带装置、快闪存储器或其他类似的固态存储器装置、或装置阵列,包括存储区域网络中的装置或其他配置。计算机程序产品可以有形地体现在信息载体中。计算机程序产品还可以包含在被执行时执行诸如上文所描述的方法的一个或多个方法的指令。信息载体是计算机可读介质或机器可读介质,诸如存储器404、存储装置406、或处理器402上的存储器。
[0123] 高速控制器408管理用于计算装置400的带宽密集操作,而低速控制器412管理下部带宽密集操作。此类功能分配仅仅是示例。在一个实施方式中,高速控制器408耦合到存储器404、显示器416(例如,通过图形处理器或加速器),且耦合到可接受各种扩展卡(未图示)的高速扩展端口410。在实施方式中,低速控制器412耦合到存储装置406和低速扩展端口414。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络配接器而耦合到一个或多个输入/输出装置,诸如键盘、指向装置、扫描仪、或诸如交换机或路由器的网络连接装置。
[0124] 计算装置400可以以许多不同形式来实现,如图中展示。例如,其可被实现为标准服务器420,或在一组此类服务器中被实现多次。其还可以被实现为机架服务器系统424的部分。另外,其可以被实现在诸如膝上型计算机422的个人计算机中。或者,来自计算装置400的部件可以与移动装置(未图示)中的其他部件——诸如装置450——组合。此类装置中的每个可以包含计算装置400、450中的一个或多个,且整体系统可以由彼此通信的多个计算装置400、450构成。
[0125] 计算装置450包括处理器452、存储器464、诸如显示器454的输入/输出装置、通信接口466和收发器468、以及其他部件。装置450还可以具备存储装置——诸如微硬盘或其他装置——以提供额外的存储。部件450、452、464、454、466和468中的每个个使用各种总线来互连,且若干部件可以安装在公共主板上或视情况以其他方式安装。
[0126] 处理器452可以执行计算装置450内的指令,包括存储在存储器464中的指令。处理器可以被实现为包括单独和多个模拟和数字处理器的芯片的芯片组。另外,处理器可以使用许多架构中的任一个来实现。例如,处理器可以是CISC(复杂指令集计算机)处理器、RISC(精简指令集计算机)处理器或MISC(最小指令集计算机)处理器。例如,处理器可以提供装置450的其他部件的协调,诸如用户界面的控制、装置450运行的应用程序、以及装置450进行的无线通信。
[0127] 处理器452可以通过耦合到显示器454的控制接口458和显示接口456来与用户通信。显示器454可以是例如TFT(薄膜晶体管液晶显示器)显示器或OLED(有机发光二极管)显示器、或其他适当的显示器技术。显示接口456可以包括用于驱动显示器454向用户呈现图形和其他信息的适当电路。控制接口458可以接收来自用户的命令且将它们转换用于提交给处理器452。另外,可以提供与处理器452通信的外部接口462,以便实现装置450与其他装置的附近区域通信。例如,在一些实施方式中外部接口462可以提供有线通信,或在其他实施方式中可以提供无线通信,且还可以使用多个接口。
[0128] 存储器464将信息存储在计算装置450内。存储器464可以被实现为一个或多个计算机可读介质、一个或多个易失性存储器单元、或一个或多个非易失性存储器单元中的一个或多个。还可以提供扩展存储器474且通过扩展接口472连接到装置450,其可以包括例如SIMM(单列直插式存储器模块)卡接口。此类扩展存储器474可以提供用于装置450额外存储空间,或还可以存储用于装置450的应用程序或其他信息。具体来说,扩展存储器474可以包括用以进行或补充上文所描述的过程的指令,且还可以包括安全信息。因此,例如,扩展存储器474可以被提供为用于装置450的安全模块,且可以用允许安全使用装置450的指令来编程。另外,可以经由SIMM卡来提供安全应用程序连同额外信息,诸如以不可破解的方式将识别信息放在SIMM卡上。
[0129] 存储器可以包括例如快闪存储器和/或NVRAM存储器,如下文论述。在一个实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含在被执行时执行诸如上文所描述的方法的一个或多个方法的指令。信息载体是例如可以通过收发器468或外部接口462来接收的计算机可读介质或机器可读介质,诸如存储器464、扩展存储器474、或处理器452上的存储器。
[0130] 装置450可以通过通信接口466以无线方式进行通信,其在必要时可以包括数字信号处理电路。通信接口466可以提供在各种模式或协议下的通信,诸如GSM语音呼叫、SMS、EMS、或MMS消息传递、CDMA、TDMA、PDC、WCDMA、CDMA2000、或GPRS等等。此类通信可以例如通过射频收发器468来发生。另外,短程通信可以诸如使用蓝牙、WiFi或其他此类收发器(未图示)来发生。另外,GPS(全球定位系统)接收器模块470可以将额外的导航相关和定位相关无线数据提供到装置450,其可以视情况由在装置450上运行的应用程序来使用。
[0131] 装置450还可以使用音频编解码器460来可听地通信,音频编解码器560可以接收来自用户的口头信息且将其转换为可用的数字信息。音频编解码器460可以同样地诸如通过例如装置450的手机中的扬声器来为用户产生可听见的声音。此类声音可以包括来自语音电话呼叫的声音,可以包括录音(例如,语音消息、音乐文件等),且还可以包括在装置450上操作的应用程序所产生的声音。
[0132] 计算装置450可以以许多不同形式来实现,如图中展示。例如,其可以被实现为蜂窝式电话480。其还可以被实现为智能电话482、个人数字助理或其他类似移动装置的部分。
[0133] 另外,计算装置400或450可以包括通用串行总线(USB)闪存驱动器。USB闪存驱动器可以存储操作系统和其他应用程序。USB闪存驱动器可以包括输入/输出部件,诸如可以插入到另一计算装置的USB端口中的无线传输器或USB连接器。
[0134] 本文描述的系统和技术的各种实施方式可以被实现在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中。这些各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,其包括可以是专用或通用的至少一个可编程处理器,其被耦合以从存储系统、至少一个输入装置和至少一个输出装置接收数据和指令以及传输数据和指令到存储系统、至少一个输入装置和至少一个输出装置。
[0135] 这些计算机程序(还被称为程序、软件、软件应用程序或代码)包括用于可编程处理器的机器指令,且可以用高级程序化和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用,术语“机器可读介质”“计算机可读介质”是指任何计算机程序产品、设备和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),用以提供机器指令和/或数据到可编程处理器,包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用以将机器指令和/或数据提供给可编程处理器的任何信号。
[0136] 为了提供与用户的交互,本文描述的系统和技术可以被实现在计算机上,该计算机具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以通过其将输入提供给计算机的键盘和指向装置(例如,鼠标或轨迹球)。也可以使用其他种类的装置来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);且来自用户的输入可以任何形式来接收,包括声学、语音或触觉输入。
[0137] 本文描述的系统和技术可以被实现在计算系统中,该计算系统包括后端部件(例如,作为数据服务器)或包括中间件部件(例如,应用程序服务器),或者包括前端部件(例如,具有图形用户界面或Web浏览器的客户端计算机,用户可通过客户端计算机来与本文描述的系统和技术的实施方式进行交互),或者此类后端部件、中间件部件或前端部件的任何组合。系统的部件可以通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)、对等型网络(具有对等式或静态构件)、网格计算基础设施和因特网。
[0138] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,且通常通过通信网络进行交互。客户端与服务器之间的关系是由于在相应计算机上运行且具有彼此的客户端服务器关系的计算机程序产生的。
[0139] 虽然上文已经详细描述了几个实施方式,但是其他修改是可能的。此外,可以使用用于执行本文档中描述的系统和方法的其他机制。另外,图中所描绘的逻辑流不需要所展示的特定次序或顺序次序来实现期望的结果。可以从所描述的流程提供其他步骤或者可以消除步骤,且可以将其他部件添加到所描述的系统或从所描述的系统移除。因此,其他实施方式在随附权利要求的范围之内。