首页 / 专利库 / 建筑物 / 参数化建模 / 解码视频图像的装置和方法

解码视频图像的装置和方法

阅读:477发布:2021-09-11

专利汇可以提供解码视频图像的装置和方法专利检索,专利查询,专利分析的服务。并且一种用于对按照已知的适合于发送和存储的数据建模方法压缩的视频序列解码为适合于观看的解压缩 帧 的装置,所述装置包含:用于接收和存储多个 亮度 装载和多个地址装载的装置;用于接收和存储多个计分的装置;用于将各亮度变化模式和相应计分的贡献累计入中间图像的装置;用于将每个地址变化模式和相应计分的贡献累计入运动域的装置;用于按照运动域位移中间图像内容从而产生参数最终的帧的装置。,下面是解码视频图像的装置和方法专利的具体信息内容。

1.一种用于对按照已知的适合于发送和存储的数据建模方法压缩的视频序列 解码为适合于观看的解压缩的装置,所述编码数据模型包含多个称为亮度装载 的空间亮度变化模式、多个称为地址装载的空间地址变化模式以及多个称为计分 的数值,所述数值定义了每帧中每个装载的含量,
其特征在于所述装置包含:
(a)用于接收(320;406,408)和存储(326;414,416)多个亮度装载和多个地址装载 的装置;
(b)用于接收和存储(328;442)多个计分的装置;
(c)用于将各亮度变化模式和相应计分的贡献累计(340,354;446,476)人中间图 像的装置;
(d)用于将每个地址变化模式和相应计分的贡献累计(340,352;446,474)人运动 域的装置;
(e)用于按照运动域位移(360)中间图像内容从而产生最终的帧(370)的装置;
其中装置(a)-(e)的连接方式使得形成一条由并行同步数据路径组成的流 线,通过所述流水线连续发送所述中间图像和运动域。
2.如权利要求1所述的装置,其特征在于所述装置包含:
用于将每个亮度装载的一部分与每个地址装载的相应部分组合为称为holon 的组的装置(322;420);
其中用于接收和存储(328;442)多个计分装置包含每个holon的一组计分,以 及;
当累计贡献时,用于累计(c)和(d)的装置采用每个holon的计分。
3.如权利要求1或2所述的装置,其特征在于用于存储(326;414,416)亮度和地 址装载的装置被更新为代表低空间分辨率的装载,并且所述装置进一步包含从低 空间分辨率转换(430)为高空间分辨率的装置。
4.如权利要求1或2所述的装置,其特征在于用于存储(326;414,416)亮度和地 址的装置被更新为压缩状态的装载,并且所述装置进一步包含用于解压缩装载的 装置。
5.如权利要求1-4所述的装置,其特征在于所述装置包含多个产生参数化 纹理的装置。
6.如权利要求1-5所述的装置,其特征在于所述装置包含用于在流水线内 交换(463)数据路径的装置。
7.如权利要求6所述的装置,其特征在于所述用于交换(463)数据路径的装置 依赖于正被传送的holon。
8.如权利要求1-7所述的装置,其特征在于所述装置包含将仿射变换施加 (486)到每帧的运动域上的装置。
9.如权利要求1-8所述的装置,其特征在于所述装置包含向装置(a)发送(415) 至少一部分装置(e)的输出的装置。
10.一种产生部分依赖于交互用户输入的图像的装置,其特征在于所述装置包 含:
用于提供用户输入的装置(2410);
用于从存储介质读取游戏规则和装载的装置(2420);
用于按照所述游戏规则解释所述用户输入从而产生计分的装置(2430);
用于将所述计分和装载解码为适合于在监视器(2450)上观看的帧的装置 (2440);
其中所述用于解码的装置(2400)是如权利要求1-9所述的装置。
11.一种用于以除了原设计速度以外的另一种速度播放编码视频序列的装 置,其特征在于所述装置包含:
用于存储编码视频序列的装置(2520);
用于接受来自用户的速度选择的装置(2510);
用于从编码的视频序列读取计分并按照所述的另一种速度在选择的时间点插 入计分的装置(2530);
用于解码图像的装置(2540);
用于观看所述解码图像的装置(2550);
其中用于解码图像的所述装置(2540)是如权利要求1-9所述的一种装置。
12.一种用于以除了原设计速度以外的另一种速度播放编码视频序列的装 置,其特征在于所述装置包含:
用于存储编码视频序列的装置;
用于接受来自用户的速度选择的装置;
用于选择部分编码视频序列的装置,选择依赖于接受的速度选择和作为编码 视频序列一部分的编码的优先权;
用于解码图像的装置;
其中用于解码图像的所述装置是如权利要求1-9所述的一种装置。
13.一种包含数据模型的数据携带器,其特征在于所述数据模型包括多个称为 亮度装载的空间亮度变化模式、多个称为地址装载的空间地址变化模式以及多个 称为计分的数值,所述数值定义了每帧中每个装载的含量。
14.如权利要求13所述的包含数据模型的数据携带器,其特征在于由如权利 要求1-9所述的装置记录和更新数据模型以进行编码。
15.一种用于接收数据模型的装置,其特征在于所述数据模型包括多个称为亮 度装载的空间亮度变化模式、多个称为地址装载的空间地址变化模式以及多个称 为计分的数值,所述数值定义了每帧中每个装载的含量。
16.如权利要求15所述接收数据模型的装置,其特征在于由如权利要求1-9 所述的装置记录和更新数据模型以进行编码。
17.一种将由在第一两维坐标系统中在整数位置上给定的图片元素组成的源 图像变换为由在第二两维坐标系统中在整数位置上给定的图片元素组成的目标 图像的方法,其特征在于:
每幅图片元素由每个颜色通道的亮度值组成,
变换由源图像内每幅图片元素的空间映射矢量定义。
所述方法包含以下步骤:
对于源图像内的每个图片元素
根据源图像内的位置和空间映射矢量计算目标图像内相应的位置,
将三幅相邻图片元素组内的源图像的图片元素组织起来,
对于每组
按照目标坐标系两维中称为主维数的第一个数值排序图片元素,由此产生第 一、中间和最后图片元素,从而可以识别出第一与最后图片元素之间最长的顶 点、第一和中间图片元素之间第一短顶点和中间和最后图片元素之间的第二短顶 点;
对于用第一和最后图片元素主维数数值定义的间隔内部的主维数的每个整数 值,
沿着由主维数的整数值定义的位置处的最长顶点插入第一中间图片元素和第 二维数的第一中间数值,
选择第一和第二短顶点从而使主维数的整数值位于由顶点的端点的主维数值 定义的间隔内部,
沿主维数的整数值限定的位置处的选择的短顶点插入第二中间图片元素和第 二维数的第二中间数值,
对于由第二维数的第一和第二中间值限定的间隔内部的第二维数的每个整数 值,
沿第二维数的整数值限定的位置处的第一中间图片元素与第二中间图片元素 之间插入最后的目标图像图片元素。
18.一种将由在第一两维坐标系统中给定整数位置的图片元素组成的源图像 变换为由在第二两维坐标系统中给定整数位置的图片元素组成的目标图像的方 法,其特征在于:
每幅图片元素由每个颜色通道的亮度值组成,
变换由源图像内每幅图片元素的空间映射矢量定义。
所述方法包含以下步骤:
对于每个图片元素
根据源图像内的位置和空间映射矢量计算目标图像内相应的位置,
将三幅相邻图片元素组内的源图像的图片元素组织起来,
对于每组
按照目标坐标系两维中称为主维数的第一个数值排序图片元素,由此产生第 一、中间和最后图片元素,从而可以识别出第一与最后图片元素之间最长的顶 点、第一和中间图片元素之间第一短顶点和中间和最后图片元素之间的第二短顶 点;
对于第一和最后图片元素主维数数值定义的间隔内部的主维数的每个整数 值,
沿着主维数整数值最长的顶点计算相对位置,
采用沿最长顶点的相对位置在第二坐标系中相应位置插值,从而找到第一中 间目标位置,
采用沿最长顶点的相对位置在第一坐标系中映射回相应的位置,从而找到第 一中间源位置,
选择第一或第二短顶点从而使组维数的整数值位于由顶点端点的主维数值限 定的间隔内部,
沿着主维数整数值选择的短顶点计算相对位置,
采用沿选择的短顶点的相对位置在第二坐标系中相应位置插值,从而找到第 二中间目标位置,
采用沿选择的短顶点的相对位置在第一坐标系中映射回相应的位置,从而找 到第二中间源位置,
对于由第一和第二中间目标位置的第二坐标系限定的间隔内部的第二维数的 每个整数值,
沿着从第二维数的整数值的第一到第二中间目标位置的直线计算相对位置,
采用沿着直线的相对位置映射回第一坐标系统中的相应位置,从而找到最后 的源位置,
通过源图像中图片元素的权重平均值计算最终的目标图像图片元素,采用最 终的源位置以计算权重。
19.如权利要求17或18所述的方法,其特征在于采用4图片元素组代替3图 片元素组。
20.用于产生由作为交错帧给出的图像的偶数或奇数扫描行组成的域的方 法,包含了如权利要求17-19所述方法中的任意一种,
其特征在于目标图像的主维数或第二维数对应于目标图像的扫描线,而对于 偶数域只考虑该维数的偶整数值,而对于奇数域只考虑奇整数值。
21.一种将由在第一两维坐标系统中给定整数位置的图片元素组成的源图像 变换为由在第二两维坐标系统中给定整数位置的图片元素组成的目标图像的装 置,其特征在于:
每幅图片元素由每个颜色通道的一个采样值组成,
变换由源图像内每幅图片元素的位移矢量定义。
所述装置包括:
对于源图像内的每个图片元素根据源图像内的位置和相应的位移矢量计算目 标图像内相应位置的装置(352),
将三幅相邻图片元素组内的源图像的图片元素组织起来的装置 (1412,1414,1416,1418,1420),
用于按照沿一个维数上的位置对图片元素组排序的装置(1440),
用于产生给定间隔内第一维数的整数值的装置(1460,1462,1464),
用于确定数值是否在给定间隔内部的装置(1466),
用于选择顶点的装置(1470),
用于在已知数值之间插入图片元素的装置(1474),
用于在已知数值之间插入图片元素的装置(1472),
用于产生给定间隔内第二维数整数值的装置(1480,1482,1484),
用于插入像素值的装置(1486),
用于产生地址的装置(1490),以及
用于在产生的地址处放置像素值的装置(1492)。
22.如权利要求21所述的装置,其特征在于按照如权利要求18-20所述的 方法进行更新。
23.一种当对第一图像重新采样以产生多幅最终图像时减少混淆效应的方 法,所述对每幅最终图像的重新采样按照位移域进行,
其特征在于所述位移域是基本位移域的标度形式,标度因子称为位移计分,
所述方法包括以下步骤:
使所述第一图像低通滤波从而使得每个所述区域内所述第一图像的多个区域 的滤波系数按照所述区域的频率容量和所述位移域的相应区域的特性更新,因此 产生低通滤波图像,
形成所述第一图像与所述低通滤波图像之间的差异,因此产生差异图像,
对于每幅最终的图像,根据所述低通滤波图像和所述用称为高通计分标度的 所述差异图像之和重新取样,高通计分是位移计分的增函数。
24.如权利要求23所述的方法,其特征在于重新采样由权利要求1-9所述 的装置完成。

说明书全文

发明领域

本发明涉及解码视频图像的装置和方法,特别是涉及将压缩的(按照已知的适 于发送和存储的数据建模方法)视频序列解码为适于观看的解压缩,所述编码 数据方法包含若干称为亮度装载(load)的空间亮度变化模式、若干称为地址装载 的空间变化模式以及若干称为计分(score)的数值,它定义了每帧内所含装载的数 量。本发明进一步涉及一种将源图像(它由第一两维坐标系中给定了整数位置的图 像元素组成)变换为目标图像(它由第二两维坐标系中给定了整数位置的图像元素 组成)的方法。

