用于在有限带宽介质上进行视频通信的方法和装置的制作方法

文档序号:7634908阅读:251来源:国知局
专利名称:用于在有限带宽介质上进行视频通信的方法和装置的制作方法
技术领域
本发明一般涉及在窄带宽或有限带宽介质上传送数据的通信系统。更具体地,本发明涉及用于在诸如普通老式电话服务(POTS)线路的窄带宽传输信道上进行视频传输的方法和装置。
背景技术
可视电话已经在市场存在了若干年,但是仅获得了有限的商业成功。可视电话的不成功部分地归因于其无法良好工作的事实。将质量可接受的声音和视频经由现存的电话线路进行发送是存在问题的。
某些可用的视频会议系统提供可接受的视频和音频质量,并且已经获得了某些商业成功。这些视频会议系统有赖于宽带通信连接,例如租用线路、ISDN(综合业务数字网)、DSL(数字用户线路)等等。为提供可接受的音频和视频质量,高带宽是必要的。
标准电话线路上的可用带宽太低,以至于不能支持每秒30帧的行业标准视频。当前,使用压缩,在标准U.S.电话线路上可获得的最佳性能大约是在一个方向中每秒15个视频帧。因为每秒15个视频帧小于人眼的暂留时间,其中,人眼的暂留时间通常大约是每秒24帧,所以每秒15个视频帧将导致具有不可接受的跳动的视频质量。即便采用昂贵的压缩硬件,所生成视频的质量也是不可接受的。
因此,对于视频通信系统存在如下需要,即,当经由标准模拟电话线路进行双向传送时,该视频通信系统不依赖于昂贵的压缩硬件并且仍然可以产生可接受的视频显示。

发明内容
在一个实施例中,本发明提供了在第一帧和第二帧之间构造图像的至少一个中间帧的方法。该方法包括识别在所述第一和第二帧中的至少一帧内具有至少一个相关特性的多个点。该方法还包括确定所述多个点中的至少一个点是否已经在所述第一帧和所述第二帧之间改变其位置。该方法还包括至少将所述多个点中已经改变其位置的所述至少一个点与所述第一帧内的第一像素以及所述第二帧内的第二像素相关。该方法还包括确定所述第一像素的位置与所述第二像素的位置之间的关系。
在另一个实施例中,本发明提供了一种用于在第一和第二帧之间构造图像的至少一个中间帧的系统。该系统包括识别器电路,配置为识别在所述第一和第二帧中的至少一个帧内具有至少一个相关特性的多个点。该系统还包括比较电路,配置为确定所述多个点中的至少一个点是否已经在所述第一帧和所述第二帧之间改变其位置。该系统还包括处理电路,配置为将所述多个点中已经改变其位置的至少一个点至少与所述第一帧内的第一像素和所述第二帧内的第二像素相关。处理电路进一步配置为确定所述第一像素的位置和所述第二像素的位置之间的关系。


