全局运动矢量的高效编码的制作方法

文档序号:29098497发布日期:2022-03-02 04:15阅读:71来源:国知局
全局运动矢量的高效编码的制作方法
全局运动矢量的高效编码
1.相关申请的交叉引用
2.本技术要求2019年4月25日提交的标题为“全局运动矢量的高效编码”的美国临时专利申请序列号62/838,521的优先权,其全部内容通过引用并入于此。
技术领域
3.本发明通常涉及视频压缩领域。特别地,本发明是针对全局运动矢量的高效编码。


背景技术:

4.视频编解码器可以包括压缩或解压缩数字视频的电子电路或软件。它可以将未压缩的视频转换为压缩格式,反之亦然。在视频压缩的环境中,压缩视频(和/或执行其某些功能)的设备通常可以被称为编码器,解压缩视频(和/或执行其某些功能)的设备可以被称为解码器。
5.压缩数据的格式可以符合标准视频压缩规范。压缩可能是有损的,因为压缩的视频缺少原始视频中存在的一些信息。这样做的一个后果是,由于没有足够的信息来准确地重建原始视频,解压缩后的视频的质量可能比原始的未压缩视频低。
6.视频质量、用于表示视频的数据量(例如,由比特率决定)、编码和解码算法的复杂性、对数据丢失和错误的敏感性、易于编辑、随机访问、端到端延迟(例如,延时)等等之间可能存在复杂的关系。
7.运动补偿可以包括一种方法,在给定参考帧(例如先前帧和/或未来帧)的前提下,通过计算摄像机和/或视频中的物体的运动来预测视频帧或其中的一部分。它可以用于视频压缩的视频数据的编码和解码,例如使用运动图像专家组(mpeg)-2(也称为高级视频编码(avc)和h.264)标准的编码和解码。运动补偿可以根据参考图像到当前图像的变换来描述图像。当与当前图像比较时,参考图像在时间上可以是先前的,当与当前图像比较时,参考图像可以是未来的。当可以从先前传输和/或存储的图像中准确地合成图像时,可以提高压缩效率。


技术实现要素:

