运动矢量帧间预测的全局运动模型的制作方法

文档序号:29098567发布日期:2022-03-02 04:15阅读:80来源:国知局
运动矢量帧间预测的全局运动模型的制作方法
运动矢量帧间预测的全局运动模型
1.相关申请的交叉引用
2.本技术要求于2019年4月25日提交的、题为“global motion models for motion vector inter prediction”、序列号为62/838 528的美国临时专利申请的优先权,该申请通过引用整体并入本文。
技术领域
3.本发明一般涉及视频压缩领域。特别地,本发明涉及运动矢量帧间预测的全局运动模型。


背景技术:

4.视频编解码器可以包括压缩和解压缩数字视频的电子电路或软件。它可以将未压缩的视频转换为压缩格式,反之亦然。在视频压缩的上下文中,压缩视频(和/或执行其某些功能)的设备通常可以被称为编码器,而解压缩视频(和/或执行其某些功能)的设备可以称为解码器。
5.压缩数据的格式可以符合标准的视频压缩规范。压缩可能是有损的,其中压缩后的视频缺少原始视频中存在的一些信息。由于没有足够的信息来准确重建原始视频,压缩的结果可能包括:解压缩视频的质量可能低于原始未压缩视频。
6.视频质量、用于表现视频的数据量(例如,由比特率决定)、编码和解码算法的复杂性、对数据丢失和错误的敏感性、易于编辑、随机访问、端到端延迟(例如,等待时间)等之间可能存在复杂的关系。
7.运动补偿可以包括:给定参考帧(例如先前和/或未来帧),通过考虑摄像机的运动和/或视频中对象的运动,来预测视频帧或其一部分的方法。它可以应用于视频数据的编码和解码以进行视频压缩,例如,应用于使用动态图像专家组(motion picture experts group)(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所示的示例中,许多块具有相同的全局运动。在诸如图片参数集(picture parameter set,pps)或序列参数集(sequence parameter set,sps)的帧头中标识全局运动,并使用该被标识的全局运动,可以减少块所需的运动矢量信息,从而可以导致预测的改进。尽管出于说明性目的,下面描述的示例涉及在块级别确定和/或应用全局或局部运动矢量,但全局运动矢量可以被确定和/或应用至帧和/或图片的任何区域,包括由多个块组成的区域、由任何几何形式界定的区域(例如但不限于,由几何和/或指数编码定义的区域,其中,界定形状的一条或多条直线和/或曲线可以成角度和/或弯曲)、和/或整个帧和/或图片。尽管在本文中将信令描述为:在帧级别和/或帧头和/或帧的参数集中执行,但是信令可以替代地或附加地在子图片级别执行,其中,子图片可以包括:如上所述的帧和/或图片的任何区域。
22.作为示例,且继续参照图1,可以使用运动矢量(mv)来描述简单平移运动,该运动矢量具有两个分量mvx、mvy,用于描述当前帧中的块和/或像素的位移。可以使用仿射运动矢量(affine motion vector)来描述更复杂的运动,例如旋转、缩放和扭曲;其中,如本公
开中使用的,“仿射运动矢量”是描述视频图片和/或图片中表现的一组像素或点的相同位移的矢量;例如,一组像素表示对象在视频中的视图移动且在运动期间不改变外观形状。一些视频编码和/或解码方法可以使用4参数或6参数仿射模型,进行图片间编码中的运动补偿。
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,用于描述仿射运动的参数可以用于通知解码器,以在解码器处应用仿射运动补偿。在一些方法中,运动参数可以显式发送;或者,通过平移控制点运动矢量(control point motion vector,cpmv)发送,然后从平移控制点运动矢量中导出仿射运动参数。两个控制点运动矢量可用于导出四参数仿射运动模型的仿射运动参数,三个控制点平移运动矢量可用于获取六参数运动模型的参数。使用控制点运动矢量来发送仿射运动参数的信号,可以允许使用有效的运动矢量编码方法来发送仿射运动参数的信号。
31.在一些实施方式中,继续参考图1,全局运动信令可以包括于帧头中,例如pps或sps。全局运动可能因图片而异。图片的帧头中标识的运动矢量可以描述相对于先前解码的帧的运动。在一些实施方式中,全局运动可以是平移的或仿射的。所使用的运动模型(例如,参数的数量,模型是仿射的、平移的还是其他)也可以标识于图片的帧头。图2示出了可以用于全局运动的三个示例运动模型200,包括它们的索引值(0、1或2)。
32.仍然参照图2,pps可用于标识可以在图片序列之间改变的参数。对于图片序列保持一致的参数,可以在序列参数集中标识,以减小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][0043]
更详细地,pps可以包括使用控制点运动矢量来表征全局运动参数的字段,例如,如表4所示:
[0044]
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)} } [0045]
作为进一步的非限制性示例,下面的表5可以表示典型的sps:
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054][0055]
可以如上所述地扩展上述sps表,以合并如表6中所示的全局运动存在指示符:
[0056]
[0057][0058]
附加字段可以并入sps中,以反映如本公开中描述的另外的指示符。
[0059]
在实施例中,仍然参照图2,pps和/或sps中的sps_affine_enabled_flag可以指定基于仿射模型的运动补偿是否可以用于帧间预测。如果sps_affine_enabled_flag等于0,则可以约束语法,使得在后编码视频序列(code later video sequence,clvs)中不使用基于仿射模型的运动补偿,且在clvs的编码单元语法中可以不存在inter_affine_flag和cu_affine_type_flag。否则(sps_affine_enabled_flag等于1),可以在clvs中使用基于仿射模型的运动补偿。
[0060]
继续参照图2,pps和/或sps中的sps_affine_enabled_flag可以指定基于6参数仿射模型的运动补偿是否可以用于帧间预测。如果sps_affine_enabled_flag等于0,则可以约束语法,使得在clvs中不使用基于6参数仿射模型的运动补偿,且在clvs的编码单元语法中可以不存在cu_affine_type_flag。否则(sps_affine_enabled_flag等于1),可以在clvs中使用基于6参数仿射模型的运动补偿。当sps_affine_type_flag不存在时,可以推断sps_affine_type_flag的值等于0。
[0061]
仍然参照图2,平移cpmv可以标识于pps中。可以预定义控制点。例如,控制点mv0可以相对于图片的左上角,mv1可以相对于右上角,而mv3可以相对于图片的左下角。表4示出了用于根据所使用的运动模型,标识cpmv数据的示例方法。
[0062]
在典型实施例中,仍然参照图2,可以在编码单元、编码树等中标识出数组amvr_precision_idx,数组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对这些值移位来进行修改,例如使用:
[0063]
mvdl0[x0][y0][0]=mvdl0[x0][y0][0]《《amvrshift;
[0064]
mvdl0[x0][y0][1]=mvdl0[x0][y0][0]《《amvrshift;
[0065]
mvdl1[x0][y0][0]=mvdl1[x0][y0][0]《《amvrshift;和,
[0066]
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]可以通过移位进行修改,例如如下:
[0067]
mvdcpl0[x0][y0][0][0]=mvdcpl0[x0][y0][0][0]《《amvrshift;
[0068]
mvdcpl1[x0][y0][0][1]=mvdcpl1[x0][y0][0][1]《《amvrshift;
[0069]
mvdcpl0[x0][y0][1][0]=mvdcpl0[x0][y0][1][0]《《amvrshift;
[0070]
mvdcpl1[x0][y0][1][1]=mvdcpl1[x0][y0][1][1]《《amvrshift;
[0071]
mvdcpl0[x0][y0][2][0]=mvdcpl0[x0][y0][2][0]《《amvrshift;和,
[0072]
mvdcpl1[x0][y0][2][1]=mvdcpl1[x0][y0][2][1]《《amvrshift。
[0073][0074]
继续参照图2,全局运动可以相对于先前编码的帧。当仅存在一组全局运动参数时,运动可能与紧接于当前帧之前呈现的帧有关。
[0075]
进一步地参照图2,全局运动可以代表帧中的主要运动。帧中的许多块可能具有与全局运动非常相似的运动。例外情况可能包括具有局部运动的块。保持块运动补偿与全局运动兼容,可以降低编码器的复杂度和解码器的复杂度,并提高压缩效率。
[0076]
在一些实施方式中,仍然参照图2,如果在诸如pps或sps的帧头中标识有全局运动,则可以将sps中的运动模型应用于图片中的所有块。例如,如果全局运动使用平移运动(例如,motion model=0),则帧中的所有预测单元(prediction unit,pu)也可能限于平移运动(例如,motion model=0)。在这种情况下,可能不会使用自适应运动模型。这也可以使用use_gm_constrained_motion_models标志在sps进行标识。当此标志设置为1时,在解码器中可能不会使用自适应运动模型,而是可以将单个运动模型用于所有pu。
[0077]
仍然参照图2,在当前主题的一些实施方式中,运动信令可能不会在多个pu上改变。相反地,可以通过在sps中标识一次运动模型,来使用固定运动模型。这种方法可以代替全局运动。可以在编码器处指定使用固定运动模型,以降低复杂性(例如,编码器可能限于平移模型),这对于低功率设备(例如低计算功率设备)而言可能是有利的。例如,可能不使用仿射运动模型;这可以在编码器配置文件中无限制地指定。这样的示例可能对实时应用有用,例如视频会议、物联网(information of things,iot)基础设施、安全摄像头等。通过使用固定运动模型,可能不需要在比特流中包括多余的信令。
[0078]
当前主题不限于利用全局运动的编码技术,而是可以应用于广泛的编码技术。
[0079]
图3是说明对图片中的所有块使用给定运动模型的过程300的典型实施例的过程流程图。在步骤305,解码器接收当前块。当前块可以包含在解码器所接收的比特流内。比特流可以包括:例如,在使用数据压缩时,作为解码器的输入的比特流中发现的数据。比特流
可以包括解码视频所需的信息。接收比特流可以包括从比特流中,提取和/或解析块和相关联的信令信息。在一些实施方式中,当前块可以包括:编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)和/或预测单元(pu)。
[0080]
在步骤310,仍然参照图2,从比特流中提取与当前帧相关联的帧头,该帧头包括表征启用全局运动的信号,和进一步表征运动模型的参数的信号。在步骤315,可解码当前帧。解码可以包括对于当前帧中的每个当前块,使用运动模型的参数。
[0081]
图4是说明典型解码器400的系统框图,该解码器400能够对图片中所有块使用给定运动模型来解码比特流428。解码器400可以包括:熵解码器处理器404、逆量化和逆变换处理器408、去块滤波器412、帧缓冲器416、运动补偿处理器420和/帧内预测处理器424。
[0082]
在操作中,仍然参考图4,比特流428由解码器400接收,并输入至熵解码器处理器404;熵解码器处理器404可以将比特流的部分熵解码为量化系数。量化系数可以提供给逆量化和逆变换处理器408,该逆量化和逆变换处理器408可以执行逆量化和逆变换以创建残差信号;该残差信号可以根据处理模式,添加至运动补偿处理器420或帧内预测处理器424的输出。运动补偿处理器420和/或帧内预测处理器424的输出可以包括基于先前解码块的块预测。块预测和残差之和可以通过去块滤波器630处理,并存储于帧缓冲器640中。
[0083]
图5是说明根据当前主题的一些方面、对图片中的所有块使用给定运动模型来进行视频编码的典型过程500的过程流程图,其可降低编码复杂度的同时,提高压缩效率。在步骤505,视频帧可以经过初始块分割。作为非限制性示例,其可以使用树结构宏块分割方案来执行。该树结构宏块分割方案可以包括:将图片帧分割成ctu和cu。
[0084]
在步骤510,仍然参照图5,可以确定当前块的全局运动。确定可以包括确定全局运动的运动模型。在步骤515,块可以被编码,并被包含于比特流中。例如,编码可以包括利用帧间预测和帧内预测模式。可以在帧头设置标志,以指示确定的运动模型(用于全局运动)应该在解码期间用于所有块。
[0085]
图6是说明能够对图片中所有块使用给定运动模型的示例性解码器600的系统框图。示例视频编码器600可以接收输入视频604,该输入视频604可以根据诸如树结构宏块分割方案(例如,四叉树加二叉树)的处理方案,进行初始分段和/或划分。树结构宏块分割方案的示例可包括将图片帧分割成被称为编码树单元(ctu)的大块元素。在一些实现方式中,每个ctu可以进一步被一次或多次划分为若干被称为编码单元(cu)的子块。该分割的最终结果可以包括可被称为预测单元(pu)的一组子块。也可以使用变换单元(transform unit,tu)。
[0086]
仍然参照图6,示例视频编码器600可以包括:帧内预测处理器415、能够对图片中的所有块使用给定运动模型的运动估计/补偿处理器612(也称为帧间预测处理器)、变换/量化处理器616、逆量化/逆变换处理器620、环路滤波器624、解码图片缓冲器628和/或熵编码处理器632。比特流参数可以输入至熵编码处理器632,以包含于输出比特流636中。
[0087]
在操作中,仍然参照图2,对于输入视频604的帧的每个块,可以确定是通过画面内预测还是使用运动估计/补偿来处理该块。块可以被提供给帧内预测处理器608或运动估计/补偿处理器612。如果要通过帧内预测处理块,则帧内预测处理器608可执行处理以输出预测值。如果要通过运动估计/补偿处理块,则运动估计/补偿处理器612可以执行包括对图片中的所有块使用给定运动模型的处理(如果适用的话)。
[0088]
仍然参照图6,可以通过从输入视频中减去预测值来形成残差。残差可由变换/量化处理器616接收,变换/量化处理器616可执行变换处理(例如,离散余弦变换(discrete cosine transform,dct)),以产生可被量化的系数。量化系数和任意关联的信令信息可以被提供给熵编码处理器632,以用于熵编码并包含于输出比特流636中。熵编码处理器632可以支持与编码当前块有关的信令信息的编码。此外,量化系数可以提供给逆量化/逆变换处理器620,该逆量化/逆变换处理器620可以再现像素,该像素可以与预测值组合并由环路滤波器624处理;环路滤波器624的输出可以存储于解码图片缓冲器628中,以供运动估计/补偿处理器612使用;该运动估计/补偿处理器612能够对图片中的所有块使用给定运动模型。
[0089]
继续参照图6,尽管上面已经详细描述了一些变形,但其他修改或添加也是可能的。例如,在一些实施方式中,当前块可包括任何对称块(8
×
8、16
×
16、32
×
32、64
×
64、128
×
128等)以及任何非对称块(8
×
4、16
×
8等)。
[0090]
仍然参照图6,在一些实施方式中,可以实现为四叉树加二叉决策树(quadtree plus binary decision tree,qtbt)。qtbt中,在编码树单元的级别,可以动态推导出qtbt的分区参数,以适应本地特性,而无需传播任何开销。随后,在编码单元级别,联合分类器决策树结构可以消除不必要的迭代,并控制错误预测的风险。在一些实施方式中,ltr帧块更新模式可以作为在qtbt的每个叶节点上可用的附加选项。
[0091]
在一些实施方式中,继续参考图6,可以在比特流的不同层次级别,标识附加语法元素。例如,可以通过包括序列参数集(sequence parameter set,sps)中编码的启用标志,来为整个序列启用标志。此外,可以在编码树单元(ctu)级别对ctu标志进行编码。
[0092]
应当注意的是,本文描述的任何一个或多个方面和实施例可以通过使用数字电子电路、集成电路、专门设计的专用集成电路(asic)、现场可编程门阵列(fpga)计算机硬件、固件、软件和/或其组合来方便地实现例如,根据本说明书的教导的编程,在一台或多台机器(例如,用作电子文档的用户计算设备的一个或多个计算设备,诸如文档服务器等一个或多个服务器设备)上实现或实施,这对计算机领域的普通技术人员来说是显而易见的。这些不同的方面或特征可以包括在一个或多个计算机程序和/或软件中的实现方式,这些计算机程序和/或软件可以在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用的或通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统、至少一个输入设备和至少一个输出设备传输数据和指令。基于本公开的教导,熟练的程序员易于准备适当的软件编码;这对于软件领域的普通技术人员将是显而易见的。上面讨论的采用软件和/或软件模块的方面和实现还可以包括用于辅助实现软件和/或软件模块的机器可执行指令的适当硬件。
[0093]
这种软件可以是采用机器可读存储介质的计算机程序产品。机器可读存储介质可以是能够存储和/或编码由机器(例如,计算设备)执行的指令序列,并使机器执行本文描述的任何一种方法和/或实施例的任何介质。机器可读存储介质的示例,包括但不限于:磁盘、光盘(例如cd、cd-r、dvd、dvd-r等)、磁光盘、只读存储器“rom”设备、随机存取存储器“ram”设备、磁卡、光卡、固态存储设备、eprom、eeprom、可编程逻辑器件(pld)和/或其任意组合。如本文所用,机器可读介质旨在包括:单个介质,以及物理上分离的介质的集合,例如,一组光盘与一个或多个硬盘驱动器与计算机内存的组合。如本文所使用的,机器可读存储介质不包括信号传输的暂时形式。
[0094]
这种软件还可以包括承载于数据载体(例如载波)作为数据信号的信息(例如,数据)。例如,机器可执行信息可以作为数据承载信号包含于数据载体中;数据载体中,信号对指令序列或其一部分进行编码,以供机器(例如,计算设备)执行,并对任何相关的信息(例如,数据结构和数据)进行编码,从而使机器执行本文描述的任何一种方法和/或实施例。
[0095]
计算设备的示例,包括但不限于:电子书阅读设备、计算机工作站、终端计算机、服务器计算机、手持设备(例如,平板计算机、智能手机等)、网络设备、网络路由器、网络交换机、网桥、任何能够执行指令序列(这些指令指定该机器要采取的动作)的机器以及它们的任何组合。在一个示例中,计算设备可以包括和/或被包括于信息亭中。
[0096]
图7示出了计算机系统700的示例形式的计算设备的一个实施例的图解表示,可以在其中执行指令指令集,使控制系统执行本公开的任何一个或多个方面和/或方法。还可以预期的是,多个计算设备可用于实现一组专门配置的指令集,使一个或多个设备执行本公开的任何一个或多个方面和/或方法。计算机系统700包括:处理器704和存储器708,它们通过总线712彼此通信并与其他组件通信。总线712可以包括几种类型的总线结构中的任一种,包括但不限于使用各种总线架构中的任何一种的存储器总线、存储器控制器、外围总线、本地总线及其任意组合。
[0097]
存储器708可包括各种组件(例如,机器可读介质),包括但不限于随机存取存储器组件、只读组件及其任意组合。在一个示例中,基本输入/输出系统716(basic input/output system,bios)包括:帮助在计算机系统700内的元件之间传输信息的基本例程,例如在启动期间;该基本例程可以存储于存储器708中。存储器708还可包括:(例如,存储于一个或多个机器可读介质的)指令(例如,软件)720;该指令实现本公开的任何一个或多个方面和/或方法。在另一示例中,存储器708还可以包括任意数量的程序模块,包括但不限于:操作系统、一个或多个应用程序、其他程序模块、程序数据及其任意组合。
[0098]
计算机系统700还可以包括存储设备724。存储设备(例如,存储设备724)的示例包括但不限于:硬盘驱动器、磁盘驱动器、与光学介质组合的光盘驱动器、固态存储设备以及其任意组合。存储设备724可以通过适当的接口(未示出)连接至总线712。示例接口包括但不限于:scsi、高技术配置(advanced technology attachment,ata)、串行ata、通用串行总线(universal serial bus,usb)、ieee 1394(firewire)及其任何组合。在一个示例中,存储设备724(或其一个或多个组件)可以与计算机系统700可移除地交互(例如,通过外部端口连接器(未示出))。特别地,存储设备724和相关联的机器可读介质728可以为计算机系统700提供机器可读指令、数据结构、程序模块和/或其他数据的非易失性和/或易失性存储。在一个示例中,软件720可以完全或部分地驻留在机器可读介质728内。在另一个示例中,软件720可以完全或部分地驻留在处理器704内。
[0099]
计算机系统700还可以包括输入设备732。在一个示例中,计算机系统700的用户可以通过输入设备732,将命令和/或其他信息输入至计算机系统700。输入设备732的示例包括但不限于:字母数字输入设备(例如键盘)、定点设备、操纵杆、游戏手柄、音频输入设备(例如麦克风、语音响应系统等)、光标控制设备(例如鼠标)、触摸板、光学扫描仪、视频捕获设备(例如静态相机、摄像机)、触摸屏以及其任意组合。输入设备732可以通过多种接口(未示出)中的任一种连接至总线712,包括但不限于:串行接口、并行接口、游戏端口、usb接口、firewire接口、连接至总线712的直接接口及其任意组合。输入设备732可以包括触摸屏界
面,该界面可以是显示器736的一部分或与显示器736分开,这将在下面进一步讨论。输入设备732可以用作用户选择设备,用于在如上所述的图形界面中选择一个或多个图形表示。
[0100]
用户还可以经由存储设备724(例如,可移动磁盘驱动器、闪存驱动器等)和/或网络接口设备740,向计算机系统700输入命令和/或其他信息。网络接口设备(例如网络接口设备740)可以用于将计算机系统700连接至各种网络中的一个或多个(例如网络744),以及与该网络连接的一个或多个远程设备748。网络接口设备的示例包括但不限于:网络接口卡(例如,移动网络接口卡、lan卡)、调制解调器及其任意组合。网络的示例包括但不限于:广域网(例如互联网、企业网络)、局域网(例如与办公室、建筑物、校园或其他相对较小的地理空间相关联的网络)、电话网络、与电话/语音供应商相关联的数据网络(例如,移动通信供应商数据和/或语音网络)、两个计算设备之间的直接连接及其任意组合。网络(例如网络744)可以采用有线和/或无线通信模式。通常,可以使用任何网络拓扑。可以通过网络接口设备740,将信息(例如,数据、软件720等)传送至计算机系统700和/或从计算机系统700传送出信息(例如,数据、软件720等)。
[0101]
计算机系统700还可以包括视频显示适配器752,用于将可显示图像传送到显示设备(例如显示设备736)。显示装置的示例包括但不限于:液晶显示器(lcd)、阴极射线管(crt)、等离子显示器、发光二极管(led)显示器及其任意组合。显示适配器752和显示设备736可以与处理器704结合使用,以提供本公开的方面的图形表示。除了显示设备之外,计算机系统700可以包括一个或多个其他外围输出设备,包括但不限于音频扬声器、打印机及其任意组合。这种外围输出设备可以通过外围接口756连接至总线712。外围接口的示例包括但不限于:串行端口、usb连接、firewire连接、并行连接及其任意组合。
[0102]
以上是对本发明的说明性实施例的详细描述。在不脱离本发明的精神和范围的情况下,可以进行各种修改和添加。上述各种实施例中的每一个的特征可以适当地与其他描述的实施例的特征组合,以便在相关联的新实施例中提供多种特征组合。另外,虽然前面描述了多个单独的实施例,但本文所描述的仅仅是对本发明原理的应用的说明。此外,尽管本文中的特定方法可以被图示和/或被描述为以特定顺序执行,但是在实现本文公开的实施例的普通技术范围内,排序是高度可变的。因此,该描述仅旨在作为示例,并不以其他方式限制本发明的范围。
[0103]
在以上描述和权利要求中,诸如“至少一个”或“一个或多个”之类的短语可以出现在元素或特征的组合列表之后。术语“和/或”也可以出现在两个或更多元素或特征的列表中。除非与其所使用的上下文另有隐含或明确矛盾,否则这样的短语旨在表示单独列出的任何元素或特征、或任何列举的元素或特征与任何其他列举的元素或特征的组合。例如,短语“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一起”。此外,以上和权利要求中使用的术语“基于”旨在表示“至少部分基于”,使得未列举的特征或元素也是允许的。
[0104]
取决于期望的配置,本文描述的主题可以体现在系统、设备、方法和/或物品中。前述描述中阐述的实施方式并不代表与此处描述的主题一致的所有实施方式。相反地,它们仅仅是与所描述的主题相关的方面一致的一些示例。尽管上面已经详细描述了一些变体,
但其他修改或添加也是可能的。特别地,除了在此阐述的那些之外,还可以提供进一步的特征和/或变化。例如,上述实施方式可涉及所公开特征的各种组合和子组合和/或上述若干进一步特征的组合和子组合。此外,在附图中描绘的和/或本文描述的逻辑流程不一定需要以所示的特定顺序或序列顺序来实现期望的结果。其他实现可能在以下权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1