背景技术

采用数字技术变换和存储图像正变得愈来愈普遍。但是以原始格式表示数字 图像需要大量的比特位,这经常会带来一个问题,即要求较宽的发送带宽或者大 容量的存储介质。这是采用压缩技术的出发点,该技术的目的是在不过多损害图 像质量的前提下减少表示图像所需的比特数。
早期的数字图像发送和存储采用脉冲编码调制(PCM)方法。现今的系统更多 地采用数字压缩技术。其中一种压缩技术就是JPEG,在那里每一帧都被压缩为 一幅独立于其他帧的静止图像。这样的帧被数字化为称作像素的图像元素,像素 按照8×8的像素分组。每一块采用DCT(离散余弦变换)进行变换。变换系数 被量化和执行长度编码,并且由可变长度编码(例如Huffman编码或运算编码)对 其结果进行编码。随后发送或存储最终的比特流。
在TV信号中,由于同一物体可能在几帧中出现,只是其在对应物体或照相 机运动的帧内的位置不同,所以后续的帧通常相互关联。这样就可以采用运动补 偿压缩技术。其中一种技术就是MPEG。在MPEG中,有些帧采用类似JPEG的 静止图像编码来压缩。而其他帧则采用预测和运动补偿来编码:对于每一块,编 码器完成一次搜寻过程,将先前发送帧内当前块位置附近较小搜寻区域内的最相 似块搜索出来。只有寻找到的与当前块位置匹配最佳的位置(称为块的运动矢量) 才与DCT编码余量一起传送。解码器随后按照运动矢量收集像素来重建帧,完 成编码余量的逆DCT并随后将结果叠加在一起。
对于基于模型的压缩技术(例如线状帧)或者基于物体的区域编码的研究正在 进行当中,但是还没有取得商业上的突破。
数字压缩和解压缩技术一种可能的应用是在CD-ROM上存储影视资料。如果 不采用压缩技术,一张光盘上只能存储一分钟都不到的数字影视资料。为了在光 盘上完整地存储一部影片,必须采用压缩技术。这样,当观看前或者观看时就必 须将最终的数据解压缩。
另一种可能的应用是视频点播(Video On Demand),通过它可以使多个用户与 一个公共的发布中心(distribution central)连接。每个用户都可以从大量的影片中挑 选一部即时回放,而发布中心随后必须将所需的影片发送给该用户。用户的数量 要求尽可能的多,而且它们采用成本最低的有线网络互相连接。因此发布中心经 常采用压缩技术,这样就需要在观看时解压缩数据。
还有一组可能的应用是模拟器、游戏和虚拟现实。这种系统产生的图像部分 基于已经可得的图像而部分基于交互用户的输入。一组规则决定了用户输入如何 作用于将波显示的图像。
在作为参考文献包含在这里的专利申请WO95/08240中,提出了一种数据分 析方法和装置。称为IDLE的该系统包含适于在其他数据集、视频序列之间编码 的编码器和适于解码相同数据集的解码器。
本发明的目标是提供一种硬件结构,它作为一种完整的IDLE图像解码器能 够实时运行。
本发明的进一步目标是提供一种能够实时解码视频图像的图像解码方法。
本发明的进一步目标是提供一种适用于一定范围的图像尺寸和复杂程度的结 构。因此本发明并不是针对某一特定的TV系统等提出,而是描述了如何适用于 各种格式。
本发明的进一步目标是提供了优化方法,从而降低了适合IDLE用解码器的 制造成本。
本发明的还有一个目标是提供一种解码器,它可以免受发送错误的影响。
本发明的进一步目标是提供一种用于交互式模拟和游戏的解码器。

发明内容