图1是用于在有限带宽介质上进行视频通信的系统的一个实施例的方框图。
图2是在图1的有限带宽视频通信系统的一端生成并且在其上进行传输的视频流的视图。
图3是从图2所示视频流中选出的多个帧的视图,所述视频流在图1的视频通信系统上进行传输。
图4是在目的地处显示的视频帧的视图,其包括来自图3的发送帧以及重构帧。
图5是示出在收发机处重构中间帧的方法的一个实施例的流程图。
图6是示出对视频流中变化对象的元素进行识别的方法的一个实施例的流程图。
图7A-B是示出识别作为对象边界元素的元素并且对视频帧内的对象进行轮廓勾勒(outlining)和定位的方法的一个实施例的流程图。
图8是示出根据图7所示方法对对象进行轮廓勾勒的方法的一个实施例的流程图。
图9A是例如球运动通过单色背景的实例的四个视频帧的视图。
图9B是与用于图9A的多个视频帧的不同矩阵相对应的帧表示的视图。
图10A是图9A的四个视频帧的更详细视图,其对在确定球的运动方程过程中所使用的点进行识别。图10B是图9B的帧表示的更详细视图,其对在确定球的运动方程过程中所使用的点进行识别。
图11A-11D示出在视频通信目的地处重构用于视频流输出的视频帧的方法的一个实施例。
图12是源收发机电路的一个实施例的方框图。
图13是目的地收发机电路的一个实施例的方框图。
具体实施例方式
现在,将参考附图对本发明的实施例进行描述,其中,类似的标号在全文中指类似的单元。不应以任何有限的或限制性的方式来理解在本文提供的描述中所使用的术语,仅仅是结合了本发明某些特定实施例的详细描述来使用该术语。此外,本发明的实施例可以包括若干新颖特征,但是这些新颖特征中没有一个单一特征单独形成其预期属性或是实现本文所述发明所必需的。
图1是配置为在有限带宽介质上传送视频的视频通信系统20的一个实施例的方框图。系统20包含视频源22,其连接到源发射机/接收机(收发机)24。例如,视频源22可以是诸如照相机的图像采集设备、诸如数字化视频光盘(DVD)播放器的视频信号发生器、盒式磁带录像机(VCR)、或者具有视频输出的任何设备(例如计算机)或者从远程源接收视频信号的通信站。将源收发机配置为经由普通老式电话服务(POTS)28与目的地收发机26进行通信,普通老式电话服务(POTS)28也被称为公共交换电话网络(PSTN)。本领域技术人员应当清楚,还可以将收发机24、26配置为用于无线通信。为了便于描述,本文利用标记“源”和“目的地”来引用视频通信系统20的某些单元,以便说明仅在该实例中的视频传输方向,然而这些标记并不限制本发明的范围。
将目的地收发机26连接到视频显示器34,将视频显示器34配置为对在目的地收发机26处所接收的视频进行显示。系统还可以包括附加的视频源36以及附加的显示器38,其中附加的视频源36连接到目的地收发机26和显示器34,并且附加的显示器38连接到视频源22和源收发机24。
在一个实施例中,视频源22包含图像采集设备,其以诸如至少每秒30帧的速率对图像进行采集。源收发机24与目的地收发机26进行通信,以便测试传输线路可接受的最高帧传输速率,随后以传输线路28可接受的、诸如每秒1帧的速率将图像发送到目的地收发机26。在一个实施例中,对帧传输速率进行最大化,同时保证可接受的数据传输精度,在这种情况下,帧传输速率可以大于每秒1帧。源收发机24还在目的地收发机请求验证或确认时与目的地收发机26进行通信。
如上文所述,目的地收发机26与源收发机24进行通信,以便对传输线路28进行测试以确定可接受的最高帧传输速率。如果由目的地收发机26所接收的数据的质量变得不可接受,那么目的地收发机26与源收发机24进行协调,以便动态地改变帧传输速率。如下文更详细描述的,目的地收发机26从接收自源收发机26的图像或帧中重构视频流,与源收发机24关于视频流重构处理的任何部分进行确认和验证。在一个实施例中,重构的视频流包括在显示器34上的多达每秒30帧的显示。
参考图2,源收发机24对视频流100进行接收,该视频流100包含来自视频源22的多个帧。在该示例性实施例中,源收发机24从将要传输的视频流中选择每30帧中的第一帧(原始的(unshaded)帧1、帧2、帧3和帧4)。散布在发送帧之间的帧在这里被称为中间帧,将其存储在源收发机一段预定的时间周期,例如30秒。这样,如在这里所使用的,“中间”帧不仅仅是指在两个发送帧的中间处创建的帧,还可以指在两个发送帧之间创建的任何帧。在一个实施例中,中间帧的预定存储周期至少是目的地收发机26询问源收发机24关于中间帧的信息所需要的时间长度。
如图3所示,源收发机24将所选择的帧105发送到目的地收发机26,所选择的帧105包含帧1、帧2、帧3和帧4。源收发机24可以继续在某一长度的时间内以这种格式发送帧。当目的地收发机26在重构中识别出问题或困难时,目的地收发机26从源收发机24请求信息。如下文所详细描述的,在目的地收发机26处接收均匀分布的视频信息帧105,并将其用于在每个接收帧之间重构29个帧。图4示出重构帧与接收帧(帧1、帧2、帧3、帧4)的合并,其构成了用于在视频显示器34上显示的连续视频流110。期望使重构的视频流110类似于原始输入的视频流100(见图2)。
I.帧传输速率的调节可以通过最小化收发机24、26之间所发送的信息数量来减少视频通信系统20所使用的信道带宽。例如,在传输线路28上帧传输速率的减少对应于带宽使用的减少。
在帧传输速率调节的一个实施例中,对从源收发机24发送的多个信息帧进行比较,以便确定从一帧到下一帧发生变化的像素的总百分比。目的地收发机26将一帧的各个像素与另一帧的各个像素进行比较,以便确定每个像素的信息是否在帧间发生了变化,或者确定像素信息是否在阈值之上或之下改变了预定的数量。在一个实施例中,阈值是从一帧到下一帧具有不同像素信息的总像素的百分比,其可以在从40%至80%的范围内。例如,当从一帧到下一帧(例如从帧1到帧2)过程中帧内60%以上的像素改变了像素信息时,将从源收发机24发送的视频帧(帧1、帧2、帧3、帧4)识别为处于60%以上的范围。结果,用于每秒发送一帧的像素变化阈值是60%,从而在该实例中,源收发机24继续将每30帧中的第一帧发送到目的地收发机26。然而,一旦总变化率下降到小于60%,目的地收发机26就逐渐增加使用目的地缓冲器中的信息,并且可以以小于每秒一帧的频率发送视频帧。例如,在一列视频帧中,仅有一小部分可能随着时间而变化,例如闪光(flashing light)占视频帧内总像素的不足60%。在这种情况下,源收发机24可以将帧传输速率减少到低于每秒一帧,并且仅发送关于从一帧到下一帧具有变化信息的像素的信息。这样,源收发机24可以仅在必要或期望时才发送完整帧,并且可以继续仅发送对象和背景信息,同时保持该信息独立于并且链接到与其关联的帧和对象。如在这里所使用的,不必将术语“对象”限制于观察者的眼睛所观看到的“物理”对象,其是指具有共同或相关特性的两个或多个(即一组)像素,例如,两个或多个经历相同位置或运动速率、相同旋转速率及/或相同内容变化速率等的像素。如果期望,可以完整地发送整个帧、背景或对象,其中,无论使用何种方法在目的地收发机26处生成帧,视频流重构过程几乎都是相同的。
II.帧内容的分类在一个实施例中,根据各种标准对接收帧的内容进行分类。在一个实施例中,第一,将帧的所有内容(即,各个像素)分类为背景部分或对象部分。第二,将对象分类为静止对象或运动对象。第三,根据运动类型对运动对象进行分类,其中,运动包括(1)平移、(2)旋转或(3)自旋,或者这三类运动的任意组合。对于运动对象,系统确定运动方程,以便确定对象在中间帧内的位置。对于静止对象,系统确定对象中每个变化元素在中间帧内的像素值。每个对象将具有运动方程或静止方程。
根据对一列帧的内容进行分类的方法的一个实施例,目的地收发机26首先对该列帧内的静止元素进行定位,之后对运动像素进行识别。为了说明,使用四(4)帧比较来寻找静止元素和运动像素。将包含多个像素的每一帧算术映射为相应的矩阵XN,其中用于每个矩阵X的下标“N”对应于帧号。元素xij在矩阵中的物理位置对应于像素在视频帧内的物理位置。下标“i”和“j”分别对应于元素x在矩阵X中行和列的位置。矩阵中元素的数值是相应帧内的像素的值,并且可以包括诸如对应于红、绿和/或蓝级别的值的颜色信息。将下列矩阵X1到X4定义为用于四帧比较,其中指定帧(例如帧1)是包括30个帧的一列帧中的第一帧帧1=X1(像素矩阵)(1)帧2=X2(像素矩阵)(2)帧3=X3(像素矩阵)(3)帧4=X4(像素矩阵)(4)III.使用有限组帧重构视频帧的方法概述在图5的流程图中示出了使用有限组帧对视频帧进行重构的方法50的一个实施例。在一个实施例中,由目的地收发机26实现方法50,但是也可以由源收发机24或者由源和目的地收发机24、26的组合来实现方法50。方法50从步骤55开始,并且继续进行到步骤60,其中,目的地收发机对一组帧(例如,帧1、帧2、帧3和帧4)内的对象或多个对象进行识别。在该实施例中,源收发机将被识别的帧发送到目的地接收机。通过在步骤60中对一个或多个对象进行识别,将帧内剩余的、未被识别为对象部分的像素或元素分类作为静止背景部分。在步骤60之后,方法50继续进行到步骤65,其中,目的地收发机26确定被识别的对象是否在运动。如果在步骤65中对所述确认的答案为否,即对象不在运动,那么方法50继续进行到步骤70,在步骤70中,目的地收发机26将对象分类为静止对象。如果在步骤65中对所述确认的答案为是,即对象在运动,那么方法50继续进行到步骤75,在步骤75中,目的地收发机26将对象分类为运动对象,并且确定对象的运动方程。对于在步骤60中识别的所有对象,重复执行步骤65和70或75。
对于在步骤70中所确定的、被识别为静止对象的对象,目的地收发机26确定中间帧内静止对象的像素值(例如,颜色分量信息)。为了确定静止对象在中间帧内的像素值,目的地收发机可以使用若干规则中的一个规则。在一个实施例中,目的地收发机可以使用与(a)在帧1中、(b)在帧2中和/或(c)通过对帧1和帧2中静止对象的每个像素导出平均像素信息中所找到的静止对象的像素值相同的像素值。在另一个实施例中,目的地收发机可以从源收发机为静止对象的一个或多个像素请求像素信息。对于背景中的像素,帧1、中间帧和帧2中的像素值几乎是相同的。
对于被识别为运动对象并且具有如步骤75中所确定的运动方程的对象,方法50继续进行到步骤85。在步骤85中,目的地收发机执行运动方程,从而确定在中间帧中对象的位置以及对象的像素值。在步骤85之后,目的地收发机使用来自步骤60、75和85的确定,在步骤90中对中间帧进行重构。在步骤90中,将一组帧中未在步骤60中被识别为对象的像素或元素在中间帧上映射为静止背景部分。同样,在步骤90中,使用在步骤70中所确定的静止对象的像素值以及运动对象的对象位置和像素值信息来重构中间帧。在步骤90中对中间帧进行重构之后,方法50继续进行以在步骤95中结束。在下文中将对方法50中的每个步骤进行更详细的描述。
IV.背景元素将帧内不是对象部分的所有像素定义为处于背景平面上,并且因此不将其定义为将要进行数学处理的对象。背景平面可以具有颜色和/或阴影变化,因此颜色和/或阴影变化不总是用于定义对象的可靠参数。然而,该信息仍可用于获得关于正在传送的视频帧的基本信息,因此可将这些信息传送到目的地收发机。
为了在从帧1到帧4的帧流中寻找静止或背景元素,目的地收发机26将对应于所述四个帧中的每一帧的帧矩阵(X1、X2、X3和X4)进行比较(例如彼此相减),以便获得多个差异矩阵ΔXNN。例如,由差异矩阵ΔX12来表示对帧1和帧2的比较。在本实施例中,源收发机24每秒发送一个帧,使得帧1和帧2的传输之间的时间是1秒,并且帧1和帧4的传输之间的时间是3秒。因此,每个差异矩阵还具有相应的时间差异ΔTNN,其中,例如差异矩阵ΔX12的时间差异ΔT12是1秒。因此,使用帧矩阵X1、X2、X3和X4来定义下面的差异矩阵,并且每个差异矩阵由差异矩阵元素Δxij组成ΔX12=X1-X2,其中,ΔT12=1秒(5)ΔX13=X1-X3,其中,ΔT13=2秒(6)ΔX14=X1-X4,其中,ΔT14=3秒(7)ΔX23=X2-X3,其中,ΔT23=1秒(8)ΔX34=X3-X4,其中,ΔT34=1秒(9)根据上述关系,差异矩阵中的每个零值元素Δxij指示了在差异矩阵中初始矩阵帧和相应的最后矩阵帧之间的静止元素。将差异矩阵中由零值指示的静止元素分类为静止背景部分或者位于非运动对象内部。一旦目的地收发机26使用差异矩阵识别出静止或背景元素,就将其映射到存储器中。差异矩阵中的任何非零值定义了运动或变化的元素。仅仅对于来自差异矩阵的非零或非静止元素,首先对运动进行估计,其次对静止变化进行估计。
在一个实施例中,使用大于但是接近于零的阈值来确定差异矩阵中的非零元素。例如,在差异矩阵中,将变化超过5%的元素确定为非零元素,并且将变化小于5%的元素确定为零元素。在一个实施例中,元素的变化百分比是指像素值的变化百分比,其中将像素定义为8比特二进制数。例如,阈值可以是1%、2%、3%、4%、5%、6%、7%、8%、9%、10%、11%、12%、13%、14%或15%,并且可以随着所使用的图像采集设备以及主体被拍摄的环境而改变。另外,可以动态地对阈值进行调节。
V.定义对象如上文所述,将对象识别为运动对象或静止对象。运动对象具有在某个前景平面上移动的、可定义的边界,其中,通过利用具有相同或不同系数的基本方程由联合的(例如相邻的)像素运动来定义运动对象。静止变化的对象通常是指具有可定义边界的对象,该对象具有很少或没有与其相关的运动,但是可能包含在帧流上的颜色和亮度的变化。该描述首先提供运动对象的特征。
如上文所述,运动对象的视频运动是其在帧流或者从X1到X2到X3到X4…到XN的矩阵内部的物理运动。运动对象的边界可以是半连续的,并且通常在颜色上与帧序列中的背景或其它对象不同。构成对象的元素可以包含颜色和亮度的变化,并且构成对象的元素数目可以随着对象变大或变小、移近或远离图像采集设备或者改变形状而增加或减少。例如,由于对象的变形或旋转,包括边界在内的、构成运动对象的元素也可以以不同的速率运动。
运动对象边界上的元素是相对于背景的运动变化的元素。运动对象的边界或轮廓包含具有类似运动变化的多个单一元素,所述单一元素在相邻侧包括至少两个具有类似运动变化的元素,并且在其相邻处包括至少一个具有非类似运动变化的元素,这样,就构成了勾勒出运动对象轮廓的连接边界。在下文中将对该概念进行更详细的讨论。
静止变化对象是具有很少或没有与其相关的运动的对象,但是其可以包含在变化的帧流或者从X1到X2到X3到X4…到XN的矩阵上的颜色和亮度的变化。静止变化对象的实例将是闪光,其中,对象不是从帧到帧运动,而是在颜色和亮度上发生变化。
在图6的流程图中示出了识别对象的方法的一个实施例。方法从方框500开始。在步骤505中,目的地收发机26通过从左到右、自上至下地搜索每一行矩阵元素,对从帧1到帧2的第一个差异矩阵ΔX12中的第一个非零元素Δxij进行定位。
为了验证非零元素可能不是坏元素或错误元素(诸如“雪花”),目的地收发机26在步骤510中确定差异矩阵ΔX12中的相邻或相关元素(像素)Δx(i-1)(j-1)、Δx(i-1)j、Δx(i-1)(j+1)、Δxi(j-1)、Δxi(j+1)、Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)中是否存在非零元素。如果所有的相邻元素都为零,那么将元素xij识别为坏元素而不是变化的元素,其中,元素xij实际上是静止背景部分或者处于主对象的内部。如果一个或多个相邻元素具有非零值,那么初始元素是变化的元素,并且其位于运动对象的边界上、位于静止背景的变化部分上或者位于旋转对象的内部。如果没有找到具有非零值的相邻元素,那么,就在步骤515中以元素的真实零值对差异矩阵ΔX12进行更新。在步骤520中,对于ΔX12、ΔX23和ΔX34中的所有元素,重复执行步骤505至515。在下文中参考图7对图6中所说明的方法进行更详细的描述。
在步骤520之后,将ΔX12、ΔX23和ΔX34中不等于零的元素定义为变化的元素,并且其作为运动对象或者静止变化对象部分。使用更新的差异矩阵ΔX12、ΔX23和ΔX34对对象的边界元素进行识别,并且勾勒出对象的轮廓且将其放置在合适的帧内。随后,确定与每个潜在对象相关的运动方程以及构成该对象的其它元素,这样,就基本上对运动对象的所有元素进行了定义。
A.定位对象边界图7A-B是示出将元素识别为对象的边界元素以及对视频帧内的对象进行轮廓勾勒和定位的方法的流程图。参考图7A,方法600开始于步骤601并且继续进行到步骤605。在步骤605中,目的地收发机26对差异矩阵ΔX12、ΔX23和ΔX34中的第一个非零元素进行定位,从而对运动或变化对象的边界部分或坏元素进行识别。例如,在步骤605中通过诸如从矩阵的第一行开始向下继续地、从左到右地搜索行,对差异矩阵ΔX12中的第一个非零元素Δxij进行定位。
ΔX12=Δx11Δx12Δx13···Δx1_176Δx21Δx22Δx23···Δx2_176Δx31Δx32Δx33···Δx3_176···············Δx144_1Δx144_2Δx144_3···Δx144_176...(10)]]>为了验证第一个非零元素Δxij可能不是坏元素,而是运动或变化的元素,目的地收发机26在步骤610中对ΔX12中的相邻或相关元素(像素)Δx(i-1)(j-1)、Δx(i-1)j、Δx(i-1)(j+1)、Δxi(j-1)、Δxi(j+1)、Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)进行分析,以便确定它们是否全部等于或非常接近于零。对于步骤610中的分析,针对非零元素Δxij,将差异矩阵ΔX12减小为下列矩阵[Δxij]。
=Δx(i-1)(j-1)Δx(i-1)jΔx(i-1)(j+1)Δxi(j-1)ΔxijΔxi(j+1)Δx(i+1)(j-1)Δx(i+1)jΔx(i+1)(j+1)...(11)]]>如果在步骤610中目的地收发机26确定为否,即减小的矩阵[Δxij]中的相邻元素也不是非零的,那么在步骤615中将帧X1内的元素xij识别为坏元素而不是变化的元素,但是可以将其识别为静止背景的真实部分或者对象的内部部分。因此,在步骤615中还对ΔX12中Δxij的值进行更新,并且方法通过返回到步骤605继续为下一个非零元素搜索差异矩阵。
如果在步骤610中目的地收发机26确定为是,即相邻元素也是非零的,那么将帧X1内的元素xij识别为变化的元素。该变化的元素可以位于或接近于运动对象的边界、静止背景的变化部分或者旋转对象的内部。一旦对第一个真实的变化元素(ΔX12中的Δxij)进行了定位,就在步骤620中对元素进行分析,以便确定其是否位于运动或旋转对象的边界或一部分上、或者在静止对象的变化部分上。
如果元素在变化、运动和/或旋转对象的边界上,那么必然有至少两个具有类似变化的相邻元素,并且必然有至少一个具有非类似变化的相邻元素,从而构成勾勒出对象轮廓的连接边界部分。如果对象仅仅是自旋或静止变化的,那么将在ΔX12、ΔX13和ΔX14的相同位置找到所述元素。如果对象是运动的,那么所述元素将在帧间可预测地运动,并且可以相当精确地确定其在后续帧内的位置。这样,目的地收发机26在步骤620中确定对于非零元素是否存在至少两个具有类似运动变化的相邻元素以及是否存在至少一个具有非类似运动变化的相邻元素。例如,减小的差异矩阵元素Δx(i)(j-1)和Δx(i+1)(j-1)可以具有与非零元素Δxij相同的值,并且减小的差异矩阵元素Δx(i)(j-1)可以具有与非零元素Δxij不同的值。在一个实施例中,如果在步骤620中目的地收发机26确定为否,即对于非零元素Δxij,不存在至少两个具有类似变化的相邻元素并且不存在至少一个具有非类似变化的相邻元素,那么在步骤625中将元素识别为在对象内部,并且方法返回到步骤605。可选地,如果在步骤620中目的地收发机26确定为是,即对于非零元素Δxij,存在至少两个具有类似变化的相邻元素并且存在至少一个具有非类似变化的相邻元素,那么在步骤630中将元素假定为对象的边界元素。
在一个实施例中,在步骤630中没有将非零元素Δxij假定为在对象的边界上,并且目的地收发机26对减小的矩阵[Δxij]执行附加分析,以便确定元素是否是在对象边界内部变化的元素。例如,实心的彩色运动或旋转对象除了在对象的边界上之外可能不具有任何非零差异矩阵值(Δx)。如果存在至少六个具有类似变化的相邻元素,就将非零元素Δxij识别为变化对象边界内部的变化元素。可以在步骤625中进行上述决定。
仍然参考图7A,在步骤625和630之后,方法600继续进行到步骤635,其中,在步骤625和630中,将非零元素识别为在变化或旋转对象内部或者对象的边界元素,在步骤635中,目的地收发机确定在差异矩阵中是否还有未分析的剩余非零元素。如果差异矩阵中剩余未被检测的非零元素,那么方法600返回到步骤605。如果差异矩阵中没有剩余非零元素,那么如图7B中所示,方法继续进行到步骤645。
在步骤645中,当边界元素出现在第一帧中时,目的地收发机26确定边界元素是否在对象的边界上;或者当边界元素出现在差异矩阵比较的第二帧中时,目的地收发机26确定边界元素是否在对象的边界上。例如,如果边界元素Δxij来自差异矩阵ΔX12,那么当对象出现在帧1中时,方法确定相应的边界元素xij是否在对象的边界上,或者当对象出现在帧2中时,方法确定相应的边界元素xij是否在对象的边界上。如果在步骤645中目的地收发机确定为是,即边界元素xij在差异矩阵比较的第一帧内(在当前实例中是帧1)的对象边界上,那么在步骤650中将元素存储为变化、运动和/或旋转对象的边界元素。如果在步骤645中目的地收发机确定为否,即边界元素xij不在第一帧内的对象边界上而在差异矩阵比较的第二帧内(在当前实例中是帧2)的对象的边界上,那么在步骤655中将其丢弃。在步骤645和655之后,方法600继续进行到步骤660,其中,目的地收发机26确定差异矩阵中是否有在步骤645中未被检测的剩余边界元素。如果在步骤660中目的地收发机26确定为是,即在差异矩阵中剩余有未被检测的边界元素,那么方法600返回到步骤645。如果在步骤660中目的地收发机26确定为否,即在差异矩阵中没有未被检测的剩余边界元素,那么方法600继续进行到步骤665。
在步骤645中确定为否时,边界元素xij不在第一帧内的对象边界上,那么目的地收发机26假定对象正在从左到右地在差异矩阵比较的帧之间移动。例如,在对象从左到右地在帧1和帧2之间移动并且目的地收发机26从左到右地对差异矩阵进行扫描时,在差异矩阵ΔX12中识别的对象的第一个边界元素将不在如对象在帧1中出现的对象边界上,而在如对象在帧2中出现的对象边界上。这样,在一个实施例中,当目的地收发机26确定为否,即边界元素xij不在第一帧内的对象边界上时,目的地收发机26通过自底向上、从右到左地扫描差异矩阵来重复步骤645至660。因此,目的地收发机26可以识别对象边界元素在差异矩阵比较的第一帧内的位置。
B.勾勒对象轮廓一旦通过重复步骤645至660对单一对象在差异矩阵比较的第一帧内的所有边界元素进行了定位,就在步骤665中勾勒出对象的轮廓。在步骤665中,通过将在对象边界上识别的具有类似颜色变化的相邻相关的元素连接到一起来勾勒差异矩阵比较的第一帧内的对象的轮廓。在一个实施例中,将每个帧矩阵XN中的元素xij表示为数值形式,其对应于给定像素的红、绿和蓝级别。因此,通过提供对第一帧和第二帧内矩阵元素值的数学比较,差异矩阵元素Δxij提供了关于像素是否在帧之间改变颜色的信息。这样,具有类似值的差异矩阵Δxij指示了类似的颜色变化,并且相邻的差异矩阵元素指示了分配给单一对象上边界元素的类似颜色变化。
在图8中示出对对象轮廓进行勾勒的示例性方法665,其中方法开始于步骤700。在步骤705中,目的地收发机26将被识别为边界元素的差异矩阵元素Δxij的值与也被识别为边界元素的相邻差异矩阵元素的值进行数学比较。在步骤710中,例如,目的地收发机26确定所述比较是否产生5%或小于5%的差异。如果在步骤710中目的地收发机26确定为是,即所述比较产生5%或小于5%的差异,那么在步骤715中将相邻元素识别为相关元素并且作为单一对象的轮廓部分。在步骤715之后,目的地收发机26在步骤720中确定对象的轮廓是否完整。如果在步骤720中目的地收发机确定为是,即对象的轮廓完整,那么方法640继续进行到结束步骤725。如果在步骤720中目的地收发机确定为否,即对象的轮廓不完整,那么方法返回到步骤705。如果在步骤710中目的地收发机26确定为否,即所述比较没有产生5%或小于5%的差异,那么在步骤730中不将相邻元素识别为单一对象轮廓上的相关元素。在步骤730之后,方法返回到步骤705。如本领域的技术人员所意识到的,用于识别相关元素的差异阈值可以大于或小于5%,例如,其可以是1%、2%、3%、4%、6%、7%、8%、9%和10%,并且阈值5%仅用于说明的目的地。
C.识别和定位发送帧内的被勾勒出轮廓的对象再次参考图7B,在步骤665中勾勒出对象的轮廓之后,使用被勾勒出轮廓的对象上的元素,以便识别对象在每个发送视频帧X1、X2、X3和X4内的位置。具体地,在步骤665之后,方法600继续进行到步骤670,其中,选择沿着边界并且在对象相对侧面上的四个元素,并且将其用于根据颜色和位置信息对每一帧X1、X2、X3和X4内的对象进行识别和定位。在一个实施例中,第一个元素是当对差异矩阵进行扫描时被定位对象的第一个边界元素。在一个实施例中,这些被选择的元素在对象的相对侧面上,其中通过连接环绕在对象周围的这些元素所画出的线形成矩形,并且更优选地形成正方形。当在输出帧中对对象进行定位时,被选择的元素定义了对象被放置在各个帧内的像素位置。
在步骤645中,还将k值分配给对象以用于对象在存储器中的存储。分配给对象的k值对应于对象被识别的次序(例如从1到100,000),并且对象在每一帧内保持相同的k值。一旦在视频帧内对对象进行了轮廓勾勒、识别和定位,就在步骤650中对差异矩阵ΔX12、ΔX23和ΔX34中的所有剩余元素重复执行步骤605至645。
VI.运动的球的实例将以示例性应用的方式对识别对象及其运动的方法的一个实施例进行讨论。该实例包括运动的球70,其中球可能在一列帧的每一帧内位于不同的位置。图9A示出一列捕获帧的4个帧(帧1、帧2、帧3和帧4),其中球70在四个帧的每一帧内位于不同的位置。每个示出的帧是在每秒30帧的视频捕获序列中被捕获的第一个帧。这样,在序列中示出的帧之间的时间是60秒。
在本实例中,使用视频会议标准四分之一通用中间格式(QICF),其中,每一帧包含144×176个像素栅格,其包含144行(i=1、2、3、…144)和176列(i=1、2、3、…176)像素。用于每一帧(帧1、帧2、帧3和帧4)的相应差异矩阵XN在以下方程(12)中进行定义。矩阵的每个元素Xij具有由下标识别的相应的位置信息,其中“i”对应于元素位于矩阵中的行,并且“j”对应于元素位于矩阵中的列。
ΔXN=x11x12x13···x1_176x21x22x23···x2_176x31x32x33···x3_176···············x144_1x144_2x144_3···x144_176...(12)]]>此外,每个像素具有表示为8比特二进制数即1字节长度的对应颜色信息。颜色信息包含红、绿和蓝分量,其中,8比特编号的前2个比特对应于蓝色分量,随后的3比特对应于绿色分量,并且最后的3比特对应于红色分量,如下