8.在一个方面,解码器包括被配置为接收比特流、从比特流中提取当前帧的控制点运动矢量的残差、以及将当前帧的控制点运动矢量的残差与控制点运动矢量的预测相组合的电路。
9.在另一方面,一种方法包括由解码器接收比特流。该方法包括从比特流中提取当前帧的控制点运动矢量的残差。该方法包括将当前帧的控制点运动矢量的残差与控制点运动矢量的预测相组合。
10.这里描述的主题的一个或多个变型的细节在附图和下面的描述中阐述。本文所述主题的其他特征和优点将从说明书和附图以及权利要求中显而易见。
附图说明
11.为了说明本发明,附图示出了本发明的一个或多个实施例的方面。然而,应当理解,本发明不限于附图中所示的精确布置和手段,其中:
12.图1是示出具有全局和局部运动的示例帧的运动矢量的图;
13.图2示出了可用于全局运动的三个示例运动模型,包括其索引值(0、1或2);
14.图3是根据当前主题的一些示例实施方式的过程流程图;
15.图4是根据当前主题的一些示例实施方式的示例解码器的系统框图;
16.图5是根据当前主题的一些示例实施方式的过程流程图;
17.图6是根据当前主题的一些示例实施方式的示例编码器的系统框图;和
18.图7是可用于实现这里公开的任何一个或多个方法及其任何一个或多个部分的计算系统的框图。
19.附图不一定是按比例绘制的,可以用虚线、示意图和局部视图来说明。在某些情况下,可能已经省略了对于理解实施例不必要的细节或者使得其他细节难以察觉的细节。不同附图中相同的参考符号表示相同的元件。
具体实施方式
20.视频中的全局运动是指发生在整个帧中的运动。全局运动可能由摄像机运动引起;例如但不限于,摄像机平移和缩放可以在帧中产生通常会影响整个帧的运动。视频部分中存在的运动可以被称为局部运动。局部运动可以由场景中的移动对象引起,例如但不限于场景中从左向右移动的对象。视频可能包含局部和全局运动的组合。当前主题的一些实施方式可以提供将全局运动传递给解码器的高效方法,以及使用全局运动矢量来提高压缩效率。
21.图1是示出具有全局和局部运动的示例性帧100的运动矢量的示例性实施例的图。帧100可以包括被示为正方形的多个像素块,以及被示为箭头的它们的相关运动矢量。箭头指向上方和左侧的正方形(例如,像素块)可以指示具有可以被认为是全局运动的运动的块,并且箭头指向其他方向(由104指示)的正方形指示具有局部运动的块。在图1所示的例子中,许多块具有相同的全局运动。在报头中发送全局运动信号,如图像参数集(pps)或序列参数集(sps),以及使用有信号的全局运动可以减少块所需的运动矢量信息,并可引起改进的预测。尽管为了说明的目的,下面描述的例子是在块级别上确定和/或应用全局或局部运动矢量,但全局运动矢量可以被确定和/或应用于帧和/或图像的任何区域,包括由多个块组成的区域,以任何几何形式为边界的区域,例如但不限于由几何和/或指数编码定义的区域,其中围成边界的一条或多条线和/或曲线可以成角度和/或弯曲,以及/或帧和/或图像的整体。尽管信令在此被描述是在帧级和/或帧的报头和/或参数集中执行的,但是信令可以替代地或附加地在子图像级执行,其中子图像可以包括如上所述的帧和/或图像的任何区域。
22.作为示例,并且仍然参考图1,可以使用运动矢量(mv)来描述简单的平移运动,该运动矢量具有描述当前帧中的块和/或像素的位移的两个分量mvx、mvy。更复杂的运动,如旋转、缩放和扭曲,可以使用仿射运动矢量来描述,其中本公开中使用的“仿射运动矢量”是描述视频图像和/或图像中表示的一组像素或点的均匀位移的矢量,例如示出在运动期间
对象在视频视图中移动而不改变外观形状的一组像素。视频编码和/或解码的一些方法可以使用四参数或六参数仿射模型来进行图像间编码中的运动补偿。
23.例如,六参数仿射运动可以描述为:
24.x'=ax+by+c
25.y'=dx+ey+f
26.四参数仿射运动可以描述为:
27.x'=ax+by+c
28.y'=-bx+ay+f
29.其中(x,y)和(x’,y’)分别是当前图像和参考图像中的像素位置;a、b、c、d、e和f是仿射运动模型的参数。
30.继续参考图1,用于描述仿射运动的参数可通过信号发送给解码器,以便在解码器处应用仿射运动补偿。在一些方法中,运动参数可以显式地通过信号发送,或者通过信号发送平移控制点运动矢量(cpmvs),然后从平移运动矢量推导出仿射运动参数。可以利用两个控制点运动矢量(cpmvs)来推导出四参数仿射运动模型的仿射运动参数,并且可以利用三个控制点平移运动矢量(cpmvs)来获取六参数运动模型的参数。使用控制点运动矢量通过信号发送仿射运动参数可以允许使用高效的运动矢量编码方法来通过信号发送仿射运动参数。
31.在一些实施方式中,并且仍然参考图1,全局运动信令可以包括在报头中,例如pps或sps。全局运动可能因图像而异。图像头部中用信号发送的运动矢量可以描述相对于先前解码的帧的运动。在一些实施方式中,全局运动可以是平移或仿射的。所使用的运动模型(例如,参数的数量,模型是仿射的、平移的或其他的)也可以在图像头部中用信号发送。图2示出了可以用于全局运动的三个示例运动模型200,包括其索引值(0、1或2)。
32.继续参考图2,ppss可以用于通过信号发送参数,这些参数可在序列的图像之间改变。可以在序列参数集中用信号发送对于图像序列保持相同的参数,以减小pps的大小并降低视频比特率。表1示出了一个示例图像参数集(pps):
33.34.35.36.[0037][0038]
仍然参考图2,可以将附加字段添加到pps以通过信号发送全局运动。在全局运动的情况下,图像序列中全局运动参数的存在可以在sps中用信号发送,并且pps通过sps id引用sps。在一些解码方法中,sps可以被修改以添加一个字段来通过信号发送sps中全局运动参数的存在。例如,可以向sps添加一位字段。如果global_motion_present位为1,则可在pps中预期到全局运动相关的参数;如果global_motion_present位为0,则pps中可能不存在与全局运动参数相关的字段。例如,表1的pps可以扩展到包括一个global_motion_present字段,例如,如表2所示:
[0039][0040]
类似地,pps可以包括针对一帧的pps_global_motion_parameters字段,例如,如表3所示:
[0041][0042]
更详细地,pps可以包括使用控制点运动矢量来表征全局运动参数的字段,例如,如表4所示:
[0043]
pps_global_motion_parameters(){描述符motion_model_usedu(2)mv0_xse(v)mv1_yse(v)if(motion_model_used==1){ mv1_xse(v)mv1_yse(v)} if(motion_model_used==2){ mv2_xse(v)mv2_yse(v)} } [0044]
作为进一步的非限制性示例,下面的表5可以代表示例性sps:
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053][0054]
如上所述,可以对sps表进行扩展,以包含如表6所示的全局运动呈现指示符:
[0055][0056]
附加字段可并入sps中,以反映本公开中所述的进一步指示符。
[0057]
在一个实施例中,仍然参考图2,pps和/或sps中的sps_affine_enabled_flag可以指定基于仿射模型的运动补偿是否可以用于帧间预测。如果sps_affine_enabled_flag等于0,则可以约束语法,使得在稍后编码的视频序列(clvs)中不使用基于仿射模型的运动补偿,并且clvs的编码单元语法中可能不存在inter_affine_flag和cu_affine_type_flag。否则(sps_affine_enabled_flag等于1),可以在clvs中使用基于仿射模型的运动补偿。
[0058]
继续参考图2,pps和/或sps中的sps_affine_type_flag可以指定基于六参数仿射模型的运动补偿是否可以用于帧间预测。如果sps_affine_type_flag等于0,则语法可能会受到约束,以便在clvs中不使用基于六参数仿射模型的运动补偿,并且在clvs中的编码单元语法中可能不存在cu_affine_type_flag。否则(sps_affine_type_flag等于1),可在clvs中使用基于六参数仿射模型的运动补偿。当不存在时,sps_affine_type_flag的值可推断为等于0。
[0059]
仍然参照图2,可以通过信号在pps中发送平移cpmvs。可以预先定义控制点。例如,控制点mv 0可相对于图像的左上角,mv 1可相对于图像的右上角,mv 3可相对于图像的左下角。表4举例说明了根据使用的运动模型通过信号发送cpmv数据的示例方法。
[0060]
在示例性实施例中,并且仍然参考图2,可在编码单元、编码树等中通过信号发送的阵列amvr_precision_idx可以指定运动矢量差的分辨率amvrshift,作为非限制性示例,其可以以如下所示的表7中所示的那样定义。阵列索引x0、y0可以指定所考虑的编码块的左上角亮度采样点相对于图像的左上角亮度采样点的位置(x0、y0);当amvr_precision_idx[x0][y0]不存在时,可以推断它等于0。当inter_affine_flag[x0][y0]等于0,变量mvdl0[x0][y0][0]、mvdl0[x0][y0][1]、mvdl1[x0][y0][0]、mvdl1[x0][y0][1]表示对应于所考虑的块的调制矢量差值,可以通过将这些值偏移amvrshift来修改,例如使用mvdl0[x0][y0][0]=mvdl0[x0][y0][0]《《amvrshift;mvdl0[x0][y0][1]=mvdl0[x0][y0][1]《《amvrshift;mvdl1[x0][y0][0]=mvdl1[x0][y0][0]《《amvrshift;mvdl1[x0][y0][1]=mvdl1[x0][y0][1]《《amvrshift。其中inter_affine_flag[x0][y0]等于1,变量mvdcpl0[x0][y0][0][0]、mvdcpl0[x0][y0][0][1]、mvdcpl0[x0][y0][1][0]、mvdcpl0[x0][y0][1][1]、mvdcpl0[x0][y0][2][0]和mvdcpl0[x0][y0][2][1]可以通过偏移来修改,例如如下所示:mvdcpl0[x0][y0][0][0]=mvdcpl0[x0][y0][0][0]《《amvrshift;mvdcpl1[x0][y0][0][1]=mvdcpl1[x0][y0][0][1]《《amvrshift;mvdcpl0[x0][y0][1][0]=mvdcpl0[x0][y0]
[1][0]《《amvrshift;mvdcpl1[x0][y0][1][1]=mvdcpl1[x0][y0][1][1]《《amvrshift;mvdcpl0[x0][y0][2][0]=mvdcpl0[x0][y0][2][0]《《amvrshift;以及mvdcpl1[x0][y0][2][1]=mvdcpl1[x0][y0][2][1]《《amvrshift。
[0061][0062]
继续参考图2,全局运动可能与先前编码的帧有关。当仅存在一组全局运动参数时,运动可能与紧接在当前帧之前呈现的帧有关。
[0063]
仍然参考图2。当前主题的一些实施方式可以包括根据先前帧的先前编码的全局运动矢量来预测当前帧中的全局运动矢量,以改善压缩。
[0064]
继续参考图2,被编码为帧间图像的当前图像可以使用运动估计来改善压缩。当前图像的全局运动矢量可以在pps中用信号发送。在视频压缩的一些方法中,当编码当前帧中的全局运动参数(例如,控制点运动矢量)时,以下信息可已经被解码并可用:1)来自前一帧的全局运动参数;2)相对于list0中已经在当前帧中编码的可用参考图像的全局运动参数;以及3)被编码的全局运动参数中的控制点运动矢量。
[0065]
仍然参考图2,控制点运动矢量(cpmv)的预测运动矢量(pmv)可以从先前编码的运动矢量中确定,并且cpmv和pmv之间的差异可以被编码以减少比特和提高压缩效率。
[0066]
例如,继续参考图2,cpmv0i、cpmv1i和cpmv2i可以是待编码的帧