按照IDEL建模原理,序列的内容被划分为场景(scene)。在每幅场景中,称 为holon的每个物体分别采用称为脸色装载(blush load)的空间亮度变化模式、称 为微笑装载(smile load)的空间地址变化模式和称为微笑与脸色计分的相应数值 (对于每帧它定义了重建holon应当采用每个装载的多少部分)建模。holon最后被 一起放入适合观看的完成帧内。
在本发明的第一较佳实施例中,提供了一种简单的解码器,它由以下模块组 成:接收经过压缩的IDLE模型的模块、将模型解压缩为过渡格式的模块、按照 时间相关顺序存储模型的模块和从模型中重建序列帧的模块。模块采用流线方 式相互间正向传递结果。
在第二较佳实施例中,提出了一种经过优化的解码器,它包括提高建模能、 优化存储器用法和优化计算速度的机构。
这些装置适合于采用超大规模集成(VLSI)电路来实现。
本发明的优点主要得益于充分利用了同步运行的多个专用处理单元。数据以 简单的流水线方式在处理单元之间正向传递。很少需要随机访问大存储器组;大 多数的访问都是顺序进行的。系统设计成使大多数处理单元可以以低精度(4,8,12 或16)完成数值运算,而产生的图像仍然具有极佳的质量。大多数的运算都是简 单的加法、乘法和移位运算。虽然需要一些除法模块,但是可以采用查寻表的方 式以较低的精度实现。
根据这些原理,这种解码器硬件结构的实现提供了100-10000倍于个人计算 机运行等价软件的处理速度,然而批量制造的成本可能更低。采用现今的VLSI 技术可以处理的图像尺寸至少为PAL或NTSC格式,并且可以处理复杂程度较高 的模型。由于本发明适合于上面提及的WO95/08240所描述的系统,所以同样也 具备那里的优点。这包括较高的压缩率、较佳的图像质量和较好的模型解释与控 制能力。
本发明进一步提供了一种将源图像(它由第一两维坐标系中在整数位置上给 出的图像元素组成)变换为目标图像(它由第二两维坐标系中在整数位置上给出的 图像元素组成)的方法。
所揭示的图像解码器和解码方法可以实时解码按照IDLE建模方法压缩的视 频序列。经过压缩的模型可以包含图像的多因子亮度和多因子运动表示。在解码 期间可以选择替换模型,这用于交互TV和TV质量的游戏。
附图的简要说明
图1给出了包含编码器和解码器的基于IDLE建模原理的发送系统的示意 图;
图2给出了包含解码步骤的总体示意图;
图3表示基本的IDLE解码器;
图4表示包括一些选项的IDLE解码器;
图5a表示S域的基本格式;
图5b表示S域的执行长度编码格式;
图5c表示另一种单独装载组寻址下的S域执行长度编码格式;
图5d和e一起表示另一种S域的执行长度编码格式;
图6表示与乘法电路结合在一起的一种可能的计分存储形式;
图7表示将YUV变换为RGB的颜色空间变换器;
图8表示用于仿射变换的点头(nod)电路;
图9表示用于装载存储的废物收集机构;
图10表示使输出格式适合分辨率的模块;
图11示出了在运动模块中进行内插的必要性;
图12a和b示出了运动模块中的4个像素运动的细节;
图13a和b示出了基于三形的运动模块的原理;
图14给出了逐级内插下运动模块的实现;
图15示出了用作运动模块一部分的环形电路;
图16a示出了运动模块内插电路的数值原理;
图16b给出了Interpol的实现;
图17表示作为运动模块最后一部分的放置电路;
图18a示出了两路线性内插的原理;
图18b给出了两路线性内插的实现;
图19给出了基于反向映射的运动模块的硬件实现
图20a和b示出了基于直角的运动模块的原理;
图21a示出了处理反混淆现象的理想策略;
图21b示出了对理想策略的逼近;
图22给出了反混淆现象逼近的数据流程图
图23示出了对于帧的最后滤波余量校正;
图24表示在解码期间改变图像的例如用于游戏的系统;
图25表示在解码期间改变回放速度的系统。
实施发明的较佳方式
第一较佳实施例
图1给出了按照WO95/08240的基于IDLE的发送或存储系统的示意图。一系 列数字化的视频帧110被送入IDLE建模器115。最终的模型120采用传统的技 术(例如执行长度编码、可变长度编码、离散余弦变换DCT等)作进一步的压缩, 如同在块125中所示。最终的比特流130的比特数较原始表示110要少得多,并 且更加适合于例如通过广播发布或者在磁带或光盘上存储。
在观看发布或存储的压缩比特流之前,必须对其解码。这经过两个步骤完成: 首先是IDLE模型解压缩,如同在块135中所示,接着采用解压缩的IDLE模型 参数145重建(块145)单独的每一帧150。本发明涉及这种从压缩的比特流130 到可视帧150的解码。
专利申请WO95/08240提出了一般的建模方法。图2通过一个实例示出了从 IDLE模型重建帧的基本方法:一原始视频序列由一张脸组成,其上有以各种方 式运动的嘴巴(用来表示微笑)和亮度变化的脸颊(用来表示脸色)。脸与背景作为分 开的物体(也称为holon)建模。从序列的其中一帧选取的“典型的”脸作为一个脸 色装载210存储。脸色的变化趋势进一步用脸色装载212表示。每个脸色装载都 具有相应的计分。一个装载和一个计分的集合(collection)称为因子。对于每个像 素,首先将每个因子的计分与装载相乘,随后按照像素顺序将结果相加,从而形 成带脸色的图像240。
该实例示出了单色脸色模型,但色它的原理可以用于彩色图像。在一个较佳 实施例中,每个脸色装载都以单色表示并使它只作用于一个颜色通道(例如红、 绿、蓝),从而当调整相应的计分时,图像只有一个颜色通道发生变化。这称为可 分离的脸色。在另一个较佳实施例中,每个脸色装载以完整的颜色表示并且相应 地作用于所有的颜色通道,从而在改变计分时影响所有的颜色通道。这称为不可 分离的脸色。利用可分离的脸色进行建模通常具有的优点是能够在装载数目一定 的前提下增加变化,或者表示同样的变化可以采用较少的装载,这节省了必需的 存储器容量。采用不可分离的脸色进行建模通常具有的优点是模型与物理现实更 为接近,从而当输入的脸色由两个或两个以上的颜色通道显示时,仍然只用一个 因子表示并可以只用一个计分来控制法该脸色出现的数量。
相应地,两种主要的嘴巴运动模式作为两个微笑装载220、222存储下来。 通过将微笑因子(每个微笑因子由计分与装载之积组成)的贡献相加起来得到了微 笑域230。
该实例只示出了垂直方向的运动,单色对于垂直和水平方向的运动组合同样 可以应用该原理。在一个较佳实施例中,每个微笑装载只作用于一个维度,不是 垂直方向就是水平方向,因而改变一个计分只引起垂直或水平方向的运动。这称 为可分离的微笑建模。在另一个实施例中,每个微笑装载包含一个垂直分量和一 个水平分量,因此一个计分同时作用于垂直和水平方向。这称为不可分离的微笑 建模。与脸色建模一样,可分离和不可分离的微笑建模各有其优点。
脸色的图像随后按照微笑域运动。在《数字图像歪曲》(G.Wolberg,IEEE Computer Society Press,1994,第三版)中描述了如何根据微笑域(常常称为运动域、 歪曲域或非对称域)来移动(也称歪曲或位移)一幅图像,该书作为参考文献包含在 这里。结果250随后放入帧260内。对于其他的holon(在这里是背景)也重复整个 过程。帧现在已经就绪并且可以提供给观众。计分以及可能还有装载随后经过更 新,并且对于下一帧继续进行处理。
图3示出了第一较佳实施例的总体示意图。解码器300包含控制处理器305。 为简化起见省略了控制处理器与其他处理单元的连接,但是处理器的主要用途是 通过启动、暂停和终止处理单元使各种单元在输入比特流速度、其他处理单元速 度和帧速率下同步。由于控制处理器不必处理单个像素,所以计算负担相对较 小。因此它可以采用专用处理器或者通用微处理器(例如Intel 386SX)实现。
经过压缩的比特流310包含解码帧所需的所有模型信息。数据的各个部分按 照通信协议做上标记,因而解多路复用单元(简记为DEMUX)320可以改道发送数 据以校正处理单元。
压缩的比特流310可以由自动编码器产生。它也可以或多或少由操作者手动 产生,特别是对于模拟和游戏方面的应用。
装载具有传统静止图像的特征,即它们是2维垂直与水平坐标网格上的函 数,并且它们具有较高的空间冗余度。因此按照已知的图像压缩技术(例如DCT (参见《JPEG手册》,W.Pennebaker & J.Mitchell,Van Nostrand Reinhold,1993或者 子波或预测编码)足以存储或发送装载。由此在译码器一侧,压缩的装载必需经过 静止图像解码器324发送,在那里它被解码为完整的表示。
每个因子都需要应用于几帧,所以解码器必须能够存储在解码这些帧的期间 所需的相应装载。为此,解码器300包含了若干装载存储326。开关325控制着 静止图像解码器324的结果送往哪一个装载存储。该开关受控制处理器305控 制。在一个较佳实施例中,装载被送至校正域的第一自由装载存储。在另一个较 佳实施例中,压缩的比特流310包含侧面信息(side information),它决定了装载在 哪一个装载存储中存储。
每个装载存储可以存储几个不同holon的数据。装载存储的哪一部分包含哪 一holon的数据由段域(简记为S域,它保存在S域存储322中)管理。这样一种 结构将每个装载存储的每个单元映射至一个holon上。图5a示出了一个较佳实施 例,在那里,通过一个实例对图3的S域存储322作了更详细的图示。所有装载 存储的大小相同并且每个holon的各个装载在装载存储中占据同一位置。S域存 储500的大小也相同,并且在S的每个单元中存储着该holon的号码,即分配给 它的装载存储中相应的元素。该实例示出了用1表示的第一holon、用2表示的 第二holon,它们被用0表示未用空间包围。
S域的每个元素与垂直坐标v和水平坐标h相关联,并且该holon的每个装载 也可以包含对应该位置的元素。选取坐标轴使得v=0,h=0位于左上角,这里v表 示扫描线沿向下的方向增加而h表示扫描线沿向右的方向增加。这种位置的集合 称为参考坐标系,它包含了参考位置上的物体。
每个参考位置元素(由脸色装载值、微笑装载值和元素的其他特定值组成)简 记为RefEl(见图5b)。
进一步的处理按照流水线的方式进行,流水线由一条具有几个流水线通道的 数据路径和对到达流水线的数据施行各种操作的若干处理单元组成。流水线采用 流水线时钟达到同步。每个流水线时钟脉冲对应一个新的RefEl输入流水线,并 且同样地,对已经等候在流水线上的每个RefEl施加一次操作。
来自所有装载存储326和S域存储322的数据都以并行方式读入流水线330、 334的起始端。在一个较佳实施例中,所有的RefEl都以稳定的速度并按照装载 存储的扫描次序读出。
流水线中的下一站是相乘单元340,在那里计分与装载相乘。图6更为详细 地示出了计分存储328和相乘单元340。计分610的的更新可以向下载入每帧的 计分存储630。计分存储630被组织为行与列的形式,每一行对应着holon的号 码而每一列对应着一个因子。随后来自装载组的元素组620配合相应的S值开始 到达。对于每组元素,S值640选择计分存储中的一行,而每列相应的计分650 被送至相乘器660,在那里计分与所有因子的装载元素相乘。该结果以并行方式 输出至流水线670的下一段。
对于每组装载元素,最终图像的地址现在是当前位置与各微笑因子贡献之 和。
在一个较佳实施例中,当前位置的坐标由环路机构342产生,对于每帧它初 始化为零并逐步增加每组装载元素的垂直与水平当前坐标v和h。在另一个较佳 实施例中,与装载存储326相关的地址逻辑产生当前坐标。
通过求和微笑模块352将当前坐标与微笑因子的贡献相加得到了该组装载元 素的新位置。它可以实现为一种树状结构加法器,该加法器将垂直方向上所有的 贡献相加,对于水平方向也同样可以采用这样的加法器。
与此同时,各种脸色因子的贡献在求和脸色模块354中相加。对于彩色系统, 可以在每个颜色通道上采用树状加法器。
着上脸色图像的每个像素现在连同对应的新位置一起送入移动模块360中。 S域值330在延迟模块中受到延迟以补偿相乘、求和微笑和求和脸色模块中的等 待时间,它也被送至移动模块360中。
移动模块360产生了像素值,例如r,g,b和它们的地址。下面将揭示移动模块 的内部结构。
由于按照参考位置扫描顺序产生并且可能在最终的帧中运动到其他地址,所 以它们通常不会按照移动模块360的扫描顺序消失。由于大多数显示器和其他输 出设备都是按照扫描顺序工作的,所以像素在由视频电路输出之前必须临时地存 储在帧缓冲器370内。
由于运动,几个holon的像素可能会交叠。在一个较佳的实施例中,当发生 冲突时,第一次出现在帧缓冲器单元位置上的像素获胜,并且将经过编码的比特 流排列为首先解码最前面的holon。这称为首先--获胜。在另一种较佳实施例 中,最后出现的像素获胜,并且将经过编码的比特流排列为最后解码最前面的 holon。这称为最后--获胜。
第二较佳实施例
在第一较佳实施例中,揭示了一种最简单的IDLE解码器。现在,在第二较 佳实施例中将揭示一种更为完整的IDLE解码器。它能够处理尺寸较大而就建模 运算符和因子数目来说更为复杂的图像,但是存储器和芯片面积却增加很少。
图4给出了第二较佳实施例的总体示意图。
压缩的比特流403首先输入误差控制与校正模块406,简记为ECC。该模块 采用由已有技术获知的Reed-Solomon编码方法同时检测和校正发送误差,或者 采用循环冗余校验方法(简记为CRC)只检测误差。在《数字通信》 (J.Proakis,McGraw Hill,1989)中描述了如何实现Reed-Solomon编码。在利用双向 发送的应用中,还可以请求重新发送出错的数据。
输入比特流中经过检测但未经校正的误差可以启动误差隐藏策略。选择何种 策略取决于哪个数据遭到了破坏。如果脸色或微笑装载的一小部分包含误差,则 该部分可以设定为其周围元素的平均值,从而使发送误差只是引起特征的丢失而 不是丢失一些其他模式。如果脸色或微笑装载的大部分包含误差,则可以强迫相 应的计分为零,因此完全消除了该因子的影响。如果一帧或数帧的计分包含误 差,则计分值可以由前面帧的值来替代,或者可以根据前面和后面的计分用内插 值替代。
DEMUX 408的工作方式于第一较佳实施例中的DEMUX 320相同,除了它必 须具备识别范围更广的数据类型和因此改道发送的能力以外。
装载存储414…416可以设计成为使它们在帧解码期间能够写入。实现这种 能力的一种方法是在装载存储中采用视频随机访问存储器VRAM。VRAM的优 点是具有两个端口,一个是用于写入的随机访问端口和一个用于输出的串行端 口。为了避免因同时由装载存储读取RefEl和向装载存储写入RefEl引起的不一 致,相应holon和因子的计分存储442中的计分可以设定为零,从而使正在写入 的装载不起作用。另一种办法是可以将下面将要解释的路由器463设定为不向正 在写入的装载正向提供结果。
另一种解决方案是在装载存储中采用常用的成本略低的单端口RAM,它经 过切换使得在任意时刻不是向装载存储写入就是从装载存储读取。
S域的每个单元都与垂直坐标v和水平坐标h相关。相应holon的每个装载也 包含于同一v和h相关的单元。一个S域单元、对应的装载单元以及明确或隐含 给定的v和h坐标简称为RefEl。与holon相关联的坐标系被称为参考位置。对 于图5a示出的S域布局,所有的holon都在同一坐标系中给定。
S域包含较高的冗余度。如果已知S域的一个单元,则下一个S域单元表示 同一holon的概率较大。因此,如图5b所示,S域可以具有紧凑的格式。与图5a 中在装载存储中存储每个单元位置的一个号码不同,这里保持了S域的执行长度 编码形式,参见William M.Newman和RobertF.Sproull的《交互式计算机图形 原理》(McGraw Hill国际图书公司,第二版,1981)此书意也作为本文的参考。 在一个较佳实施例中,每次执行作为holon号码存储,它可以取值为零(表示装载 存储未占据的部分)或执行长度。在另一个实施例中,如图5b所示,只对S域的 非零单元进行执行长度编码,每次执行表示为一行。由于假想参考位置中像素的 垂直和水平位置现在不再由执行地址给定,所以每一行不仅包含holon号530和 执行536中单元的号码,而且还包含执行开始时预定的垂直和水平位置532、 534。
在S域存储中包含预定的垂直和水平位置具有的优点是可以补偿固定位置的 偏离。假设两个holon趋向于交替占据若干帧的同一位置。由于它们无法存储在 如图5a所示数据结构中的同一位置上,所以至少有一个被存储在其他坐标上。 如果没有其他机构来修正holon的位置,则必须利用分离的微笑装载将holon移 回正确的位置。图5b所示的数据结构通过对每个holon定义一个参考坐标,更加 充分地达到了同一效果。
前一种方法要求所有的装载存储必须包含分配给所有装载存储中同一地址的 每个holon。在另一个较佳实施例中,holon可以有装载存储中的不同地址。图 5c示出了基于此目的的S域的表示。对于每次执行属于同一holon的扫描次序的 连续S域单元,有一行544。对于每次执行,给出了它的holon号550、第一RefEl 的垂直551和水平552坐标、RefEl 553的号码553和每个装载组的第一单元554 -556的地址。
如果确定每个holon占据每个装载存储中连续的存储位置,则采用如图5d和 e所示的其他表示S域。图5d示出了如何定义每个holon:它们列在表560中, 这里holon号定义了行562,并且对于RefEl的每个holon号和每个装载存储,给 出了该holon第一单元的地址572-576。此外每次执行必须由图5e中相应的表 定义,表580包含每次执行的一行582和每次执行的一行582、每次执行的holon 号数590、第一元素的垂直位置592和水平位置594以及该次执行的RefEl 596。
第一列590给出了holon号,接下来的两行592、594给出了执行的第一元 素的参考坐标,而下一列592给出了该次执行的像素个数。随后明确给出每个装 载存储中的地址。只要S域经过相应地组织,装载存储中的地址排序可以是任意 的;S域存储中存储的数值定义了解码次序。
对于装载存储,图5b、5c、5d和5e中给出的表示S域的每个执行编码长 度需要略微不同的地址产生逻辑。但是所有的这些方法都基于执行中第一RefEl 的地址初始化,并且随后采用顺序读出的方式访问执行中其余的RefEl。
每个执行长度编码表示也可以仅仅借助几个holon的同一存储区域重复几个 holon的装载。据信这主要对需要随时进行控制的编码系统(例如游戏控制器, 在那里操作者可以决定编码器件几个holon对装载的共享)有用。
S域可以压缩。S域的执行长度编码可以作为充分利用水平方向的冗余度进 行压缩的基础。通过充分利用垂直方向上的冗余度可以获得进一步的压缩,例如 对于每一扫描线利用前面的扫描线作为预测器并且只对校正器编码。在这种情况 下必须有S域解码器418。
另一种压缩S域的方法是通过差分链编码。首先识别holon轮廓上的点。随 后寻找轮廓附近的点,并且传送从第一点到第二点的方向。随后寻找轮廓附近接 下来的点,发送该方向上的差异,并且不断重复直到对整个轮廓完成编码。在方 向差异上可以采用执行长度编码和可变编码长度编码。轮廓随后被填充上holon 号。不断重复该步骤直到发送完整个S域。
装载存储可以更新。根据编码器寻找因子的次序,可以以任何次序发送新的 装载并更新S域。
解码器的存储容量是有限的。因此必须采用一种方法在新的因子需要空间时 去除旧的装载存储的内容。一种方法就是由编码器发出重新初始化的命令以使其 空出来。
另一种更为先进的方法是有选择地删除装载存储的内容。删除部分可以由编 码器中的优先权机构选择,并且这种优先权机构可以将降低的优先权分配给不再 看得见的holon或者相关度较小的装载。
图9示出了废物收集电路。电路900由一个装载存储和相关的地址产生逻辑 组成。它可以在正常模式下运行,当输出装载970时接收装载存储922中的装载 910和它们的地址912。如果采用图5b、5c、5d和5e所示的S域执行长度编 码的表示,则流水线上的S域数值在正常模式运行期间需要作为输入914。它还 可以通过输入信号916切换于废物收集模式下运行。在收集废物之前,收集列表 存储930中下载了需要去除的holon 918列表或者需要保存的holon的列表。在废 物收集模式中,普通用于寻址装载存储922的普通寻址产生模块920的输入和输 出地址由开关940切换。特别用于废物收集的地址产生器模块932处于使能状 态。这首先将输入和输出地址初始化为零。随后S域914循环。每次按照收集列 表寻找到应该保存的holon时,执行中的每个RefEl就循环,每个RefEl的输入和 输出地址就增加,输出由开关944接至反馈发送线路960和进一步的开关942并 写回装载存储。其他holon被忽略而不再写回装载存储,由此被删除掉。
如果采用两个端口RAM(它的速度使得装载存储所需的输出率不会超过装 载存储的最大写入速度)的装载存储,则可以将普通运行模式于废物收集模式结 合起来,从而在普通运行期间进行废物收集。
流水线的设计可以依解码器所需特性改变。
如果允许将可能的时钟速率、所需的输出分辨率和帧速率组合起来,则由于 两个或两个以上的装载存储共享一条物理管线信道,所以流水线可以多路复用。
对于高输出分辨率和高帧速的系统,比较好的是超收缩形式。采用该设计时 没有公共的流水线时钟,而是只要需要输入,每个流水线部分就启动处理,只要 输出准备好后信号就进入下一部分。这种控制的设计更加复杂,但是吞吐量更 大。
基于好几个可能的原因需要在几种分辨率下表示装载。一个原因是数据本身 是低分辨率的;如果照相机的分辨率较低,或者如果采用适于平滑运动域的运动 估计技术,则有些脸色或微笑因子将具有较低的固有分辨率。
在不同分辨率下表示装载的另一个原因是同样的比特流可以在性能不同的解 码器上解码。装载可以分离为只需低分辨率解码的一组和可以增加高分辨率解码 的另一选项组。随后低分辨率解码器只解码低分辨率装载,而高分辨率解码器既 对低分辨率装载也对高分辨率装载进行解码。
另一个原因是肉眼对不同的域具有不同的分辨灵敏度。对于颜色序列,众所 周知,如果在一个颜色空间(例如PAL TV系统中所用的YUV或者NTSC TV系 统中所用的YIQ)内表示颜色,则色度分量U、V和I、Q与强度(也称亮度) Y分量相比对空间分辨率的要求较低。
还有一个原因是可以采用不同级别的误差保护。如果因为有限的带宽、有限 的处理能力等而无法给整个比特流以足够的误差保护,则应该将低分辨率部分分 开并给予比高分辨率部分更高的保护。经过合适的隐藏,与低分辨率部分出现的 误差相比,对高分辨率部分出现的误差在视觉上要难以察觉得多。
由于实现装载存储所需的存储器对系统成本有显著的影响,所以当存储装载 时充分挖掘低分辨率的潜力比较有利。
参见图4,来自装载存储414的装载在送至相乘模块446之前先通过空间扩 展步骤430。
为了保存从装载存储输出的简单的收缩数据流,比较好的是对扩展模块进行 设计,使得用于装载存储的读出逻辑的功能独立于后面的扩展模块。
为了追求最大程度的灵活性,扩展步骤比较好的是装备使能/旁路开关,该开 关允许装载存储的数据扩展或者无变化地通过。
一个实现上述两个设计目标的较佳实施例就是使装载存储中的低分辨率装载 交错。对于这种工作方式下的一个例子,考虑一个通过备份数值实现的最简单的 上采样的例子和只在水平方向实现这种方式的例子。随后扩展步骤可以被切换, 从而使基于每两个连续输入值的扩展步骤在一条输出线上输出同样的两个连续 值并使其他的输出线路保持零状态,这对应于旁路模式,或者在一条输出线路上 输出第一输入值的两个连续的副本而在第二输出线路上输出第二数值的两个连 续副本,这对应于使能模式。
扩展也可以同时以沿垂直和水平方向的上采样方式进行,从而使得每组4个 值的输入于旁路模式下在一条输出线上产生4个数值或者于使能模式下在4条输 出线路上产生4个数值。
在上面提及的《数字图像歪曲》一书中可以找到给出了较为平滑的输出并因 此在图像中引入较少的有害的人为痕迹(例如双线性插值)的重复采样方法。这 些方法使每个输出值基于不止一个的输入值。这意味着扩展模块必须包含少量的 存储器,从用于基于水平上采样的最简单的线性插值入的一个值到双线性插入的 一根扫描线。
扩展模块可以实现为使得扩展只施加在选定的holon上。在这种情况下,一 定有一个扩展建立存储426,对于每个扩展模块,它存储在每帧之前更新的每个 holon的一个比特。基于这些比特和S域值,每个扩展模块随后设定为使能或旁 路模式。
为了使S域值与装载值同步,必须根据采用了延迟模块440的扩展模块中的 等待时间来延迟S域。
没有必要在所有的装载存储中实现扩展模块。为了保持流水线的同步,没有 通过扩展模块发送的数值必须通过延迟模块432发送。
扩展模块可以是级联方式;延迟模块因此必须具有相应的尺度。
编码器可以压缩扩展建立。在解码器一侧,必须相应地在扩展建立解码器424 中压缩扩展建立。一种可行的压缩方法是发送与前面建立的差异并以执行长度和 可变长度编码方式对差异编码。
计分存储442、相乘模块446和相应的延迟模块450的操作与第一较佳实施 例的相似。但是也可以作进一步的优化。如果是执行长度编码的S域,则不必 定计分和在每个流水线时钟脉冲内从计分存储442中提取计分。况且,由于S域 值在整个执行期间为常数,所以可以锁定计分并在每次执行开始时提取计分。这 样就可以允许采用更快的时钟频率,可能的微小代价是在每次初始化执行时有短 暂的停顿。同一原理可以应用于流水线中大多数的后续步骤中。
编码器可以压缩计分。在解码器一侧,必须在计分解码器444内相应地解压 缩这些计分。已知的压缩和解压缩时间序列的方法可以用于每个计分上。这样的 方法包括差分编码、预测编码和子带编码。因此可以采用误差隐藏方法:对于差 分编码,一种隐藏方法是当差异丢失时重复先前的计分。对于预测编码,一种隐 藏方法是当相关器丢失时不用相关器而只用预测器。对于子带编码,一种方法是 当误差系数丢失时不用误差系数来重建数据。
一般来说计分也可以被压缩和解压缩。一种方法是维持计分的双线性模型。 在H.Martens & T.Naess所著《多变量标度》(John Wiley & Sons,Chicester 1990) 一书中描述了如何形成和更新双线性模型,它作为参考文献包含在这里。代替外 在地发送计分,计分作为元装载、元计分和余量被再次建模。它们被量化,并采 用执行长度编码和可变比特长度编码之类的方法来编码。
另一种可能性是在误差隐藏中采用计分的双线性建模。在解码器一侧,保持 计分的双线性模型。当计分数据是错误的时候,它们被赋予权重零以更新模型。 双线性模型可以用来仅仅通过将元计分与元装载相乘来重建丢失数据的数值。
对于有些应用,例如以极高的压缩率进行压缩,带宽可能不够,因而无法表 示相机噪声或其他表观随机模式。在其他需要利用计算机图形方法产生模型的应 用场合下,如模拟器或游戏通过加入相机噪声可以改善主观的图形质量。而且, 由于在装载发送中或帧缓冲器之后进行了量化,所以可能需要抖动处理。在Anil K.Jain的《数值图像处理基础》(Prentice Hall,1989)一书中可以找到将随机噪 声用于抖动的方法,该书作为参考文献包含在这里。
一个实现前面文章段内给定目标的较佳实施例是采用纹理产生器模块455。 它根据来自随机发生器457的过滤随机数产生纹理。在上面提及的《数值图像处 理基础》中可以找到如何合成纹理的例子。随机数可以以流水线的速率产生随机 数。滤波系数和纹理特征(例如亮度)可以由专用于每个holon并存储在每帧前 更新的纹理建立存储452中的数值控制。
而且还可以在空间内更细致地控制滤波系数。通过将流水线通道域纹理发生 器连接,可以逐个像素地控制纹理。
与扩展建立中所用的使能/旁路比特类似,它也可以存储在纹理建立计分内并 使每个holon的纹理处于使能或旁路状态。因此流水线管道和装载存储对于纹理 控制和其他信息类型可以互换使用。
编码器可以压缩纹理建立。在编码器一侧,必须在纹理建立解码器454中相 应地解压缩它们。一种可能的方法是发送域前面建立的差异并采用执行长度和可 变比特长度编码的方式进行编码。
没有通过纹理发生器的数据必须相应地延迟,这里由延迟模块456作用。
在总数有限的微笑和脸色因子内,因子在微笑和脸色域之间的优化分配一般 依赖于有待建模的视频序列。有些序列包含了大量的脸色性质的信息和少量的微 笑性质的信息,其中可以优化为包含大量的脸色因子。其他的序列包含大量的运 动。此时它可以优化为包含大量的微笑因子。在存在快速而复杂的运动时,肉眼 的心理视觉空间分辨率较差,所以如果存在脸色因子,也可以以低分辨率存储。
可以选取数量更少的装载存储。但是这需要改发装载存储的内容,从而对于 一移动模块492它们结束于校正域。为此采用了路由器。这可以像纵横制交换机 一样来实现,具有将任何实现为能够将任何输入连接至任何输出的能力。
在最简单的实施例中,路由器只相对每帧建立,从而使微笑和脸色因子数之 间的分布对于所有的holon为常数。
在更为先进的实施例中,路由器可以包含每个holon的建立。该建立存储于 在每帧前更新的路由器建立存储462中。路由器建立存储组织为每个holon一行 和每个来自路由器的输出通道一列。存储在路由器建立存储中的每个数定义了哪 一根输入流水线信道与输出信道相连。例如,如果在第二行第三列中的数为4, 这意味着每次处理属于holon2的单元,输出信道3的输出应该从输入信道4取 值。
一个较佳实施例是将路由器放在扩展模块430之后但相乘模块446之前,并 且还使路由器具备将任何输入与不止一个输出相连的能力。这样的优点是使一个 装载存储能够影响不止一个输出图像的域,其对每个域作用的大小是可以控制 的。例如参见图2,考虑到在RGB颜色空间内创建彩色图像的情形,并且还假 定脸色因子212不仅影响红色信道,从而使脸色变红,而且使同一块面积的绿色 略微增加而蓝色略微减少。在这种情况下,它可以表示为一个装载,但是带有红、 绿、蓝颜色信道的计分。这种机构可以通过使装载存储中的一个装载路经三条不 同的流水线信道实现,从而使后面不同的计分与各值相乘。
也可以在微笑与脸色之间包含类似的链接。假定当拍摄图2序列时光源放于 天花板。还假设人保持向前倾,对应微笑因子朝下。由于光入射角度的变化和对 应变暗的脸色因子的阴影,脸色将变暗。因此一个装载可以同时用于微笑和脸 色。
另一个比较好的实施例是将路由器463放置在纹理模块455之后而求和微笑 模块474与求和脸色模块476之前。这样的优点是使纹理能在微笑域与脸色域之 间切换。脸色域内纹理的例子已经给出。对于微笑域上的例子,假定已经拍摄下 了花。每片雪花都是可见的,并且移动得很慢,所以至少在短时间内可以跟随 每片雪花,但是它的路径是那样的复杂以致无法在给定的压缩比限制内用编码比 特流内表示每片雪花的路径。通过在运动域内采用纹理成份可以重建飞舞的雪花 的形象。
编码器可以压缩路由器建立。在解码器一侧,它们必须在路由器建立解码器 464内相应地解压缩。一种可能的方法是发送与前面建立的差异,并采用执行长 度和可变比特长度编码对差异进行编码。
可以确定的是并不是所有的因子都需要选路由的能力。例如,可以有这样一 个系统,对于颜色通道r,g,b至少有一个脸色因子。另一个例子是对于每个维度v 和h总是包含至少一个微笑因子,如图4所示,作为直接从相乘模块446到求和 微笑模块474的信号459,在延迟模块458内被适当延迟以处理路由器463的等 待时间。
在第二较佳实施例中,与第一实施例相反,图4表示了在环路v,h、模块472 与S域存储420之间的连接。这针对S域和相应的装载并执行长度编码的情况。 参考位置地址不再由环绕v和h从每帧开始时初始化为0的数值处开始寻找。而 且环路模块必须在每次执行开始时将坐标正确地初始化为图5b的v=532,h=534, 与图5c的551、552或者图5c的592、594相似。
发送的装载在数值和分辨率上必须定量化,并且相乘446和求和474、476、 478模块具有有限的精度。为了使定量化的可能性最大(它给出了较好的压缩), 并且使可能的精度最小(这只需简单的硬件即可实现相乘和加法模块),所有的 操作必须在合适的颜色空间内进行。上面提及的C.I.E均匀颜色空间(在《图像 处理基础》中定义)就各方面来说都是较好的颜色空间,但是它需要非线性变换。 其他的颜色空间,例如YUV,性能稍差但实现更为简单。
如果帧或域缓冲器497、498必须运行于RGB内并且在运动模块492与帧或 域缓冲器之间有双向通信,则放置在流水线上运动模块之后的颜色空间变换器必 须能够对运动模块492与帧或域缓冲器之间的路径都进行变换。为了避免这一 点,并且只用一路颜色空间变换器,一个较佳实施例是将颜色变换器紧接着流水 线上的运动模块放置。在图4中,这是以YUV2RGB模块487作为例子,它从 YUV颜色空间转换为RGB颜色空间。
图7示出了YUV2RGB模块700的内部工作情况。模块700接收由y710,u712 和v714组成的彩色信号作为输入。每个输出r740,g742和b744由输入的权重之 和构成。权重可以利用查寻表720(简写为LUT)得到。利用加法器730和734 可以求和,并且如果需要可以采用同步、延迟电路732。
在第一较佳实施例中,运动模块360采用非常简单的策略来确定当一个以上 像素结束于帧缓冲器或域缓冲器的某个位置时占优势的像素,即,首先--获得 或最后--获得。
为了根据自由地对holon排序,可以采用Z缓冲算法。上面提及的《交互计 算机图像原理》一书描述了如何采用名为“深度缓冲”来实现算法。在一个较佳 实施例中,可以通过向每个holon分配深度或Z值来实现。深度的方向可以任意 选择从而使距离观察者越近,则数值较大。Z存储741在每帧前更新。这样的组 织形式使得可以利用holon号作为指数来读出Z值。对于每个流水线时钟脉冲, 或者每次对执行长度编码S域进行执行时,将指数用作S域数值。由此找到的Z 域值送往运动模块492,在那里用来确定对应的像素是否可见。
编码器可以压缩Z值。在解码器一侧,它们必须在Z解码器468内相应地解 压缩。一种可能的方法是发送与前面建立的差异,并采用执行长度和可变比特长 度编码来对这种差异编码。
代之以对整个holon将Z值取为常数,可以对装载存储中每个像素的Z值单 独赋值。为此采用装载存储。利用相乘模块446,可以对域进行标度。由于这对 应于地址分量的变化即深度地址分量,所以这作为微笑的Z分量定义。
与微笑的垂直和水平分量相同,深度分量Z也包含不止一个因子。在这种情 况下求和微笑模块474必须利用三个加法器予以设计,每个维度一个。
对于多因子Z,可以使第一因子成为来自Z存储471中的逐个holon常数值。
由于不同运动在很大范围内可以表示,所以利用微笑因子的运动补偿是一个 非常有力的机制。但是由于微笑装载必须发送和存储,所以它也是非常昂贵的机 制。许多运动具有简单得多的特性,因此可以更为紧凑地描述。表示运动的一种 技术是采用仿射变换。在上面提及的《交互计算机图像原理》一书中可以找到对 两维和三维仿射变换的描述。
由于仿射变换可以用于建模刚性物体,所以在本专利中它可以称为点头变 换。相应的动词“点头”表示应用仿射变换。
一个较佳实施例是使点头变换在两维下进行。在这种情况下,每个点头坐标 等于经过3×3矩阵变换后的旧坐标的旧的v和h分量。
另一个较佳实施例是使点头变换在三维下进行。在这种情况下,还采用每个 像素的Z值。
点头机构可以与微笑机构结合起来。一个较佳实施例是形成进入运动模块492 的坐标作为微笑和点头之和。这可以通过按照图3形成微笑位移而同时从环路器 到线点头模块发送v,h坐标来实现。新的坐标等于微笑和点头贡献之和。
另一个较佳实施例是如图4所示使微笑坐标点头。这里,来自环路模块472 的v,h坐标和来自微笑因子的坐标被求和微笑模块474用来产生微笑坐标。最终 的坐标由点头模块486进一步点头。施加的点头矩阵逐个holon地给出并存储在 点头存储482中,并且对于每个流水线时钟脉冲,或者对于每次执行的开始,S 域值被用来使点头存储482指数化从而将所需的点头矩阵发送给点头模块。
图4还示出了三维点头的应用,其中不仅采用了坐标分量v和h,而且还采 用了深度分量Z。在图8中可以找到点头模块486更为详细的附图。点头模块800 将微笑坐标vSmi810,hSmi812和zSmi814视为输入,并且给出微笑和点头坐标 vNod840,hNod842和zNod844。
该表达式为: VNod HNod ZNod = Nvv Nvh Nvz Nvt Nhv Nhh Nhz Nht Nzv Nzh Nzz Nzt * VSmi HSmi ZSmi + Nvt Nht Nhz
vNod840通过在相乘模块830中将Nvv820与vSmi810相乘,在相乘模块832 中将Nv822与Smi812相乘和在相乘模块84中将NvZ824与zSmi814相乘并借助 Nvt826的合适延迟834对这三个中间结果在加法器836、838、840中求和。
可以使IDLE编码器产生可以按照不同帧分辨率解码的比特流,但是仍然采 用一组装载和计分。
这样的应用可以是产生为适合在欧洲使用的基于PAL的电视机所用的视频信 号,在美国使用的基于NTSC的电视机所用的视频信号以及个人计算机所用的视 频信号。
另一种用途是在解码时取景和缩放图像的选定部分。一个特殊的例子是当发 送或存储宽/高之比为16∶9的电影而必须在4∶3的屏幕上收看时。传统的做法不外 乎只用4∶3屏幕的中央部分(从而使屏幕的顶部和底部留下黑边)或者选取16∶9 图像的中央部分(这意味着边上的内容总是会被丢失)。一种更好的解决办法是 对16∶9图像中最感兴趣的内容进行跟踪,将该信息嵌入发生的比特流,随后选取 这部分显示在4∶3的屏幕上。
这可以利用点头来做到。一种方法是对每种解码格式在比特流内嵌入一组点 头矩阵,并且使解码器选择并使用合适的点头矩阵。另一种方法是按照规定的标 准来编码,随后使解码器在点头矩阵施加到RefEl之前对它们进行修改。这可以 通过将每个点头矩阵与包含的矩阵相乘来做到,参见《交互计算机图像原理》一 书。该方法的优点是只需修改点头矩阵。这是一个对每格holon每帧一次的操作, 如果控制处理器404以通用微处理器实现并能够有余暇完成这种转换,则该方法 除了在点头存储482与控制处理器之间需要通信路径以外无需其他硬件。
这也可以作为分离的步骤完成。在图4中,适应格式模块491被指示为作用 在来自点头模块486的坐标上。图10示出了该模块更为详细的示意图。RefEl 的v1010,h1012和z1014每个流水线时钟脉冲到达。垂直偏离vOffset1020在加法 器1030内与对应图像垂直平移的v坐标相加。垂直刻度vScale1022随后在相乘 模块1032中与对应图像缩放或尺度变换的先前操作的结果相乘。该结果给出了 当前RefEl最后的v坐标1050。对于水平分量,采用加法器1034和相乘器1036 处理水平偏离hOffset1024和水平刻度hScale1026,产生当前RefEl的最终h坐 标1052,从而完成了显示的操作。z分量1014必须相应地在延迟模块1038中延 迟,从而使它的输出1054的时序与其他分量一致。该方法的优点是在控制处理 器处理能力不足时能更为简单地实现。进一步的优点是所用系统可以不用图4的 点头模块486。可以看到,虽然没有实现所有自由度的仿射变换,但是适应格式 模块491实现了仿射变换。
由于微笑、点头和适应格式模块都只是运行在代替作为中间结果的产生图像 或像素的地址上,所以因重新取样引起的分辨率损失最小。
编码器可以压缩点头矩阵。在解码器一边,它们必须相应地在点头矩阵解码 器481中解压缩。一个可能的方法是计算单位矩阵的差异,予以定量化,随后采 用执行长度和可变比特长度编码对该差异进行编码。
用于3D点头的解码器可以向上兼容用于2D点头的解码器。这可以通过将零 插入点头矩阵因而忽略了Z值而完成。
在前面的段落中,假定当像素放置在已经计算的像素前面,新的像素完全覆 盖旧的像素。该假定可以放宽;另一种可能性是新的像素只是部分覆盖旧的像 素。在WO95/08240中,新像素对旧像素影响的程度称为Prob。其他的来源紧 凑称为“alpha钥匙”或“不透明”。Prob为1使得新像素的数值代替了旧像素, Prob为0使得旧像素占优,而中间的数值产生两个数值的混合。
Prob值可以存储在装载存储内。这组数值称为Prob装载。所以先前定义的操 作可以应用于Prob:对于每个holon它可以单独给出,它可以以低分辨率存储并 且随后在扩展模块430内扩展,它可以包含一个与计分存储442相关的计分,它 可以包含由纹理模块455施加的纹理,以及它可以由路由模块463绕道访问。它 还可以作为几个Prob因子的贡献被计算,其中需要求和Prob模块478。
采用Prob的一种方式是使holon在边缘混合。这有时被称为边缘反混淆。以 下的原理是,在两个物体的边界处,照相机一般无法将一个像素作为单单一个物 体的亮度样本捕捉和将邻近的像素作为单单其他物体的亮度样本捕捉。对于边界 上至少一个像素,可以产生混合。这可以采用Prob因子来模拟。由于S域被用来 表示holon的边界,所以它通常可以对物体的边界作出较好的估计。因此可以产 生表示S域过滤的holon的混合的Prob的较好估计。该结果随后用作一个最终 Prob因子。在图4中,这表示为S2Prob模块466,能够从S域转换到合成Prob 装载。
通过对S域滤波就这样做了。作为滤波器参数的滤波系数,称为S2Prob建立, 由编码器提供,存储在S2Prob建立存储465内。S2Prob建立可以以压缩的格式 发送;一种可能的方法是对于每帧只发送与前面帧的差异。因此S2Prob建立必 须在S2Prob建立解码器484内解压缩。
图11示出了运动模块492的基本任务:作为参考位置的本地坐标1110中图 像给出的holon按照微笑和点头参数运动到帧坐标系1130的最终帧位置1120。 参考位置中给出的RefEl 1140不必对应最终帧内任何特定的像素;如果放大,则 可能部分或全部覆盖许多像素,而如果是缩小,则有可能覆盖一个像素的一部 分。硬度模块的基本任务是从参考位置坐标系变换到帧坐标系从而使参考位置图 像的内容一样在最终的帧内表示出来。
图12a示出了在两条相继扫描线1210、1214和两列相继列1212、1216上 的四个相邻RefEl1220、1222、1224、1226的详细情况。根据微笑因子以及可 能的点头因子,已经计算出这些RefEl的运动矢量1230、1232、1234、1236。 运动矢量具有亚像素的精度。RefEl的亮度值从脸色因子的聚集贡献中获知。
图12b示出了在该实施例中所用的原理。示出的是由扫描线1260和列1262 组成的最终的帧坐标系。RefEl的运动位置1280、1282、1284、1286处的亮 度值是已知的,但是一般的运动位置通常并不精确地对应于最终帧内像素的位 置。但是,它们可以用来在那些由四边形1270定义的区域内的像素位置1290、 1292之间用已知的作为顶角的数值来插值。
图13示出了一个较佳实施例。这里,图12的四边形1270被分隔为两个三角 形1326、1328。可以按照固定的规则来分隔;一种方法是使第一三角形1326 由参考位置为四个相邻RefEl中的左上1320、右上1322和左下1324的RefEl构 成,而使第二三角形由参考位置为四个相邻RefEl中的右上1322、左下1324和 右下1327的RefEl构成。每个三角形可以分开计算。每条通过三角形1326的扫 描线1312、1314现在被分别处理。对于每条扫描线,根据扫描线1312的垂直 指数上的已知数值对1320、1324、1322、1324之间的线性插值,计算了扫描 线1312和三角形1326之间的两个交点1332、1334的水平坐标。根据通用的线 性插值,可以计算交点1332、1334的亮度值。对于每个介于两个亚像素精度的 水平坐标之间的像素,可以通过像素水平位置上的两个交点1332、1334之间的 线性插值找到亮度值。该亮度值是来自运动模块的输出。
图14示出了运动模块1400基于该原理的实现。为简化起见,来自前面的流 水线步骤的输入r,g,b,Prob,v,h,z和S值表示为数值束1410。数值以参考位置扫描 的次序准备,所以为了在每个运动模块时钟脉冲处获得图12和13指示的4个相 邻像素,输入的数值1410延迟1412、1414、1416。
对于图5a所示S域的简单布局,延迟对应于参考位置扫描线的长度。对于图 5b,5c,5d和5e指示的S域执行长度编码表示,必须考虑执行长度。
触发脉冲1418被用来控制开关1420从而产生由左上、右上和左下RefEl组 成的第一三角形,以及由右上、左下和右下RefEl组成的三角形。
比较器1430被用来检查三角形的三个RefEl的S域值。如果这些数值不相同, 这意味着RefEl不再属于同一holon。在这种情况下,像素之间不发生插值,并 且设定信号1432指示对于当前的三角形不必再作处理并进入下一数值。
为了简化后面的处理,按照它们在排序模块1440中垂直位置存储三个 RefEl。这产生了上RefEl1442、中RefEl1444和下RefEl1446。在简并情况下, 两个以上的RefEl具有相同的垂直位置,它们之间不必排序。
通过使上RefEl的垂直坐标向天花板模块1460中较大数值靠拢,产生vUp, 以及使低RefEl的垂直坐标向地板模块1462中较小数值靠拢,产生vLow,获得 了穿过三角形的所有以扫描线的范围。由于运动域可以使得产生帧外的数值,所 以vUp和vLow必须修剪1463。如果vUp为负则修剪模块1463以零代替vUp 而如果vLow大于nv-1则用该值代替。
循环v模块1464现在可以通过帧扫描线从vUp到vLow循环。
图15示出了循环模块。它将从第一数值v0 1510向第二数值v1 1520循环, 在启动脉冲1530处开始。数值在每个运动时钟脉冲来到时在增量器1560中增 加。数值将被反馈1570。这将持续到满足最终的测试1580。随后输出完成的信 号1590。
回到图14,现在已知的是当前的扫描线穿过上下RefEl之间的三角形端,所 以可以由插值模块interp1474在该交点处对h,z,r,g,b和Prob插值。通过检查相对 比较器1466中存入的h值的中RefEl的v坐标,可以发现余下的三角形交点是否 在余下的三角形上下两边上。开关1470采用比较器的输出来提取上下RefEl的数 值,它随后由另一个intrp1472将其与中RefEl的数值一起使用以进行插值。
图16a示出了用于插值模块1474的数值原理。在该实例中,几个应变量r,g,b 依赖于独立变量v而变化。根据独立变量的中间值vi,对于每个独立变量将找到 插值。这由独立变量v的坐标系1610和每个应变量r,g,b的坐标系1620、1630、 1640表示。中间的独立值vi被用于应变量值ri,gi,bi。
图16b给出了硬件。插值模块1650将端点v0和v1的独立变量以及中间值vi 视为输入。利用两个减法器1660、1662以及一个除法器1664实现的表达式权 重=(vi-v0)/(v1-v0)给出了每个应变量的第二端点的权重。对于每个应变量,例如 r,该权重被用于由减法器1672、乘法器1672和加法器1674实现的表达式 ri=(r1-r0)*权重+r0以形成插值。
回过来参见图14,对于随后的处理,知道中间的RefEl偏向上RefEl和下RefEl 之间的三角形边的右边还是左边是有用的。这通过在interp1450中将h数值插入 基于中间RefEl的v值的上RefEl和下RefEl之间的直线上,并将h值与RefEl 的实际h值比较来进行寻找。如果插值h大于由比较器1452确定的中间RefEl 的h值,则中间值移向上RefEl和下RefEl之间直线的右侧,并且在这种情况下 三角形两个交点之间的数值在交换模块1476中交换从而使得h值后面的循环可 以以已知的次序发生,这里选择的是增加数值,对应于从左向右产生像素。
现在可以产生沿着扫描线的像素。首先由循环模块1480、1482将最左边的h 值向右边移动一个像素位置而最右边的h值向左边移动一个像素位置。这些数值 随后在修剪模块1483中根据帧的尺寸进行修剪,小于0的h值被0代替而大于最 右边像素的指数的右边的h值被指数代替。
循环h模块1484现在可以在这些h值上循环。根据这些h值,r,g,b,z,Prob 的数值可以在插值模块1486内插值。
来自v和h循环器1464、1484的v和h数值现在可以在VH2Adr模块1490 中用来计算当前像素的帧地址。对于两者的帧缓冲器扫描线长度,通过比特串联 可以做到这一点;否则可以采用诸如v*nh+v的表达式。
随后放置模块1492利用产生的地址1495更新r,g,b值1497,将像素值放入 图像中。
图17示出了标号为1700的放置模块1492更为详细的示意图。新像素的地址 1710、Z1720、Prob1730、r1740、g1750和g1760的数值作为输入给出。所 需的动作是查寻在该地址上任何前面像素的Z值,并且如果前面没有像素或者如 果该像素位于最前面,则像素只是按照Prob值进行更新。
模块的功能如下:地址1710用来从Z缓冲器496内读取数值,并且返回旧的 Z值zOld1722。zOld与新的Z值zNew1720进行比较,并且如果zNew大于zOld, 则写脉冲1726送往Z缓冲器和帧缓冲器。zNew1728被写入Z缓冲器。
新的亮度值被写入,例如通过在将红色1749的最终混合值写回之前,首先在 减法模块1742中计算旧的红色数值rOld1741与新的红色数值rNew1740红色分 量的差值,在乘法器1743中将该差值与Prob值1730相乘以寻找所需的变换量, 以及在加法器1745中将这种变化加入rOld,在延迟模块1744中适当地延迟以在 减法模块1742和乘法器1743中处理等待时间,从而寻找到红色分量的数值。
在上面,所有的域都首先在扫描线与三角形之间的每个交点处插值并且在随 后沿该扫描线的每个像素位置上进行。另一个较佳实施例是将帧内的像素位置映 射回参考位置,并且随后根据参考位置的数值和距离进行插值。图13b示出了该 原理。该实例与图13a相同。图13a中的移动RefEl1320、1322、1324之间的 运动三角形1326与图13b中运动前同一RefEl1370、1372、1374之间的参考位 置三角形对应。三角形1326与扫描线1312之间最左边的交点1332可以映射至 对应的点1380,而最右边的交点1334同样可以映射至对应的点1382。根据这 些点,像素1330可以映射回对应的点1390。一旦已知该点1390的坐标,它们 可以用来对每个所需的域,例如r,g,b,Z,Prob进行插值,并且这些插值将从运动模 块作为所需像素1330的数值输出。
对于这种硬件的实现,参见图19,它示出了运动模块1900的结构。
控制处理器1905控制着电路的时序和坐标。它与各个模块的连接没有示出。
RefEl的输入值v,h,z,s,r,g,b,Prob作为总线1910示出。利用时间延迟,RefEl 缓冲器1912产生了对应四边形的4个RefEl1920,1921,1922,1923。
对于每个RefEl提供了vFract和hFract1926的数值。
切换1930控制着开关1932从而产生左上和右下三角形。
三角形中RefEl的S域值由比较器1940检查,如果数值是不相同的,即如果 它们不属于一个holon,则发送下一个信号以指示处理下一个三角形。
在排序模块1934中利用它们的v值对RefEl进行排序。在排序结束后,就知 道了哪一个是上1937,中1938和低1939RefEl,从而使得它们的次序不会与最 终帧的扫描次序冲突。
上RefEl的v坐标在天花板模块1950中向下一扫描线循环,并且下RefEl的 v坐标在地板模块1952中向前一扫描线循环。这些数值都根据帧的实际大小在两 个修剪模块1951、1953中修剪。循环模块1954从两个数值的第一个向第二个 循环,产生当前的v值。
比较器1960检查当前的v值是否大于中点的v值。检查结果结构用来控制选 择上或下RefEl的开关1962,从而使interp模块1964可以将上或下RefEl与中 间的RefEl连用,进而在上或下短三角形的顶点操作以对h插值,对当前的v值 插入vFract和hFract。
interp模块1966同样也对长三角形顶点的当前v值插入h,vFract,hFract。
两个数值在排序模块中以h的次序排序,从而使得两个像素在最终的帧内以 扫描次序出现。
天花板模块1972使最左边RefEl的h值进入下一像素的位置,而地板模块 1974使最右边RefEl的h值下降到前一像素的位置。最终的数值都根据帧的实际 大小在两个修剪模块1973、1975中修剪。循环模块1976从两个h数值的最左边 向最右边循环,产生当前的h值。
根据当前的h值,在插值模块1978中对vFract,hFract的值进行插值。现在 vFract,hFract说明了对应最终帧的像素位置的参考位置坐标系内亚像素精度的位 置。完成双向线性插值1980的模块利用该亚像素精度位置来对RefEl相应值之间 的r,g,b,z,Prob的数值进行插值,在延迟模块1981中它们经过适当的延迟以更新 在计算亚像素精度位置时的等待时间。当前的v,h数值在VH2Adr模块1982中被 转换为地址,该地址被放置模块1984用来将r,g,b放入帧缓冲器。放置模块读出 旧的r,g,b,Z值1990,并根据新的插入像素的Z和Prob的数值,更新r,g,b和Z 的数值。
可以采用高速缓冲存储器1986来提高性能。
图18a示出了双向线性插值的数值基础。在其他地方它通常称为双线性插 值。在这种情况下,只示出了一个应变量的插值,但是对于几个应变量的情况原 理是一样的。所需值的位置vFract1822,hFract1820对于4个已知的数值r11 1810,r12 1812,r21 1814,r22 1816之间的亚像素精度来说是已知的。随后通过线性 插入根据两个上已知值1810、1812确定的中间值1830和根据两个下已知值 1814、1816确定的中间值1832并再次在它们之间插值找到所需的数值。
对于硬件实现,参见图18b。4个已知的数值r11 1860,r12 1861,r21 1862和 r22 1863作为输入与vFract 1866和hFract 1865限定的所需值的位置一起给出。 上中间值1885、1830由表达式(r12-r11)*hFract+r11计算,通过减法器1870、乘 法器1872、补偿减法器1870和乘法器1872中等待时间的延迟模块1875以及加 法器1877实现。下中间值1886、1832由表达式(r22-r21)*hFract+r21计算,通过 减法器1871、乘法器1873、延迟模块1876以及加法器1878实现。最终的数值 1890再次通过减法器1879、乘法器1881、延迟模块1883以及加法器1882实现, 在延迟模块1880中被延迟的vFract1865上操作以处理在计算上、下中间值时的 等待时间。
在前面,采用三角形来进行坐标映射和插值。在另一个较佳实施例中,采用 了直接基于4个RefEl的四边形。参见图20a。四边形2026由按照其运动矢量运 动的4个RefEl2020、2022、2024、2026构成。对于穿过四边形的每条扫描线 2012、2014,在扫描线和四边形之间找到了交点2032、2034、2036、2038。 这些既可以用于四边形和扫描线交点处所有域的逐渐插值或对每条扫描线上四 边形内部所有像素2030、2031之间再次插值,这与图14所示的相似,也可以 用来计算用于双向线性插值的vFract,hFract数值,这与图19相似。后者示于图 20b。穿过图20四边形2026的扫描线2012,2014通过计算每条扫描线的表示为 vFract的左四边形交点2080,2084和表示为vFract的右四边形交点2082、2084, 被映射回参考位置,并根据左右交点,可以计算最终像素位置2090、2092的 vFract和hFract数值。这可以作为双工线性插值的基础。
附录A给出了该方法的伪编码算法。
在一个较佳实施例中,运动模块492具有内建反混淆滤波器以避免图像重复 取样混淆的问题。
在另一个较佳实施例中,编码器提供了预先滤波的脸色因子。如果序列期间 发生了holon的放大或缩小,则编码器提供了最低分辨率的预滤波脸色因子和另 一个对应必要的滤波脸色结构的差异和已经发送的脸色,从而使新的脸色因子可 以用来模拟滤波。
图21示出了理想低通滤波器的操作。参考位置中的图像以不同分辨率再现出 来,从而产生帧。给出图像区域内垂直长度的图像特征,该图像区域的垂直放大 因子定义为运动图像内同一特征的相应长度与原始垂直长度之间的比率。相同的 定义用于水平放大。不同分辨率的再现随后对应于放大因子的不同数值。当参考 图像经过放大从而使分辨率是参考图像固有分辨率的两倍时,再现的图像具有参 考图像的全部细节,对应最大频率容量。对于较小的放大因子,参考图像必须在 Nyquist频率以下滤波。因此对于参考图像通常有最大的频率容量和最小的频率 容量,对于中间的放大因子有理想的截止频率2106。
从压缩率考虑,通常比较好的是不必发送参考图像的多种形式。这通常意味 着在解码器内无需进行反混淆滤波。但是有图21b所示的近似。代替最小2154 与最大2152频率容量之间的可变理想截止频率,图像可以分为低通和高通部分, 并且可以根据放大因子改变所用高通2156的数量。
图22示出了数据流示意图。向反混淆处理器2200输入参考位置2214中的微 笑计分2210、微笑装载2212和图像。对于该实例,只采用了一个因子的微笑和 脸色,但是同样的原理可以用于多因子微笑和点头输入。
零微笑计分对应于无运动,而较大的正或负微笑计分对应偏离参考位置较大 的运动。后者通常会遇到反混淆的问题。因此寻找最大绝对值2220的模块在微 笑计分之间搜寻,并且该计分用来形成偏离相乘单元2222内微笑装载的假定的 最糟糕情况。该微笑域输入对于图像的每个区域沿着垂直和水平方向寻找放大因 子2224的模块。这些区域可以是像素非交叠块或者交叠块。放大因子被输入将 放大因子变换为在参考位置图像上工作的低通滤波器2230的滤波器系数的模块 2226。变换使得低通滤波器中较小的放大结果具有较小的截止频率。最终的低通 图像作为第一脸色因子的脸色装载2266输出到解码器2250内。相应的计分2264 由合适的模块2232锁定。低通图像与原始参考位置图像之间的差异形成于减法 器模块2234中并作为第二脸色装载2270输出至解码器。在模块2240中计算了 高通容量所需的数量。该计算使得解决最坏情况的计分导致数值接近于零,并且 较小的计分导致数值接近于1。该结果作为用于第二脸色因子的脸色计分2268 输入解码器。原始的微笑计分2210和微笑装载2212以不变形式2260,2262输 入解码器。
解码器与前面讨论的解码器相似,其中在相乘模块2280、2282中将脸色因 子乘以脸色装载,在加法器2284内累计结果,并按照乘积将该图像放入运动模 块2288内,在相乘模块2286内计算微笑计分和微笑装载,从而在帧位置2290 内产生最终的图像。
运动模块492与帧或域缓冲器497、498之间像素的传送可能会成为瓶颈。 例如对于720*576采样的25帧/秒的PAL,它对应于10000000像素/秒以上。由 于当帧与执行之间切换时时间的损失,运动模块并不能总是产生一个像素输出/ 时钟脉冲,并且数值可以传送到帧或域缓冲器内一个位置上,所以运动模块的峰 值速度可以达到30000000像素/秒。由于对于每个像素,Z域值必须读取和设定, 所以R,G,B,Z每秒必须完成60000000存储器的访问,如果R,G,B和Z的每 个数值必须一次传送,它对应16钠秒/次的访问。在这样的速度下,对于整个帧 或域缓冲器都必须采用成本高的模块,或者可以在运动模块492与帧或域缓冲器 497、498之间引入高速缓冲存储器494。
运动模块492输出的像素按照系统S域定义的次序产生。这意味着输出满足 高速缓冲存储器的重要条件即空间局部性:如果像素结束于帧或域缓冲器的某个 位置,则可以使下一个像素输出结束于临近的位置。
怎样设计高速缓冲存储器的细节参见《计算机结构,一种定量方法》, J.Hennessy&D.Patterson,1990。
建立装载存储414…416的一般方法是发送压缩形式和在静止图像解码器410 内解压缩。另一种方法是采用IDLE建模方法创建装载。这可以通过包括反馈传 输线415实现,通过合适的开关495,412可以使解码器的输出直接输出至装载 计分414…416。这称为元解码。
元解码的一个应用是当解码器经常或唯一地用于已知类型的序列。一个例子 是视频电话解码器,这里极有可能出现人脸。在这样的情况下,可能已经建立了 标准的装载并存储在解码器一侧。这些标准装载可以表示极有可能出现的运动或 亮度,例如对应讲话的,用微笑装载表示的嘴巴的运动。标准装载403首先必须 读入解码器并且随后必须更新从而使得它们与输入图像的参考位置坐标系统匹 配。这种更新可以用来从解码器一侧的外部存储介质将标准的微笑装载调入由编 码器制备的装载存储和点头矩阵,将标准的装载移入参考位置并将结果送回装载 计分。
在WO95/08284中示出了如何应用元建模特征的例子。
运动器的输出以复数地址次序输出。当最终的图像传送到最终的输出介质 时,在大多数情况中它必须以扫描次序出现。这意味着在运动和输出装置之间必 须有缓冲器。
为了有效地利用时间,可以使用双缓冲器。在这种情况下,一个缓冲器由解 码器写入而由视频电路从另一个缓冲器读出。每次缓冲器被填充而另一个不再需 要查看,两个缓冲器的作用象开关。
另一个较佳实施例是不使图像空,而新图像最终覆盖所有旧的图像。如果不 是,则保持前面帧的一部分通常是较好的误差隐藏技术。
在上述两种情况下,Z缓冲器必须复位到远离每帧之间。
上面的双缓冲可以与交错相结合。对于奇数域,循环旋回模块1464、1954 只是在奇数上循环,而对于偶数域,循环v模块1464、1954只在偶数上循环。
帧或域缓冲器497、498一般可能在编码器的命令下在每帧或域之间复位为 空。但是在一些情况下,复位不再需要。理由是严重的发送错误已经检测到,并 且代替产生新的帧或域的净误差,保持当前的域或帧。同样的理由是当场景移动 后解码器内模型没有完全更新。另一个理由是解码器忙于元解码。跳过复位的决 定可以由解码器或编码器作出。
在按照IDLE原理解码帧后,可能会产生因IDLE模型无法重建整个帧引起的 重建错误。在最后的结构被查看之前每帧剩余的部分可能被发送和加入。通过采 用传统的图像压缩技术,剩余的压缩增益由于大多数的结构已经被IDLE模型表 示而有所提高。
这示于图23中。输入的压缩比特流2310包含了压缩的IDLE模型2324和帧 剩余2322。demux2320将其一分为二,从而使得IDLE模型2330按照上述解码 方法解码为每帧的r,g,b数值,并且采用传统的图像压缩/解压缩技术在编码器 2350中将剩余解压缩为r,g,b数值。两者在加法器2360中相加并且输出2390作 为最终的结果以备查看或作用。
在前面,已经解释了压缩的比特流。为了换一种观点,这里是以符号和简化 结构表示的压缩的比特流的简单结构:
(1)时间编码1-23-45-06-奇数
(2)初始化为空的模型
(3)将一个holon与等于整个帧的格式相加
(4)将第一holon的一个脸色因子R,G,B相加[压缩的装载R,G,B]
(5)设定计分[压缩的计分]
(6)解码
(7)时间编码1-23-45-06-偶数
(8)解码
(9)时间编码1-23-45-06-奇数
(10)加入一个holon[压缩的S域]
(11)设定第二holon的点头因子[压缩的点头矩阵]
(12)将第一holon的一个脸色因子R相加[压缩的装载,R]
(13)将第二holon的一个脸色因子R,G,B相加[压缩的装载,R,G,B]
(14)将第一holon的一个微笑因子V相加[压缩的V装载]
(15)解码
每行的注释:
(1)以下的数据定义了帧的奇数域从序列的开始起为1小时23分45秒。这样 的时间代码用于快速搜寻和其他用途。
(2)包括所有装载存储、S域存储和计分存储的模型设定为空
(3)当相加holon时,应给出它们的S域。在这种情况下,holon的S域与帧 的尺寸一致,并且这已经给出了特殊的编码。相应的S域在S域存储中建立。
(4)定义了第一脸色因子。控制处理器对3个装载存储作了分配,一个对应一 个颜色通道。装载被解压缩并装入分配的装载存储中。地址与S域存储同步。控 制处理器设定路由器建立存储从而使得3个装载存储的输出进入求和脸色模块。
(5)在只有holonl的脸色的情况下,存储被解压缩和装入计分存储中。
(6)采用当前的装载存储、计分存储、S域计分和路由器建立存储对奇数域解 码。
(7)以下的数据定义了相应的偶数域。
(8)偶数域被解码。
(9)以下的数据定义了下一帧的奇数域。
(10)相加holon。在这种情况下,给出了明显的S域。它被解码并存储在S域 存储内。
(11)第一个没有明显的点头,即只有按缺席规划指定的单位矩阵。第二个holon 包含明显的点头矩阵,它被解压缩并存储在点头存储内。
(12)加入红色分量的第二脸色因子。分配一个装载存储,装载被解压缩和被 装载,更新路径。
(13)给出第二holon的脸色并由普通的程序处理。
(14)引入垂直微笑因子;由普通程序处理装载。
(15)域被解码。
数据流包含小的命令部分,指示应该初始化什么类型的动作,还有大的数据 部分,包含了装载等的压缩表示。对于本发明基于存储的应用,它的优点是一分 为二,但是有横向的参考,从而使得小分命令部分可以快速扫描和分析,例如搜 寻模式,而数据部分根据需要读取。
对于从存储介质(例如录像带或光盘)操作的视频回放系统和接收来自发布 中心的压缩比特流的视频点播系统来说,极其需要可变的回放速度。可变的回放 速度包括普通回放、反向回放、快速前进、慢速前进、慢速后退以及静止的图像。
慢速前进可以由普通帧的重复实现。例如半速,每帧放两次。
另一种实现慢速前进的方法是计分的插值。参见图25,示出了视频回放设备 2500。用户在速度选择输入设备2510中选择回放的速度。这可以是远程控制的 一个功能。存储设备2520包含压缩的比特流。该流读取为两部分:即读入控制 处理器2530的计分和读入解码器2540的装载。对于普通回放,计分直接放入解 码器2540部分的计分存储内。对于慢速前进回放,在放入计分存储之前插值计 分。例如对于半速,输入解码器2540的每个第二组计分可以是从存储设备2520 读出的计分,而余下的部分可以是在控制处理器2530中插值的值。对于慢速前 进插值的计分插值的优点是产生了平滑没有断续的运动。缺点是建模的表示不再 与物理现实很好地对应,可能会发生预期不到的结果。例如当运动还未在编码器 识别但采用脸色因子建模时,慢速回放由渐明渐暗的物体代替了运动。
还可以实现的是反向播放。与普通前放的主要差异是代替压缩比特流中一系 列的指令,以给定次序读取装载和S域,在回放期间解码器必须分析压缩的比特 流,特别是命令部分,从而确定任意时刻激活哪些holon和哪些因子,进而可以 装载正确的装载和S域。
可以将慢速前向播放与后向播放的原理结合起来实现慢速的后向播放。
对于快速前进,通常出现的问题是无法找到一组较好的计分。计算瓶颈通常 是压缩的比特流的读取与相应的静止图像解码和装载存储的更新。为了补偿这一 点,装载可以指定优先权,当没有时间输入所有装载时,只读取最重要的。一个 特殊的例子就是当对每个场景移动只允许有一个脸色装载时。在这种情况下,快 速前进将对每一场景产生一静止的图像,它可以认为比录像机等的正常快速运动 更好看。
可以将快速前向播放与后向播放的远离结合起来实现快速的后向播放。
静止图像可以在几种方式下进行,例如停止压缩比特流的输入。
解码器还可以用于模拟、游戏或其他应用,在那里需要图像按用户的输入而 变化。参见图24,它示出了游戏控制器2400。接受用户输入的模块2410例如 可以是游戏杆,但是也可以是其他输入装置,例如小键盘、大键盘、游戏板等。 游戏存储在存储介质中,例如CD-ROM2420。游戏由如何解释用户输入的规则 和如何作用于图像的规则以及装载如何定义实际图像和可能的图像变化的规则 组成。控制处理器2430完成这样的解释,从而产生计分。装载和计分输入解码 器2440,产生可以在显示器或监视器上(例如在电视机2450上)观看的帧。
对于模拟和游戏设计,在产生规则以控制运动中有许多工作。许多工作是控 制点头。为了简化该工作,点头机制可以下述方式表示运动,它允许更为容易的 物理解释。例如当沿轴转动物体时,除了简并情形以外,需要改变相应holon点 头矩阵的大多数系数,如果轴定义一次,则最好,只有旋转的角度可以对每帧定 义。
做到这一点的一种方法是使点头矩阵参数化和连锁化。在《交互计算机图形》 中对此作了描述。参数化随后与使参数控制平移度、尺度剪切或旋转对应,而连 锁化对应于围绕任何轴与关的平移、尺度、剪切和旋转,并使得上述几种效应结 合。
进一步的扩展是用坐标确定几个holon的行为。假设人体建模为躯干、腿和 头的几个单独的holon并使他行走。让一个参数控制整个人体的速度或位置是有 利的,而其他参数控制人体各部分相对运动。
通过点头矩阵的树状结构可以实现上面的情况。这可以采用4张表建模。第 一张表列出了可用的输入。典型的输入可以是游戏杆或键盘的输入,一个用时钟 或计数器指示时间的值,或者由其他游戏动作产生的状态指示器。第二张表列出 了所用的参数化点头矩阵并指示如何应用参数。第三张表给出了三重点头矩阵 数,定义了矩阵乘法。每个三重数的第三个数定义了放置矩阵乘法结构的地方, 而前两个数指示了将哪两个矩阵相乘,并且可以是第二张表或者第三张表自己定 义的矩阵。第四张表给出了每个holon的点头矩阵号码。它可以视为参数点头矩 阵的程序。该程序可以由采用更新输入的解码器执行。上述计算典型地涉及足够 小的计算装载,可以在解码每帧之前在Intel386SX之类的通用微处理器中实现。
微笑和计分可以根据上述帧内的输入定义。
附录A
按照运动域移动图像的方法
方法:
利用扫描线相交三角形的渐进插值
输入:
参考位置图像,由nv*nh RefEls组成,每个包含:
r,g,b:红色、绿色和蓝色亮度
v,h:新的位置
z:深度值
Prob:透明
输出:
带像素的帧缓冲器,每个包含:
r,g,b:插入的红色、绿色和蓝色亮度
算法:
对于参考图像中相邻的四像素组:
对于两个三像素组中的每一个:
按照升序的运动v坐标排序像素。用后缀Up,Middle,Low表示排序的像素。
寻找第二点是否在第一和第三点的左边或右边:
根据第一和第三像素的v和h坐标,并且给定的第二像素的v坐标,计算第 一和第三像素的顶点之间连线和穿越第二像素的水平线之间的交叉点的h坐标。
hCross=hUp+(vMiddle-vUp)/(vLow-vMiddle)*(hLow-hUp)
SecondLeft=(hCross<hMiddle)
通过帧位置的扫描线制备循环:
vUp=ceil(vUp)
vLow=floor(vLow)
在vCurrent处对于每个从vUp到vLow的vCurrent:(即对于每条扫描线)
在第一和第三像素之间插入h,r,g,b,Prob,用后缀LeftScan表示结果
确保计算当前扫描线的极限所用的是正确的顶点:
如果vCurrent<=vMiddle
EndPixel=第一个像素
否则
Endpixel=第三个像素
在第二和Endpixel像素之间插入h,r,g,b,Prob,用后缀RightScan表示结果
如果SecondLeft:
交换LeftScan和RightScan
对于从ceil(hLeftScan)到floor(hRightScan)的每个hCurrent
根据RigtScan和LeftScan处h,r,g,b,z,Prob在hCurrent插入r,g,b,z,Prob,用 后缀Current表示结果
读取vCurrent,hCurrent处的r,g,b,z,用后缀Old表示结果
如果zCurrent>zOld:
rNew=rOld+(rCurrent-rOld)*ProbCurrent
gNew=gOld+(gCurrent-gOld)*ProbCurrent
bNew=bOld+(bCurrent-bOld)*ProbCurrent
将rNew,gNew,bNew放回vCurrent,hCurrent处的图像
附录B
按照运动域移动图像的方法
方法:
具有双向线性插值的背向映射四边形
输入:
参考位置图像,由nv*nh RefEls组成,每个包含:
r,g,b:红色、绿色和蓝色亮度
v,h:新的位置
z:深度值
Prob:透明
输出:
带像素的帧缓冲器,每个包含:
r,g,b:插入的红色、绿色和蓝色亮度
所用的子程序:
NextClockwise:
以顺时钟次序(2070,2072,2076,2074,2070)寻找四边形的下一个RefEl
NextAntiClockwise:
以逆时钟次序(2070,2074,2076,2072,2070)寻找四边形的下一个RefEl
算法:
初始化Z缓冲器为零
对于[r,g,b]中每个域d:
初始化帧缓冲器为零
对于参考位置图像中的四个靠近RefEls的每个四边形:
Augment左上RefEl,vFract=0,hFract=0
Augment右上RefEl,vFract=0,hFract=1
Augment左下RefEl,vFract=1,hFract=0
Augment右下RefEl,vFract=1,hFract=l
寻找最小的v坐标的作为的RefEl Upper
寻找最大的v坐标的作为的RefEl Lower
将边缘初始化为带扫描线的交点的候选者
UpperClockwise=Upper
LowerClockWise=NextClockWise(UpperClockwise)
UpperAntiClockwise=Upper
LowerAntiClockwise=Lower
对扫过四边形的所有扫描线扫描
对于vScan=ceil(Upper.v)到floor(Lower.v):
确保正确的边缘用于交点插值:
当LowerClockwise.v<vScan
UpperClockwise=LowerClockwise
LowerClockwise=NextClockwise(LowerClockwise)
当LowerAntiClockwise.v<vScan
UpperAntiClockwise=LowerAntiClockwise
LowerAntiClockwise=NextAntiClockwise(LowerAntiClockwise)
沿两条边插值h,vFract和hFract,一组值用于AntiClockwise边缘而另一组用 于Clockwise边缘;
对于在[h,vFract,hFract]中的每个域:
AntiClockwise.d=UpperAntiClockwise.d+
(LowerAntiClockwise.d-UpperAntiClockwise.d)*
(vScan-UpperAntiClockwise.v)/(LowerAntiClockwise.v-UpperAntiClockwise.v)
ClockWise.d=UpperClockwise.d+(LowerClockwise.d-UpperClockwise.d)*
(vScan-UpperClockwise.v)/(LowerClockwise.v-UpperClockwise.v)
确保像素从左到右扫描
如果(AntiClockwise.h<=ClockWise
Left=AntiClockWise.h)
Right=ClockWise
否则
Left=ClockWise
Right=AntiClockwise
来回移动扫描线上整个像素的位置:
对于hScan=ceil(Left.h)到floor(Right.h)
在边缘值之间插入参考位置坐标vFract,hFract:
vFract=Left.vFract+
(hScan-Left.h)*(Right.vFract-Left.vFract)/(Right.h-Left.h)
hFract=Left.hFract+
(hScan-Left.h)*(Right.hFract-Left.hFract)/(Right.h-Left.h)
采用vFract,hFract作为权重完成当前四边形中4个RefEl之间的双线性插值:
对于[r,g,b,Prob,z]中每个域d:
Up=Upleft.d+(UpRight-UpLeft)*hFract
Lo=LoLeft.d+(LoRight-LoLeft)*hFract
New.d=Up+(Up-Lo)*vFract
放置数值:
如果New.Z>Z[vScan,Scan]
对于[r,g,b]中每个域d:
FrameBuffer.d[vScan,hScan]=FrameBuffer.d[vScan,hScan]+
New.Prob*(New.d-d[vScan,hScan])
ZBuffer[vScan,hScan]=New.Z
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