帧矩阵XN中每个元素xij的值是8比特二进制数,其表示对应于帧矩阵XN中元素xij的像素的颜色信息。在该实例中,球70经历两类运动平移和自旋。
如图9A所示,球70运动经过亮蓝色背景,并且球是单一的单色。将背景和球的颜色定义为每像素8比特颜色的形式,如下


图9B示出了下列差异矩阵ΔX12、ΔX23、ΔX34、ΔX13、ΔX14的帧表示。对于运动的球70,差异矩阵(ΔX)是帧之间的颜色差异。如果任何点在帧之间是基本相同的(具有基本相同的颜色信息),那么它们将被归零,但是如果从对象中减去背景,或者从背景中减去对象,那么就产生颜色差异并且在差异矩阵中对其进行识别。
A.静止元素目的地收发机26通过计算差异矩阵ΔX12、ΔX23和ΔX34将在4个帧之间未发生变化的元素识别为静止元素,其中不位于球上的所有元素归零。例如,对应于帧1中背景内像素a的帧矩阵元素xaa具有的帧矩阵X1值为01001001(背景颜色的像素值)。对应于帧2内像素a的相同帧矩阵元素xaa在帧矩阵X2中具有相同的像素值01001001。因此,差异矩阵ΔX12中的差异矩阵元素Δxaa是零,其中,帧矩阵元素xaa在帧矩阵X1和帧矩阵X2中具有相同的像素值。
类似于背景中的元素,帧1和帧2中球上所有的元素也在差异矩阵ΔX12中归零。帧1内对应于球上像素b的元素xbb具有的帧矩阵X1值(球颜色的像素值)为11011011,并且帧2内对应于像素b的相同帧矩阵元素xbb具有的帧矩阵X1值为11011011。因此,在差异矩阵ΔX12中的差异矩阵值Δxaa是零,其中,帧矩阵元素xbb在帧矩阵X1和帧矩阵X2中具有相同的像素值。
B.变化元素帧1中球上的和帧2中背景上的所有元素将在帧矩阵X1中所具有的帧矩阵值为11011011(球颜色),并且在帧矩阵X2中所具有的帧矩阵值为01001001(背景颜色)。例如,对应于帧1和帧2中像素c的帧矩阵元素xcc将在帧矩阵X1中所具有的帧矩阵值为11011011,并且在帧矩阵X2中所具有的帧矩阵值为01001001。差异矩阵ΔX12(X1-X2)内的差异矩阵值Δxcc是帧矩阵X1中元素xcc的帧矩阵值和帧矩阵X2中元素xcc的帧矩阵值之间的差异。这样,差异矩阵ΔX12中的差异矩阵值Δxcc是11011011-01001001=10010010。
与此相反,帧2中球上的和帧1中背景上的所有元素将在帧矩阵X1中所具有的帧矩阵值为01001001,并且在帧矩阵X2中所具有的帧矩阵值为11011011。例如,对应于帧1和帧2中像素d的帧矩阵元素xdd将在帧矩阵X1中所具有的帧矩阵值为01001001,并且在帧矩阵X2中所具有的帧矩阵值为11011011。差异矩阵ΔX12(X1-X2)内的差异矩阵值Δxdd是帧矩阵X1中元素xdd的帧矩阵值和帧矩阵X2中元素xdd的帧矩阵值之间的差异。因此,差异矩阵ΔX12中的差异矩阵值Δxdd是01001001-11011011=11111111111111111111111101101110,其是以多于8比特的二进制形式表示的负数。由于当前实例中的差异矩阵值可以仅仅是8比特,并且可能没有使用溢出条件,所以对相反的差异矩阵值ΔX21(X2-X1)进行计算,以便获得差异矩阵元素Δxdd的值10010010并且将标识添加到用于这些比特的相关存储器中。具体地,使用奇偶校验位作为标识,其中,如果元素的差异矩阵值是负的,那么将奇偶校验位设置为一(1),并且如果差异矩阵值是正的,那么将奇偶校验位设置为0。
在一个实施例中,使用奇偶校验位信息来确定对象的运动方向。例如,在目的地收发机26自顶向下且从左到右地扫描差异矩阵时,如果对于在对象轮廓顶部的边界元素将奇偶校验位设置为一(1),那么对象的边界就处于向左和/或向上的运动中。相反地,如果对于在对象轮廓顶部的边界元素没有对奇偶校验位进行设置(为零),那么对象的边界就处于向右和/或向下的运动中。
对于剩余的差异矩阵ΔX23和ΔX34,与上文方法相一致地执行所有的矩阵值减法。随后,根据图7A-B中所说明的方法600对对象进行定位。
C.对象识别根据步骤605,通过从矩阵的顶部的行开始对矩阵的行进行从左到右地搜索来扫描第一个差异矩阵ΔX12的第一个非零元素Δxij。
=Δx(i-1)(j-1)Δx(i-1)jΔx(i-1)(j+1)Δxi(j-1)ΔxijΔxi(j+1)Δx(i+1)(j-1)Δx(i+1)jΔx(i+1)(j+1)=0000100100100100100101001001010010010...(13)]]>为了验证第一个非零元素Δxij可能不是坏元素或噪声,而是运动或变化的元素,方法在步骤610中确定ΔX12中的相邻或相关元素Δx(i-1)(j-1)、Δx(i-1)j、Δx(i-1)(j+1)、Δxi(j-1)、Δxi(j+1)、Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)不全部等于零。具体地,该方法将识别出三个相邻元素Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)不等于零(Δx(i+1)(j-1)=Δx(i+1)j=Δx(i+1)(j+1)=10010010)。由于并不是所有的相邻元素都为零,那么元素xij是变化的元素并且可能位于运动对象的边界上、位于静止背景的变化部分上或者位于旋转对象的内部。然而,如果ΔX12中所有相邻元素Δx(i-1)(j-1)、Δx(i-1)j、Δx(i-1)(j+1)、Δxi(j-1)、Δxi(j+1)、Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)基本都等于零,那么在步骤615中将第一个非零元素Δxij识别为坏元素,并且在步骤605中将对差异矩阵ΔX12中的下一个非零元素进行定位。
如果球70仅仅是旋转或者改变颜色,那么将在ΔX12、ΔX13和ΔX14的相同位置中寻找到该球70。然而,如图9B中的差异矩阵ΔX12、ΔX13和ΔX14的帧表示中所示,球70在平移而不仅仅是旋转或改变颜色。在步骤620中,目的地收发机26确定差异矩阵ΔX12中的第一个非零元素Δxij是否在运动对象的边界上。参考用于第一个非零元素Δxij的被减少的矩阵,至少两个相邻的元素具有类似的运动变化并且至少一个相邻的元素具有非类似的运动变化。具体地,三个相邻元素Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)具有类似的运动变化(10010010),并且五个相邻元素Δx(i-1)(j-1)、Δx(i-1)j、Δx(i-1)(j+1)、Δxi(j-1)和Δxi(j+1)具有非类似的运动变化。这样,当在步骤620中目的地收发机26将确定为是、即第一个非零元素位于运动对象的边界上时,在步骤630中将元素Δxij识别为对象的边界元素。
在目的地收发机在步骤620中确定为否,即非零元素不位于运动对象的边界上的情况下,目的地收发机26可以确定非零元素Δxij在对象内部。更具体地说,如果目的地收发机26确定存在至少六个具有类似运动变化的相邻元素,那么将非零元素Δxij识别为在静止变化或旋转对象内部的元素。例如,非零元素可以在改变颜色或闪光的对象内部。根据所述识别,将被识别为在静止变化或旋转对象内部的非零元素存储在存储器中,并且目的地收发机根据图7A-B中所示的方法600继续识别对象及其边界元素。
在步骤625中将非零元素识别为在变化对象内部或者在步骤630中将非零元素识别为边界元素之后,目的地收发机26在步骤635中确定差异矩阵ΔX12、ΔX13和ΔX14中是否剩余尚未在步骤605至630中进行分析的元素。如果步骤635中的确定为否,那么方法600返回到步骤605,并且目的地收发机26在差异矩阵中对下一个非零元素进行定位。
D.勾勒对象轮廓将在图7B中所示出的、在方法600的步骤650中识别的边界元素用作起始元素,以便勾勒出相关对象在帧矩阵X1、X2、X3和X4中的轮廓。通过将对象边界上的相邻相关元素链接在一起来定义对象的轮廓,其中,该对象使用差异矩阵ΔX12、ΔX23和ΔX34以及帧矩阵X1、X2、X3和X4。
之前,我们将非零元素Δxij=10010010识别为对象的边界元素,其中,相邻元素Δx(i+1)(j-1)、Δx(i+1)j和Δx(i+1)(j+1)具有类似的变化(10010010)。为了验证非零元素Δxij在对象轮廓的起始处,接着对差异矩阵ΔX12进行分析,以便验证具有类似变化(Δx(i+1)(j-1)=Δx(i+1)j=Δx(i+1)(j+1)=10010010)的被识别的图案。将具有类似变化以及以该方式识别的相邻元素链接到一起,以建立对象的轮廓。选择对象轮廓的相对侧面上的四个元素,其中,第一个元素是对应于第一个非零元素Δxij的帧元素xij。选择其它三个元素,使得通过连接元素所画出的线构成“X”或盒形。使用四个所选择的元素来定义对象被放置在重构的中间帧内的像素位置。
在使用差异矩阵ΔX12、ΔX23和ΔX34勾勒出每个对象的轮廓并且在对象的轮廓上识别了四个元素之后,使用这四个元素以便在帧矩阵X1、X2、X3和X4内对其相应的对象进行定位。在一个实施例中,围绕四个元素之一的相邻元素与所选择的元素一起构成了符号差图案。还可以使用该图案对帧内的对象进行定位和放置。一旦将被勾勒出轮廓的对象放置在帧矩阵中,就通过根据对象被找到的次序来分配k值而将对象信息存储在存储器中。由于该实例仅包含一个对象,所以其k值为1。
VII.用于运动对象的运动方程如在节II中简要描述的,在识别出对象的轮廓并且将其存储在存储器中之后,确定对象的运动方程,以便对中间帧(在发送帧帧1、帧2、帧3和帧4中的每一个之间的帧)进行重构。因此,运动方程能够用于重构,以便将每秒30帧的输出视频提供给显示器34。为了确定对象的运动方程,首先确定对象正在经历的运动类型。
A.确定运动类型为了确定对象的运动方程,系统首先确定对象正在经历的运动类型。可以将对象的运动分为三种类型运动之一或者其组合平移、旋转和自旋。在空间中,通过三维向量xij=p(xyk)对帧矩阵XN中的元素或像素xij进行定义,其中,x=i、y=j并且k是元素的相对空间平面。如果对象在平移,则其从一个位置a(xyk)经过空间平移到另一个位置b(xyk)。如果对象在旋转,则其关于对象外部的位置c(xyk)旋转。最后,如果对象在自旋,则其关于对象内的位置c(xyk)旋转。典型地,旋转或自旋的对象在帧内或矩阵内具有该对象旋转所围绕的至少一个固定元素,而平移则没有固定元素。当对象从一帧运动到另一帧时,纯粹的平移将组成对象的所有元素移动相等的距离。
通过对以给定k平面值勾勒其轮廓的并且从帧矩阵X1、X2、X3和X4中导出的对象进行存储和检测,可以对对象进行估计以确定其运动类型。为了确定对象是否处于平移中、处于旋转中或者处于平移和旋转中,在帧X1、X2、X3和X4中观察由ΔX12、ΔX23和ΔX34中定义的对象轮廓上的至少两个点。在一个实施例中,这两个元素在对象的相对侧面上。
使用在所选择对象相对侧面上的两个元素p1(xyk)和p2(xyk),可以确定对象在空间上的运动。在第一帧X1中,两个元素具有位置p1(xyk)和p2(xyk),并且在第二帧X2上,相同对象的两个元素在位置p′1(x′y′k)和p′2(x′y′k)处。在p1(xyk)和p2(xyk)之间所画出的线的长度与在p′1(x′y′k)和P′2(x′y′k)之间所画出的线的长度是相同的。
如果被计算为 计数像素的p1和p′1之间的距离等于p2和p′2之间的距离,那么对象在平移。如果p1和p′1之间的距离不等于p2和p′2之间的距离,那么对象在旋转并且可能具有一定的平移。
为了确定对象是否同时在平移和旋转,对X2和X3中的对象执行与用于确定对象是否在旋转的处理相同的处理,以便在后续帧内找到对象旋转的中心c′(xcyck)。如果c(xcyck)是与c′(xcyck)相同的元素,那么对象仅在旋转。如果c(xcyck)是与c′(xcyck)不同的元素,那么对象在旋转和平移,并且用从c(xcyck)是与c′(xcyck)的线或向量来描述平移。
如上文所讨论的,使用每个对象轮廓上的四个点或元素对被重构帧内的对象进行定位。在目的地收发机处,将旋转向量(r)和平移向量(t)的值用于在被重构的帧上移动对象。
为了确定对象是否在自旋,至少使用两个点p1(xyk)和p2(xyk)来代表对象上的颜色图案,并且在帧X1、X2、X3和X4中观察这些点。在一个实施例中,这两点在图案的相对侧面上。为了确定对象是否在自旋,对从第一帧X1存储的对象进行扫描,以获得对对象的运动进行分析时可以观察的颜色图案。使用QCIF(176×144)帧大小,对象可以在帧间的任何方向上移动约17个像素。对对象进行扫描以获得显著的颜色变化,例如,在对象上红、绿或蓝值变化超过15%的位置,以及获得相对于对象大小(区域/对象大小)的变化区域的大小。如果使用像素计算的该比率大于1/3,那么对对象进一步进行扫描,以便找到更小的变化区域(例如,1/5或更小)。
一旦对期望的变化区域进行了定位,就在其它帧X2、X3和X4上对颜色图案区域及其在对象的k平面上的方向进行定位。随后,使用图案区域上的四个元素来定义对象的运动。使用四个元素中在所选择图案的相对侧面上的两个元素(p1(xyk)和p2(xyk)),可以定义对象轮廓内的图案运动。将帧X1中对象图案上的两个点识别为p1(xyk)和p2(xyk),并且将帧X2中对象图案上的相同的两个点识别为p′1(x′y′k)和p′2(x′y′k)。类似于对象的平移确定,根据定义,在p1(xyk)和p2(xyk)之间所画出的线的长度与在p′1(x′y′k)和p′2(x′y′k)之间所画出的线的长度是相同的。
如果在帧X1和X1之间没有旋转,那么计算为 计数像素的p1和p′1之间的距离等于p2和p′2之间的距离,并且在所有的帧X1、X2、X3和X4内图案位于对象的相同位置中。因此,对象没有自旋。如果在帧X1和X2之间图案的旋转是显而易见的,那么p1和p′1之间的距离不等于p2和P′2之间的距离,则对象在自旋。
B.确定一个或多个运动方程可以在空间中将矩阵或帧XN内被识别为位于对象上的元素或像素定义为三维向量xij=p(xyk),其中,x=i、y=j并且k是对象标识符。根据元素定义,可以将用于元素或像素的运动方程p′定义为旋转向量(r)、起始元素向量(p)以及平移向量(t)的函数,如下p′=r×p+t (14)其中
可以进一步将旋转向量定义如下r=rxry=(x′-Δx)/x(y′-Δy)/y=p′/(p+t)...(19)]]>为了找到旋转中心c(xcyck),在P1和P′1之间的对象平面内画一条直线,其中,将直线的长度确定为 并且直线的斜率是Δy/Δx=tanθ。以相同的方式也在P2和P′2之间画线。随后,从这些线的中心(长度/2)处画出垂直平分线,其中两条垂直平分线的交点是对象旋转的三维中心c(xcyck)。从该旋转中心c(xcyck)到P1所画的线在长度上等于从c(xcyck)到P′1所画的线,并且从c(xcyck)到P2所画的线在长度上等于从c(xcyck)到P′2所画的线。
可以使用旋转向量来确定对象的自旋速率。自旋速率提供了信息,以便将对象放置在视频输出的每个中间帧内合适的位置中。将对象的自旋速率(R)定义为旋转向量的幅度除以时间的变化R=|r|ΔT=((rx)2+(ry)2)ΔT...(20)]]>如果对象的自旋速率是一个常数,那么使用差异矩阵ΔX12、ΔX23和ΔX34计算的旋转向量的幅度|r12|、|r23|和|r34|将提供近似相同的值。在本实施例中,帧之间的时间变化ΔT12=ΔT23=ΔT34是1秒,因此|r|/ΔT=|r|/sec,并且通过x′=rx×x和y′=ry*y来定义旋转的距离,并且可以将该距离均匀地分为30份以获得每个输出视频帧的位置。
如果对象的自旋速率(|r|/ΔT)不是一个常数,那么使用差异矩阵ΔX12、ΔX23和ΔX34计算的旋转向量的幅度|r12|、|r23|和|r34|将不提供相同的值(|r12|≠|r23|≠|r34|),并且对象正在加速或者减速其自旋。在本实施例中,差异矩阵的帧之间的时间变化ΔT12=ΔT23=ΔT34是1秒,因此|r12|/ΔT12=|r12|/sec、|r23|/ΔT23=|r23|/sec且|r34|/ΔT34=|r34|/sec。不能将通过x′=rx*x和y′=ry*y所定义的旋转距离均匀地分为30份以获得每帧的位置。为了确定不具有恒定自旋速率的对象的运动,系统确定自旋对象的加速度或减速度。在下文中针对运动对象的加速向量的旋转元素,讨论对加速的自旋对象的旋转向量的确定。
对象的运动方程包括加速或减速分量,以便说明对象运动的加速或减速。如果对象的加速度是线性的,那么对象随着其经由各个帧而以确定的速率进行加速或减速。可以使用已经从X1、X2、X3和X4中被存储的对象图像来计算对象的线性加速度。
加速向量a具有平移和旋转分量。为了确定平移分量,将如上文所讨论的元素从p移动到p′的直线距离|t|计算为 如果对象正在线性加速或减速,那么下述关系是正确的|t12-t23|=|t23-t34|≠0 (21)如果对象正在非线性加速,那么下述关系是正确的|t12-t23|≠|t23-t34|≠0 (22)在本实例中,没有考虑非线性加速或减速。对于线性加速,将线性加速向量at14的平移分量定义如下,其中在两秒时间周期上获得加速at14=(t12-t23)+(t23-t34)=at13+at24(23)如果对象在线性加速或减速,那么at13=at24,并且新向量tc按照如下进行定义且te对于所有帧是恒定的,如下tc=t12-t23=t23-t34(24)这样,可以使用加速向量对平移向量t进行重新定义,如下t=at13×tc=atxaty×tcxtcy=atx×tcxaty×tcy...(25)]]>在本实例中,每秒发送一帧,并且上文使用距离分量的加速度计算在两秒的周期上计算加速度,那么,每帧加速的速率如下|a13|60sec=|a24|60sec...(26)]]>确定加速度的(x,y)分量,如下at13=t12-t23=atxaty=Δx12-Δx23Δy12-Δy23...(27)]]>
每个新帧内对象的加速度乘数at为at=|atx|/60|aty|/60...(28)]]>此外,确定每个新创建帧的平移向量t,如下t=atx×tcx/60aty×tcy/60...(29)]]>针对加速向量的旋转分量进行下一步确定。如果对象正在线性加速或减速,那么下述关系是正确的|r12-r23|=|r23-r34|≠0 (30)如果对象是非线性加速的,那么下述关系是正确的|r12-r23|≠|r23-r34|≠0 (31)在本实例中,没有考虑非线性加速或减速。对于线性加速,将线性加速向量ar14的旋转分量定义如下,其中在两秒时间周期上获得加速ar14=(r12-r23)+(r23-r34)=ar13+ar24(32)如果对象在线性加速或减速,那么ar13=ar24,并且新向量rc按照如下进行定义且rc对于所有帧是恒定的rc=r12-r23=r23-r34(33)这样,可以使用加速向量对平移向量r进行重新定义,如下r=ar13×rc=arxary×rcxrcy=arx×acxary×rcy...(34)]]>在本实例中,每秒发送一帧并且上文使用距离分量的加速度计算在两秒的周期上计算加速度,那么,每帧加速的速率如下|a13|60sec=|a24|60sec...(35)]]>确定加速度的(x,y)分量,如下
ar13=r12-r23=arxary=(x2-Δx12)/x1-(x3-Δx23)/x2(y2-Δy12)/y1-(y3-Δy23)/y2...(36)]]>每个新帧内对象的加速度乘数ar为ar=|acx|/60|acy|/60...(37)]]>此外,确定每个新创建帧的平移向量r,如下r=arx×rcx/60ary×rcy/60...(38)]]>因此,将所确定的平移和旋转向量进行合并得到对象的加速度,对每个新创建帧的结束元素向量p′进行定义,如下p′(x′y′k)=x′y′=(arx×rcx×x/60)+(atx×tcx/60)(ary×rcy×y/60)+(aty×tcy/60)...(39)]]>因此,如果对象移动经过帧X1、X2、X3和X4,那么使用对象轮廓上的四个点在用于视频输出的新创建的背景帧上移动对象图像,其中,通过将差异帧ΔX12、ΔX23和ΔX34与X1、X2、X3和X4中的对象进行比较对该四个点进行定位。通过运动方程以及在对象轮廓上定义的四个点来定义该运动。
对于仅经历线性运动的对象,根据下述方程确定点pn′(xn′yn′k)在重构的中间帧号n内的对象上的位置,其中x和y是该点在第一个发送帧内的对象上的起始坐标,并且n是对应于被创建的中间帧的、从1到29的整数(例如,对于第一个中间帧n=1)pn′(xn′yn′k)=x′y′=(arx×rcx×x/60)+(atx×tcx/60)×n(ary×rcy×y/60)+(aty×tcy/60)×n...(40)]]>如果对象在其在帧X内被定义的轮廓内部进行自旋,就使用位于对象上的图案上的四个点,来对用于视频输出的、将要放置在新创建背景帧上的对象图像进行旋转,其中由旋转向量r定义对象的自旋或旋转。分母值“60”反映了将要在帧1和帧3之间创建的帧的数目。因此,分母值“60”可以随着将要在发送帧(例如帧1和帧3)之间创建的帧的数目而改变。
VIII.为运动的球确定运动方程的实例图10A是对图9A的四个视频帧的更详细说明,并且图10B是对图9B的帧表示的更详细说明,其中,图10A-B示出了在为运动的球70确定运动方程过程中所使用的识别点x和x′。
将球70上点x的运动方程p′定义为旋转向量(r)、起始元素向量(p)以及平移向量(t)的函数,如下p′=r×p+t (14)在如图10A中所示的帧1的帧矩阵中,点x位于元素x52,64处,并且在帧2的帧矩阵中,点x位于元素x46,52处。如前面在节VI中所讨论的,对于该实例仅存在一个对象,并且因此对象的k值为1。使用帧和帧2的帧矩阵内用于点x的元素信息,可以确定运动方程和相应的向量,如下 对象的运动方程包括加速或减速分量,以便说明对象运动的加速或减速。如果对象的加速是线性的,那么对象随着其经由各个帧而以确定的速率进行加速或减速。可以使用已经为帧矩阵X1、X2、X3和X4存储的对象的图像来计算对象的线性加速度。
对干球70上的点x,将如上文所讨论的元素在p和p′之间移动的直线距离|t|计算为 这样,可以计算下列直线距离,其中,对于帧3,点x位于帧矩阵内的元素x84,38上,并且对于帧4,点x位于帧矩阵内的元素x98,64上|t12|=(52-46)2+(64-52)2=(6)2+(12)2=13.4]]>|t23|=(46-84)2+(52-38)2=(-38)2+(14)2=40.5]]>|t34|=(84-98)2+(38-64)2=(-14)2+(-26)2=29.5]]>将用于线性加速的线性加速向量at14的平移分量定义如下,其中,在两秒时间周期上获得加速at14=(t12-t23)+(t23-t34)=at13+at24(23)其中,t12=612,t23=-3814]]>且t34=-1426,]]>并且确定加速向量at13和at14,如下at13=t12-t23=442]]>且at24=t23-t34=-24-12...(27)]]>在该实例中,目的地收发机26仅考虑球70的线性运动。因此,当点x出现在重构的中间帧中时,根据下列方程来确定点x在球上的位置pn′(xn′yn′k),其中,为了找到点x在第15帧内的位置,例如,以15替代变量npn′(xn′yn′k)=x′y′=(arx×rcx×x/60)+(atx×tcx/60)×n(ary×rcy×y/60)+(aty×tcy/60)×n...(40)]]>IX.静止变化的对象如果对象不具有与其相关的运动,即对象在差异矩阵ΔX12、ΔX13和ΔX14中相同的位置上,那么将对象识别为静止变化对象。可以将对象变化的速率定义为ΔX/ΔT。使用对象的边界元素(轮廓)以便找到帧X1、X2、X3和X4内的物理对象。可以使用差异矩阵以及时间的相关变化来确定对象变化的速率,如下ΔX/ΔT=(ΔX12/ΔT12+ΔX23/ΔT23+ΔX34/ΔT34+ΔX13/ΔT13+ΔX14/ΔT14)5---(40)]]>静止变化对象的边界或轮廓由具有类似变化速率(ΔX/ΔT)的非运动元素组成,其中,在静止对象边界上的元素包括至少两个具有非类似变化速率的相邻元素。通过对具有非类似变化速率的相邻元素的元素进行识别,目的地收发机26使用识别的边界元素构成勾勒出对象轮廓的连接边界。
如上文所讨论的,在一个实施例中,在具有144×176像素大小的QCIF帧内使用8比特像素(xij)。图像或帧的每个像素或元素代表颜色,并且具有标准(canonical)最小值和标准最大值。在每帧所定义的空间中,系统忽略未动态变化的任何对象。系统对所定义对象内的色彩变化进行估计和定义,使每个对象的信息独立并且链接到其相关帧。
系统中使用的所定义的变量是像素颜色、像素帧位置以及随着时间的帧差异。系统的目标是了解当帧X1、X2、X3和X4内的对象经过这些帧时,对象的图像在颜色上发生了何种变化。
如本领域的技术人员所意识到的,可以使用色度和亮度(luma)代替红、绿和蓝(RGB)值来描述像素值的特征。在一个实施例中,YCrCb或YUV通过亮度分量“Y”和两个色度分量Cr(或V)和Cb(或U)来表示每种颜色。亮度分量与“光亮度”或“流明度”相关,并且色度分量形成与“色调”相关的数量。在ITU-R BT.601-4(也已知为Rec.601以及以前的CCIR 601)中对这些分量进行了严格的定义。当参考色度分量时,因为模拟NTSC视频标准ANSI/SMPTE170M使用具有稍微不同意义的V和U,所以使用Cr和Cb比使用V和U可以更加有利。
在一个实例中,像素的RGB分量具有从0到255范围内的值,并且色度和亮度分量YCrCb或YUV的变换方程如下Y=0.257r+0.504g+0.098b+16Cr或V=0.439r-0.368g-0.071b+128Cb或U=-0.148r-0.291g+0.439b+128随着对象运动经过一列视频帧,其可以经历颜色和/或阴影图案的变化。为了更好理解对象的行为,将需要对每秒的全部30个帧进行捕获和估计。然而,系统在每30帧中仅发送1帧,并且目的地收发机26可以关于接收帧中不清晰的对象的信息或行为对源收发机24进行询问。
X.帧重构图12A-D示出了在目的地收发机26处使用如图3中所示的发送帧帧1、帧2、帧3和帧4以及上文所确定的背景和对象信息,对视频流进行重构的方法的一个实施例。首先,在发送帧帧1、帧2、帧3和帧4之间的帧缓冲器上,对接收自源收发机24的所有静止背景信息进行均匀移位,从而为从帧1至帧4的中间帧创建背景。在创建了背景之后,对完整中间帧的生成进行初始化,其中,使用来自目的地收发机26的对象信息将对象定位在目的地收发机26处的工作缓冲器内的背景帧上。帧缓冲器是在存储器内对图像帧进行重构的区域,并且其为将要被移出(FIFO)到视频显示器34用于显示的缓冲器。帧缓冲器是工作缓冲器的一部分,并且在一个实施例中,工作缓冲器是存储器,在该存储器中存储并使用计算、对象、对象轮廓、位置信息等。
如之前所讨论的,4帧比较方法可以用于对中间帧内的对象进行定义和定位。如图12A所示,使用来自帧1、帧2、帧3和帧4的信息以便对帧1和帧2之间的中间帧内的对象进行识别和定位,在下文中该中间帧称为中间帧1。类似地,如图12B所示,使用来自帧1、中间帧1、帧2和帧3信息以便对帧1和中间帧1之间的中间帧内的对象进行识别和定位,在下文中将该中间帧称为中间帧2。随后,如图12C所示,使用来自帧1、中间帧1、帧2和帧3的信息,对中间帧1和帧2之间的中间帧内的对象进行识别和定位,在下文中将该中间帧称为中间帧3。
更具体地,结合时间信息使用根据节VII中的描述所确定的运动方程,来确定当所选择的4个点在中间帧内时其在对象上的位置。例如,如果确定对象在帧1和帧2之间线性运动,并且帧1和帧2之间的时间是30秒,那么通过将在帧1和帧2之间经过的距离分割为一半或者使用消息来确定对象在中间帧1内的位置,其中,所使用的消息是对于中间帧1,从如帧1中所识别的那样对对象进行定位开始,已经经过了十五(15)秒。
系统继续对帧1、中间帧1、中间帧2、中间帧3和帧2之间的中间帧上的对象进行识别和定位,直到如图12D所示完成帧1和帧2之间的全部29个帧为止。一旦在一个发送帧之后已对背景和对象在29个帧构成的序列上进行了定位,就将包括发送帧帧1和帧2在内的帧序列发送到帧缓冲器用于在显示器34上显示。
在完成帧1和帧2之间的中间帧序列之后,将新的发送帧用作帧4(帧矩阵X4),以便以与构造之前的帧1和帧2之间的中间帧的方式相同的方式对之前的帧2和帧3之间的中间帧进行重构。这样,之前的帧2是现在的帧1,之前的帧3现在用作帧2,并且将之前的帧4用作帧3,以便对下一个帧序列进行重构以用于在显示器34上显示。对所创建的现有背景帧进行检验和确认,其中,如果某些部分发生了显著变化,那么目的地收发机26询问源收发机24以便对变化进行验证。如果源收发机24没有对变化做出确认,那么目的地收发机或者请求新帧,或者如果存在传输问题,目的地收发机26假定新帧是坏而使用已经确定的背景信息。在对中间帧的背景进行验证和确认之后,将对象放置在工作缓冲器内新帧1和新帧2之间的中间帧上。一旦在工作缓冲器中对所有的中间帧进行了重构,就将新帧1、重构的中间帧以及新帧2发送到显示器34。对于在目的地收发机26处所接收的被发送帧序列的剩余部分,重复进行所述重构中间帧的处理以及随后向显示器34的发送,使得在显示器34上显示的帧是图4所示的连续视频流110,并且该连续视频流110由每秒30个帧组成。
在图12的方框图中示出了示例性源收发机电路1200。源收发机电路1200包括视频缓冲器1202,其配置为从视频源22接收视频流。将视频缓冲器连接到可编程的数学和分立逻辑电路1204,将该逻辑电路1204连接到工作存储器1206。将可编程的数学和分立逻辑电路1204连接到动态输出缓冲器1208,该动态输出缓冲器1208每秒输出1帧到数据复用器和压缩电路1210。将数据复用器和压缩电路1210连接到收发机电路,该收发机电路可以包括发送电路和接收电路。还将数据复用器和压缩电路1210连接到可编程的数学和分立逻辑电路1204,使得源收发机24可以响应来自目的地收发机26的请求而恢复帧信息。
类似于源收发机电路1200,在图13中示出了示例性目的地收发机电路1300。目的地收发机电路1300包含数据复用器和压缩电路1302,其配置为从源收发机24接收每秒1帧的视频输入。将动态输入缓冲器1304连接到数据复用器和压缩电路1302,并且将其配置为每秒将1帧移入可编程的数学和分立逻辑电路1306。可编程的数学和分立逻辑电路1306连接到工作存储器1308,并且配置为在动态输出缓冲器1304处对帧之间的中间帧进行重构或构造。数学和分立逻辑电路1306在帧构造缓冲器1310中对中间帧进行重构或构造,其中,将帧构造缓冲器1310连接到视频缓冲器1312,将视频缓冲器1312配置为每秒移出30帧到显示器34。
可以将可编程的数学和分立逻辑电路1306嵌入在处理器中,将该处理器配置为对在第一和第二帧中的至少一帧内具有至少一种相关特性的多个点进行识别。还可以将可编程的数学和分立逻辑电路1306配置为确定多个点中的至少一个点是否已经在第一帧和第二帧之间改变了其位置。可以将可编程的数学和分立逻辑电路1306配置为将多个点中已经改变其位置的至少一个点至少与第一帧内的第一像素以及第二帧内的第二像素相关,并且将其进一步配置为确定第一像素的位置和第二像素的位置之间的关系。可以将可编程的数学和分立逻辑电路1306配置为至少部分地基于第一和第二像素的位置之间的关系,在至少一个中间帧内确定多个点中已经改变其位置的至少一个点的位置。可以将可编程的数学和分立逻辑电路1306配置为对在第一和第二帧之间基本保持不动的多个点进行识别。可以将可编程的数学和分立逻辑电路1306配置为对基本整个中间帧的像素位置进行定义,该整个中间帧包含运动的点以及基本静止的点。在为中间帧内的静止对象确定像素信息过程中,将可编程的数学和分立逻辑电路1306配置为基于(a)第一帧内的像素信息,(b)第二帧内的像素信息,(c)从第一和第二帧的源提供的关于中间帧的像素信息,以及(d)第一和第二帧的平均像素信息中的至少一个,识别在中间帧中保持不变的多个点的像素信息。如上文所指出的,可以分别在源电话机和目的地电话机中实现可编程的数学和分立逻辑电路1204和1306,或者可以分别使可编程的数学和分立逻辑电路1204和1306与源电话机和目的地电话机相关。这种电话机可以工作在有线(例如POTS)或无线(例如蜂窝或移动)电话网络中。本发明并不仅仅限制于电话网络实现,还可以在发送和/或接收图像或视频信息的任何有线或无线通信网络中类似地实现本发明。
以上描述提供了本发明的某些实施例的细节。然而,应该意识到,可以以多种方式实施本发明。例如,可以在单一或多个处理器、专用硬件电路、在诸如电话或计算机的设备内执行的软件模块、以及本领域中已知的许多其它实现方式中实现诸如可编程的数学和分立逻辑电路1306和1204的若干组件。因此,将根据所附的权利要求与其任何等价物来解释本发明的范围。
权利要求
1.一种在第一和第二帧之间构造图像的至少一个中间帧的方法,所述方法包括识别在所述第一和第二帧中的至少一帧内具有至少一个相关特性的多个点;确定所述多个点中的至少一个点是否已经在所述第一帧和所述第二帧之间改变其位置;至少将所述多个点中已经改变其位置的所述至少一个点与所述第一帧内的第一像素以及所述第二帧内的第二像素相关;以及确定所述第一像素的位置与所述第二像素的位置之间的关系。
2.如权利要求1所述的方法,还包括至少部分地基于所述第一和第二像素的位置之间的关系,在所述至少一个中间帧内确定所述多个点中已经改变其位置的所述至少一个点的位置。
3.如权利要求2所述的方法,还包括识别在所述第一和第二帧之间基本保持不动的多个点。
4.如权利要求3所述的方法,还包括定义包括运动的点和基本静止的点的基本所述整个中间帧的像素位置。
5.如权利要求1所述的方法,其中,确定所述第一和第二像素位置之间关系的步骤包括导出运动方程中的至少一个系数。
6.如权利要求1所述的方法,其中,所述运动方程确定至少正在经历自旋、旋转和平移运动之一的所述多个点中至少一个点的位置。
7.如权利要求6所述的方法,其中,至少部分地利用x和y坐标来识别所述第一和第二像素的位置。
8.如权利要求1所述的方法,其中,识别具有至少一个相关特性的所述多个点的步骤包括对对象进行定义。
9.如权利要求8所述的方法,其中,对对象进行定义的步骤包括对观察者的眼睛所观看到的图像中的物理对象的至少一部分进行定义。
10.如权利要求1所述的方法,其中,识别具有至少一个相关特性的所述多个点的步骤包括确定所述多个点是否至少经历自旋、旋转和平移运动之一。
11.如权利要求1所述的方法,其中,确定所述多个点中的至少一个点是否已经改变了其位置的步骤包括识别在所述第一帧内的像素位置以及在所述第二帧内基本相同位置像素之间具有非零差异的点。
12.如权利要求11所述的方法,还包括识别所述第一和第二帧内的多个对象。
13.如权利要求1所述的方法,还包括将所述第一和第二帧从发射机发送到接收机。
14.如权利要求3所述的方法,还包括基于(a)所述第一帧内的像素信息,(b)所述第二帧内的像素信息,(c)从所述第一和第二帧的源处提供的关于所述中间帧的像素信息,以及(d)所述第一和第二帧的平均像素信息中的至少一个,识别在所述中间帧像素信息内保持不变的所述多个点。
15.如权利要求14所述的方法,其中,保持不变的所述多个点的所述像素信息包括颜色和灰度值中的至少一个。
16.如权利要求15所述的方法,其中,所述多个点中一个点的像素信息包括与位于所述第一帧内的位置上的至少一个像素的颜色信息基本相同的颜色信息,其中,所述第一帧内的位置与所述多个点中的一个点在所述第一帧内的基本相同的位置相关。
17.如权利要求1所述的方法,还包括选择性地请求源发射机传送关于所述中间帧内至少一个像素的信息。
18.如权利要求1所述的方法,其中,确定所述第一像素位置和所述第二像素位置之间关系的步骤包括至少部分地识别所述第一像素和在所述第二帧内位于基本相同位置的第三像素的颜色或灰度信息之间的非零差异。
19.如权利要求1所述的方法,还包括经由有线或无线电话网络,至少将所述第一和第二帧从源电话机传送到目的地电话机。
20.一种用于在第一和第二帧之间构造图像的至少一个中间帧的系统,所述系统包括识别器电路,配置为识别在所述第一和第二帧中的至少一个帧内具有至少一个相关特性的多个点;比较电路,配置为确定所述多个点中的至少一个点是否已经在所述第一帧和所述第二帧之间改变其位置;以及处理电路,配置为将所述多个点中已经改变其位置的至少一个点至少与所述第一帧内的第一像素和所述第二帧内的第二像素相关,并且进一步配置为确定所述第一像素的位置和所述第二像素的位置之间的关系。
21.如权利要求20所述的系统,其中,所述处理电路配置为至少部分地基于所述第一和第二像素位置之间的关系,在所述至少一个中间帧内确定所述多个点中已经改变其位置的所述至少一个点的位置。
22.如权利要求21所述的系统,其中,所述识别器电路配置为识别在所述第一和第二帧之间基本保持不动的多个点。
23.如权利要求22所述的系统,其中,所述处理电路配置为定义包括运动的点和基本静止的点的基本所述整个中间帧的像素位置。
24.如权利要求20所述的系统,其中,所述处理电路配置为导出运动方程中的至少一个系数。
25.如权利要求20所述的系统,其中,所述运动方程确定至少正在经历自旋、旋转和平移运动之一的所述多个点中的至少一个点的位置。
26.如权利要求25所述的系统,其中,至少部分地利用x和y坐标识别所述第一和第二像素的位置。
27.如权利要求20所述的系统,其中,所述识别器电路配置为对对象的点进行定义。
28.如权利要求27所述的系统,其中,所述识别器电路对由观测者的眼睛所观看到的图像内的物理对象的至少一部分进行定义。
29.如权利要求20所述的系统,其中,所述识别器电路确定所述多个点是否至少经历自旋、旋转和平移运动之一。
30.如权利要求20所述的系统,其中,所述比较电路配置为识别在所述第一帧内的像素位置和所述第二帧内基本相同位置像素之间具有非零差异的点。
31.如权利要求30所述的系统,其中,将所述识别器电路配置为识别所述第一和第二帧内的多个对象。
32.如权利要求20所述的系统,还包括发射机,配置为将所述第一和第二帧发送到接收机。
33.如权利要求22所述的系统,其中,所述处理电路配置为基于(a)所述第一帧内的像素信息,(b)所述第二帧内的像素信息,(c)从所述第一和第二帧的源处提供的关于所述中间帧的像素信息,以及(d)所述第一和第二帧的平均像素信息中的至少一个,识别在所述中间帧像素信息中保持不变的所述多个点。
34.如权利要求33所述的系统,其中,保持不变的所述多个点的所述像素信息包括颜色和灰度值中的至少一个。
35.如权利要求34所述的系统,其中,所述多个点中一个点的像素信息包括与位于所述第一帧内的位置上的至少一个像素的颜色信息基本相同的颜色信息,其中,所述第一帧内的位置与所述多个点中的一个点在所述第一帧内的基本相同的位置相关。
36.如权利要求20所述的系统,其中,所述处理电路配置为选择性地请求源发射机发送关于所述中间帧内的至少一个像素的信息。
37.如权利要求20所述的系统,其中,所述处理电路配置为识别所述第一像素和在所述第二帧内位于基本相同位置的第三像素的颜色或灰度信息之间的非零差异。
38.如权利要求20所述的系统,还包括源电话机,配置为经由有线或无线电话网络,至少将所述第一和第二帧发送到目的地电话机。
39.如权利要求20所述的系统,其中,处理器包括所述识别器、比较和处理电路。
全文摘要
一种用于在诸如有线或无线电话网络的系统中在第一和第二帧之间构造图像的至少一个中间帧的方法和系统。该系统识别在第一和第二帧的至少一个帧中具有至少一个相关特征的多个点。系统确定多个点中的至少一个点是否已经在第一帧和第二帧之间改变了其位置。系统将多个点中已经改变其位置的至少一个点至少与第一帧内的第一像素和第二帧内的第二像素相关。该系统确定第一像素的位置和第二像素的位置之间的关系。
文档编号H04N7/46GK1947418SQ200580013148
公开日2007年4月11日 申请日期2005年2月24日 优先权日2004年2月26日
发明者约翰·W·卡拉齐 申请人:Jps国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1