i’的三个控制点运动矢量。在示例性方法中,表示针对当前帧之前的帧(包括但不限于参考帧和/或紧接在前的帧)确定的矢量分量和/或矢量的cpmv0
i-1
,,可以用作预测或cpmv0i,并且可以对运动矢量之间的差进行编码。可以对运动矢量的x和y分量之间的差及其预测进行编码。
[0067]
仍然参考图2,对于cpmv(j,i),范围0《=j《3上的j可以是运动矢量数,范围0《=i《=ref_pic_count上的i可以是参考图像索引。ref_pic_count=0可指的是当前图像。cpmv(j,1)可以用作cpmv(j,0)的预测。帧中全局运动的控制点可在帧的角上,并且帧的相应角上的cpmv很可能是相似的,并且作为更好的预测。
[0068]
继续参考图2,作为非限制性示例,更复杂的运动矢量预测可以对列表中的所有可用参考图像使用cpmv。在该示例性方法中,cpmv(j,i)可以用作cpmv(j,0)的预测。在这种情况下,索引i也可以与运动矢量差一起被编码。
[0069]
仍然参考图2,先前编码的cpmv可以用作对后续cpmv进行编码的预测,该后续可以是下一个cpmv。例如,cpmv(j,i-1),可以用作cpmv(j,i)的预测。在这种情况下,索引i也可以与运动矢量差一起被编码。当只有一组cpmv被编码时,cpmv0可以是对cpmv1和cpmv2的预测。
[0070]
进一步参考图2,作为非限制性示例,表5示出了使用控制点运动矢量的具有全局运动参数的示例pps。
[0071][0072][0073]
表6示出了参考图像列表中的一个或多个帧的具有差分编码的全局运动参数的另一个示例pps。
[0074]
[0075][0076]
继续参考图2,以下是根据示例实施方式的用于导出预测cpmv的示例伪代码:
[0077]
get_cpmv_pred(i,j){
[0078]
if(i==0){
[0079]
if(j==0){
[0080]
pmv.x=0;
[0081]
pmv.y=0;
[0082]
}else{
[0083]
pmv.x=mv0_x;
[0084]
pmv.y=mv0_y;
[0085]
}
[0086]
}else{
[0087]
pmv[j]=cpmv(j,i-1)
[0088]
}
[0089]
return pmv;
[0090]
}
[0091]
在许多情况下,仍然参考图2,在一组帧中可能会出现全局运动。全局运动可能会在场景改变或摄像机运动停止时终止。因此,连续帧的全局运动可能是相似的。在一些实施方式中,如果在前一帧中使用全局运动,则前一帧的cpmv很可能是良好的预测器,从而减少运动矢量差和编码运动矢量所需的比特。
[0092]
在一些实施方式中,并继续参考图2,可以通过采用先前帧的全局运动信息来隐式地为全局运动矢量残差编码零残差。例如,如果启用了全局运动,并且如果启用了全局运动跳过模式(例如,global_motion_skip flag),则当前帧可以采用前一帧的全局运动信息作为当前帧的全局运动。在一些实施方式中,可以向参考列表(例如,list())提供索引,指示可以从哪个参考帧采用运动信息。
[0093]
图3是示出根据先前帧的先前编码的全局运动矢量预测当前帧中的全局运动矢量
的示例过程300的过程流程图。在步骤305,解码器接收当前块。当前块可以包含在解码器接收的比特流中。比特流可以包括例如在使用数据压缩时作为解码器输入的比特流中发现的数据。比特流可以包括解码视频所需的信息。接收可以包括从比特流中提取和/或解析块和相关联的信令信息。在一些实施方式中,当前块可以包括编码树单元(ctu)、编码单元(cu)或预测单元(pu)。
[0094]
在步骤310,仍然参考图3,可以从比特流中提取当前帧的控制点运动矢量的残差。在步骤315,控制点运动矢量的残差可以与当前帧的控制点运动矢量的预测相组合。
[0095]
图4是示出示例解码器400的系统框图,该示例解码器400能够通过从先前帧的先前编码的全局运动矢量预测当前帧中的全局运动矢量来解码比特流428。解码器400可以包括熵解码器处理器404、逆量化和逆变换处理器408、去块滤波器412、帧缓冲器416、运动补偿处理器420和/或帧内预测处理器424。
[0096]
在操作中,仍然参考图4,比特流428可以由解码器400接收并输入到熵解码器处理器404,熵解码器处理器404将比特流的部分熵解码成量化系数。量化系数可以被提供给逆量化和逆变换处理器408,该处理器可以执行逆量化和逆变换以创建残差信号,该残差信号可以根据处理模式被添加到运动补偿处理器420或帧内预测处理器424的输出。运动补偿处理器420和帧内预测处理器424的输出可以包括基于先前解码的块的块预测。预测和残差之和可以由去块滤波器630处理,并存储在帧缓冲器640中。
[0097]
图5是示出根据当前主题的一些方面的编码视频的过程200的示例性实施例的过程流程图,其通过从先前帧的先前编码的全局运动矢量预测当前帧中的全局运动矢量,该过程200可以降低编码复杂度同时提高压缩效率。在步骤505,视频帧可以经历初始块分割,例如,使用树结构的宏块分割方案,该方案可以包括将图像帧分割成ctu和cu。在步骤510,可以确定当前帧的控制点运动矢量的残差。在步骤515,块可以被编码并包括在比特流中。例如,编码可以包括利用帧间预测和帧内预测模式。
[0098]
图6是示出根据当前主题的一些方面的示例视频编码器600的系统框图,该示例视频编码器600能够根据先前帧的先前编码的全局运动矢量来预测当前帧中的全局运动矢量。示例视频编码器600可以接收输入视频604,该输入视频604可以根据诸如树结构宏块分割方案(例如,四叉树加二叉树)的处理方案进行初始分割或划分。树结构宏块分割方案的示例可以包括将图像帧分割成称为编码树单元(ctu)的大块元素。在一些实施方式中,每个ctu可以进一步被一次或多次划分成多个称为编码单元的子块。这种划分的最终结果可能包括一组称为预测单元的子块。也可以使用变换单元。
[0099]
示例视频编码器600可以包括帧内预测处理器415、能够根据当前主题的一些方面支持从先前帧的先前编码的全局运动矢量预测当前帧中的全局运动矢量的运动估计/补偿处理器612(也称为帧间预测处理器)、变换/量化处理器616、逆量化/逆变换处理器620、环路滤波器624、解码图像缓冲器628和/或熵编码处理器632。比特流参数可以被输入到熵编码处理器632,以包括在输出比特流636中。
[0100]
在操作中,仍然参考图6,对于输入视频604的帧的每个块,可以确定是经由图像内预测还是使用运动估计/补偿来处理块。可以将块提供给帧内预测处理器608或运动估计/补偿处理器612。如果要通过帧内预测来处理块,则帧内预测处理器608可以执行处理以输出预测器。如果要通过运动估计/补偿来处理块,则运动估计/补偿处理器612可以执行包括
根据当前主题的一些方面,根据先前帧的先前编码的全局运动矢量来预测当前帧中的全局运动矢量的处理(如果适用的话)。
[0101]
进一步参考图6,可以通过从输入视频中减去预测值来形成残差。残差可以由变换/量化处理器616接收,变换/量化处理器616可以执行变换处理(例如,离散余弦变换(dct))以产生可以被量化的系数。量化的系数和任何相关的信令信息可以被提供给熵编码处理器632,用于熵编码并包含在输出比特流636中。熵编码处理器632可以支持与编码当前块相关的信令信息的编码。此外,量化的系数可以被提供给逆量化/逆变换处理器620,其可以再现像素,像素可以与预测器组合并由环路滤波器624处理,环路滤波器624的输出可以被存储在解码图像缓冲器628中,以供运动估计/补偿处理器612使用,运动估计/补偿处理器612能够根据当前主题的一些方面从先前帧的先前编码的全局运动矢量预测当前帧中的全局运动矢量。
[0102]
仍然参考图6,尽管上面已经详细描述了一些变化,但是其他修改或添加也是可能的。例如,在一些实施方式中,当前块可以包括任何对称块(8
×
8、16
×
16、32
×
32、64
×
64、128
×
128等)以及任何非对称块(8
×
4、16
×
8等)。
[0103]
在一些实施方式中,并继续参考图6,可以实现四叉树加二叉决策树(qtbt)。在qtbt中,在编码树单元级别上,可以动态地导出qtbt的划分参数,以适应本地特性,而不需要传输任何开销。随后,在编码单元级别,联合决策树分类器结构可以消除不必要的迭代并控制错误预测的风险。在一些实施方式中,ltr帧块更新模式可以作为在qtbt的每个叶节点可用的附加选项。
[0104]
在一些实施方式中,并且仍然参考图6,可以在比特流的不同层级别用信号发送附加语法元素。例如,可以通过在序列参数集(sps)中包括编码的使能标志来为整个序列使能标志。此外,可以在编码树单元(ctu)级别对ctu标志进行编码。
[0105]
应当注意,这里描述的任何一个或多个方面和实施例可以方便地使用数字电子电路、集成电路、专门设计的专用集成电路(asics)、现场可编程门阵列(fpgas)、计算机硬件、固件、软件和/或它们的组合来实现,正如在根据本说明书的教导编程的一个或多个机器(例如,用作电子文档的用户计算设备的一个或多个计算设备、诸如文档服务器的一个或多个服务器设备等)中实现的,这对于计算机领域的普通技术人员将是显而易见的。这些不同的方面或特征可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序和/或软件中的实现,该可编程系统包括至少一个可编程处理器,该可编程处理器可以是专用或通用的,被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。对于软件领域的普通技术人员来说显而易见的是,熟练的程序员可以基于本公开的教导容易地准备适当的软件编码。上面讨论的采用软件和/或软件模块的方面和实施方式也可以包括用于帮助实现软件和/或软件模块的机器可执行指令的适当的硬件。
[0106]
这种软件可以是采用机器可读存储介质的计算机程序产品。机器可读的存储介质可以是能够存储和/或编码指令序列以供机器(例如,计算设备)执行,并使机器执行本文所描述的任何一种方法和/或实施例的任何介质。机器可读存储介质的例子包括但不限于磁盘、光盘(例如,cd、cd-r、dvd、dvd-r等)、磁光盘、只读存储器“rom”设备、随机存取存储器“ram”设备、磁卡、光卡、固态存储设备、eprom、eeprom、可编程逻辑器件(plds),和/或它们
的任意组合。这里使用的机器可读介质旨在包括单个介质以及物理上分离的介质的集合,例如光盘的集合或者与计算机存储器结合的一个或多个硬盘驱动器。如此处所使用的,机器可读存储介质不包括信号传输的暂时形式。
[0107]
这种软件还可以包括在数据载体(例如,载波)上作为数据信号承载的信息(例如,数据)。例如,机器可执行信息可以被包括作为包含在数据载体中的数据承载信号,其中该信号编码指令序列或其一部分,用于由机器(例如,计算设备)执行,以及使机器执行这里描述的方法和/或实施例中的任何一个的任何相关信息(例如,数据结构和数据)。
[0108]
计算设备的示例包括但不限于电子书阅读设备、计算机工作站、终端计算机、服务器计算机、手持设备(例如,平板计算机、智能手机等)、网络设备、网络路由器、网络交换机、网桥、能够执行指令序列的任何机器(该指令序列指定该机器要采取的动作)、以及它们的任意组合。在一个示例中,计算设备可以包括和/或被包括在信息亭中。
[0109]
图7示出了以计算机系统700的示例性形式的计算设备的一个实施例的图示,其中用于使控制系统执行本公开的任何一个或多个方面和/或方法的指令集可以被执行。还可以设想,可以利用多个计算设备来实现专门配置的指令集,用于使一个或多个设备执行本公开的任何一个或多个方面和/或方法。计算机系统700包括处理器704和存储器708,处理器704和存储器708经由总线712彼此通信,并且与其他组件通信。总线712可以包括几种类型的总线结构中的任何一种,包括但不限于使用各种总线体系结构中的任何一种的存储器总线、存储器控制器、外围总线、本地总线及其任何组合。
[0110]
存储器708可以包括各种组件(例如,机器可读介质),包括但不限于随机存取存储器组件、只读组件及其任意组合。在一个示例中,基本输入/输出系统716(bios),包括帮助在计算机系统700内的元件之间传输信息的基本例程,例如在启动期间,可以存储在存储器708中。存储器708还可以包括(例如,存储在一个或多个机器可读介质上)体现本公开的任何一个或多个方面和/或方法的指令(例如,软件)720。在另一示例中,存储器708可以进一步包括任意数量的程序模块,包括但不限于操作系统、一个或多个应用程序、其他程序模块、程序数据及其任意组合。
[0111]
计算机系统700还可以包括存储设备724。存储设备(例如,存储设备724)的示例包括但不限于硬盘驱动器、磁盘驱动器、与光学介质结合的光盘驱动器、固态存储设备及其任意组合。存储设备724可以通过适当的接口(未示出)连接到总线712。示例接口包括但不限于scsi、高级技术附件(ata)、串行ata、通用串行总线(usb)、ieee 1394(firewire)及其任意组合。在一个示例中,存储设备724(或其一个或多个组件)可以可移除地与计算机系统700接口接合(例如,经由外部端口连接器(未示出))。特别地,存储设备724和相关联的机器可读介质728可以为计算机系统700提供机器可读指令、数据结构、程序模块,和/或其他数据的非易失性和/或易失性存储。在一个示例中,软件720可以完全或部分地驻留在机器可读介质728中。在另一个例子中,软件720可以完全或部分驻留在处理器704内。
[0112]
计算机系统700还可以包括输入设备732。在一个示例中,计算机系统700的用户可以经由输入设备732向计算机系统700输入命令和/或其他信息。输入设备732的示例包括但不限于字母数字输入设备(例如,键盘)、定点设备、操纵杆、游戏手柄、音频输入设备(例如,麦克风、语音响应系统等)、光标控制设备(例如,鼠标)、触摸板、光学扫描仪、视频捕获设备(例如,静态照相机、视频照相机)、触摸屏,以及它们的任意组合。输入设备732可以通过多
种接口(未示出)中的任一种连接到总线712,包括但不限于串行接口、并行接口、游戏端口、usb接口、firewire接口、到总线712的直接接口,以及它们的任意组合。输入设备732可以包括触摸屏接口,该触摸屏接口可以是显示器736的一部分或者与显示器736分离,这将在下面进一步讨论。输入设备732可以用作用户选择设备,用于在如上所述的图形界面中选择一个或多个图形表示。
[0113]
用户还可以通过存储设备724(例如,可移动磁盘驱动器、闪存驱动器等)和/或网络接口设备740向计算机系统700输入命令和/或其他信息。诸如网络接口设备740之类的网络接口设备可以用于将计算机系统700连接到诸如网络744之类的各种网络中的一个或多个,以及连接到其上的一个或多个远程设备748。网络接口设备的示例包括但不限于网络接口卡(例如,移动网络接口卡、局域网卡)、调制解调器及其任意组合。网络的示例包括但不限于广域网(例如,互联网、企业网络)、局域网(例如,与办公室、建筑物、校园或其他相对较小的地理空间相关联的网络)、电话网络、与电话/语音提供商相关联的数据网络(例如,移动通信提供商数据和/或语音网络)、两个计算设备之间的直接连接以及它们的任意组合。诸如网络744的网络可以采用有线和/或无线通信模式。通常,可以使用任何网络拓扑。信息(例如,数据、软件720等)可经由网络接口设备740传输到计算机系统700和/或从计算机系统700传输。
[0114]
计算机系统700还可以包括视频显示适配器752,用于将可显示的图像传送到显示设备,例如显示设备736。显示设备的例子包括但不限于液晶显示器(lcd)、阴极射线管(crt)、等离子显示器、发光二极管显示器(led)及其任意组合。显示适配器752和显示设备736可以与处理器704结合使用,以提供本公开各方面的图形表示。除了显示设备之外,计算机系统700可以包括一个或多个其他外围输出设备,包括但不限于音频扬声器、打印机及其任意组合。这种外围输出设备可以通过外围接口756连接到总线712。外围接口的示例包括但不限于串行端口、usb连接、firewire连接、并行连接及其任意组合。
[0115]
前面已经详细描述了本发明的说明性实施例。在不脱离本发明的精神和范围的情况下,可以进行各种修改和添加。为了在相关的新实施例中提供多种特征组合,上述各个实施例的特征可以适当地与其他描述的实施例的特征组合。此外,虽然前面描述了许多单独的实施例,但是这里所描述的仅仅是本发明原理的应用的说明。此外,尽管这里的特定方法可以被示出和/或描述为以特定顺序执行,但是在普通技术领域内,该顺序是高度可变的,以实现这里公开的实施例。因此,该描述仅意味着作为示例,而不是限制本发明的范围。
[0116]
在上面的描述和权利要求中,诸如“至少一个”或“一个或多个”的短语可以出现在元素或特征的连接列表之后。术语“和/或”也可以出现在两个或多个元素或特征的列表中。除非与其所使用的上下文另有隐含或明确矛盾,否则这样的短语旨在表示单独列出的任何元件或特征或任何所述列举的元件或特征与任何其他列举的元件或特征的组合。例如,短语“a和b中的至少一个”、“a和b中的一个或多个”、以及“a和/或b”各自意在表示“单独的a,单独的b,或者一起的a和b。”类似的解释也适用于包含三个或更多项目的列表。例如,短语“a、b和c中的至少一个”、“a、b和c中的一个或多个”、和“a、b和/或c”各自意在表示“单独的a,单独的b,单独的c,一起的a和b,一起的a和c,一起的b和c,或者一起的a和b和c”。此外,以上和权利要求中使用的术语“基于”意在表示“至少部分基于”,使得未引用的特征或元素也是允许的。
[0117]
根据期望的配置,这里描述的主题可以体现在系统、装置、方法和/或物品中。前述描述中阐述的实施方式不代表与本文描述的主题一致的所有实施方式。相反,它们仅仅是与所描述的主题相关的方面一致的一些示例。尽管上面已经详细描述了一些变化,但是其他修改或添加也是可能的。特别地,除了在此阐述的特征和/或变化之外,还可以提供进一步的特征和/或变化。例如,上述实施方式可以针对所公开特征的各种组合和子组合和/或以上公开的几个进一步特征的组合和子组合。此外,附图中描绘的和/或本文描述的逻辑流程不一定需要所示的特定顺序或顺序来实现期望的结果。其他实施方式可以在以下权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1