使用线光值和其它图像处理改进的图像处理的制作方法

文档序号:7947846阅读:309来源:国知局
专利名称:使用线光值和其它图像处理改进的图像处理的制作方法
技术领域
本发明涉及用于处理图像信息的策略,尤其涉及用于使用视频处理流水线来处理视频图像信息的策略。
背景技术
视频处理技术中的示例性问题通过跟踪视频处理技术多年来的进展可最好地理解当今使用的视频处理技术。在进展的各个阶段添加了各种特征以解决当时行业所面临的问题。为了维持兼容性和一致性,后来的技术可保留这些特征中的某一些,即使这些特征被设计来解决的问题自此已经消失。结果,当前的技术可被视为反映了在不同时期行业所面临的一连串之前的问题这一基于历史的特征的凝结,,并在标准工作组、改变基于技术的约束和机会等之中折衷。
视频处理技术的上述本质的一个结果是,本领域中的技术人员开发了关于视频处理技术的某些方面的确立的思维倾向。存在关于如何解释某些视频信息的固定的观念以及关于如何“正确”处理这样的视频信息的固定的观念。如本发明的发明人所理解的,这些不变的观念中的众多不是良好创立的,需要被重新考虑。
固定观念之中主要的是视频信息应一般以它被从广播源、存储介质(例如,DVD盘)或其它源中的任何一种接收的格式处理。然而,众多视频标准在设计时没有预期到将在显示之前处理视频信息。例如,常规的电视不适应复杂的处理功能;这些设备仅接收和显示视频信息。因而,视频信息被接收的格式可能不能容易地适应对这样的信息的有效处理。
结果,将标准处理算法直接应用于视频信息的众多所接受的形式产生各种伪影(artifact)。本领域的技术人员在某些情况中注意到了这些伪影。然而,这些从业者不是对采用的技术的基本前提质疑,而是通常借助于本地补丁来补救问题。这些解决方案可在某些应用专用的情形中掩饰问题,但不能一般性地解决问题。
例如,视频信息通常由视频处理流水线以非线性、隔行、色度二次取样并以亮度相关的色空间的某种变型表示的形式接收(例如,Y′U′V′信息)。(术语“非线性”指的是,在传入的信号与从该信号产生的所得的输出亮度之间存在非线性关系;前述语句中的其它术语将在以下完全说明。)从业者可尝试对该信息应用各种线性型处理算法以便以指定的方式修改它,诸如通过调整视频信息的大小、将视频信息与其它信息组合(例如,合成)等。如本发明的发明人所理解的,当处理这种本质的非线性视频信息时,这些算法中的许多不提供最优甚至正确的结果。仅以隔行的色度二次取样4:2:2或4:2:0信息(将在以下定义)工作复合了这些不良结果。例如,以4:2:2或4:2:0处理信息可导致误差通过视频处理流水线的不同阶段传播。
所处理的结果中的缺陷显现为各种伪影,对肉眼而言,它们可能是明显或是不明显的。本领域的技术人员同样也注意到了这些不良结果,但没有识别原因。在某些情况中,这可能是由于从业者不能完全理解众多视频编码标准的复杂本质。在其它情况中,从业者可能没有意识到他们正使用线性算法来处理非线性信息;的确,在某些情况中,从业者可能不正确地相信他们正在处理线性信息。而且,视频处理技术的一般焦点被瞄准于图像信息的产生,而不必是这一信息的中间处理和校正。
将线性型算法应用于非线性信息仅是视频处理技术中上述确立的思维倾向的一个示例。如将在以下描述的,不产生最优结果的众多其它技术变得固定,诸如在抖动的情况中。例如,从业者可尝试通过向输入的图像信息添加少量随机噪声然后量化所得的含噪声图像来补救由某些抖动量化算法引起的伪影。这些技术通过然后计算含噪声图像和经量化的结果之差来估计量化误差。这可能具有治疗抖动伪影的效果,但以使输出图像与添加到原始图像信息的随机噪声量成正比地增加噪声为代价。
存在视频处理技术中由于习惯和熟悉而继续应用不变想法但没有认识到它们重要但微小的缺点的众多其它情况。此处所述的改进的一般主题涉及对这些固定想法的重新考虑,以及对替换解决方案的设计。
视频处理领域含有大量术语。因此,作为正文前的图文,将在以下陈述对视频处理领域中的某些主题的简介以帮助读者。例如,将在以下定义以上顺带使用的若干术语(线性、隔行、亮度、色度二次取样等)。一般为术语学起见,将在本文中通篇使用术语“图像信息”来表示可被呈现为包括但不限于运动视频信息的任何种类的视觉输出的广泛的一类信息。
背景概念·色空间及相关考虑因素色彩可使用三个分量指定。依赖于使用不同的色彩分量的彩色内容的传输的图像流被称为分量视频。一种常见的规范使用红、绿和蓝(RGB)分量来定义色彩。更正式地,RGB分量描述对给定光谱创建在感觉上等价的色彩的基准灯的比例强度。一般,RGB色空间可由与其色原和其白点相关联的色度值来指定。白点指的是与基准白色相关联的色度。
再现彩色图像的电子装置通过提供这三种类型的光源补充了人类视觉的三色本质。这三种类型的光源产生被感知为对人类观察者而言的不同颜色的不同光谱响应。例如,阴极射线管(CRT)提供红、绿和蓝磷光体以创建不同的颜色,从而补充上述的RGB色空间的某种变型。其它技术不使用磷光体,但可使用发出至少三种类型的光的光源来再现色彩。
然而,RGB编码模型不是对图像信息传输的高效选择,且不能良好地遵循某些较老的标准。从而,图像信息一般被发送到使用除RGB以外的某些编码模型的目标装置。当接收之后,图像信息可由显示装置内部变换成RGB相关色空间以便呈现。如将在以下在标题“伽马考虑因素”中描述的,每一R、G或B分量数据可按照其预伽马校正的形式来表示,被称为R′、G′和B′值。(一般,按照惯例,在本发明中,加“′”表示非线性信息。)在此方面的一种常见策略是通过参考亮度相关分量(Y)和色度相关分量来定义色彩。亮度一般指的是所感知的光强度(明亮度)。亮度可按照预伽马校正的形式(按以下在“伽马考虑因素”中描述的方式)表示以产生其非线性的对应物,称之为“亮度(luma)”(Y′)。色度分量定义图像信息相对于亮度的彩色内容。例如,在数字领域,符号“Cb”对应于差B′-Y′的n位整数成比例的表示(一般为范围从-127到128的8位值),而符号“Gr”对应于差R′-Y′的n位整数成比例的表示。符号“Pb”指的是Cb的模拟对应物,符号“Pr”指的是Cr的模拟对应物。符号Pb和Pr也可指的是具有额定范围[-0.5...0.5]的归一化形式的Cb或Cr。由CbCr和PbPr定义的分量图像信息可在形式上加“′”(例如,Cb′Cr′和Pb′Pr′),因为它们表示非线性信息。然而,由于Pb、Pr、Cb或Cr总是指的是非线性数据,为方便和习惯起见,总是去掉“′”符号(例如,使用符号Y′PbPr来代替Y′Pb′Pr′)。
彩色内容也可作为合成视频(而非上述分量视频)传输。合成信号在一个信号内组合亮度和色度信息。例如,在编码系统Y′UV中,U代表B-Y的成比例的形式,V代表R-Y的成比例的形式。这些亮度和色度分量然后被处理来提供单个信号。编码系统Y′IQ定义通过以指定方式变换U和V分量而形成的另一合成编码系统。行业历史上促进使用Y相关色空间(Y′CbCr、Y′PbPr、YUV、YIQ等)的一个原因在于,因为在这些色空间中,相比以RGB色空间表示的图像信息,能更容易执行减少的彩色图像信息。这些色空间也可与为黑白图像信息开发的较老的版本后向兼容。术语“亮度相关信息”一般指的是具有明亮度相关分量和色度相关分量的任何色空间,并包括至少所有上述色空间。
一般可能使用一个或多个矩阵仿射变换将彩色内容从一个色空间变换到另一色空间。更正式地,条件配色(metamerism)的特性使得按照另一组匹配函数来表达一组色空间系数成为可能(其中“条件等色(metamer)”指的是映射到同一组色空间系数的两个光谱,从而显现为感觉上相同——即,看上去像同一颜色)。
·伽马考虑因素阴极射线管(CRT)不具有线性响应传递函数。换言之,施加于CRT的电压与由CRT产生的所得的亮度之间的关系不定义一线性函数。更具体地,CRT的预测的理论响应具有与5/2幂定律成比例的响应;即,对给定的输入电压“V”,CRT的所得的亮度“L”可被计算为L=V2.5。该传递函数此处也被称为“伽马响应函数”,且电压信号的指数被称为“伽马”。
另一方面,当图像信息由照相机捕捉或由3-D呈现系统生成时,图像信息以线性RGB色空间表示,这意味着在传入的信号和输出的明亮度之间存在线性关系。为了解决照相机的线性度与显示器的非线性度之间的不相称,照相机常规上通过应用伽马的逆来预先补偿它们产生的信号。换言之,照相机的传递函数(有时称为编码传递函数)大致是CRT亮度响应的反函数。应用编码传递函数(即,逆伽马)的结果是产生形式上非线性的“经伽马校正的”图像信息。当非线性信号通过显示设备时,产生接近线性的亮度。再一次,根据上述符号,非线性(即预补偿)的图像信息通过对其分量加“′”来表示,例如R′G′B′或Y′CbCr(其中隐藏了Cr和Cr分量上的′)。
因此,以图像信息的亮度-色度非线性(补偿的)形式存储和传输图像信息变得常见并且标准。为了维持兼容性,产生要在CRT上显示的信号的任何源也应首先对该信号应用反函数。
作为特殊考虑因素,使用传递函数的图像信息的编码通常对函数的低电压部分应用特殊的逼近函数。即,编码技术通常在这部分中提供线性段,以减少噪声在成像传感器中的效应。该段被称为“线性尾部”,它具有定义的“坡角斜率(toeslope)”。该段改进了在实际CRT上呈现的图像信息的质量,因为这些设备由于其物理构造而具有接近0的线性亮度-电压响应。
·相对于亮度信息的色度信息的采样和对准人类视觉对光强度上的改变比对光色度分量上的改变更敏感。编码系统利用这一事实来减少相对于亮度信息(Y′)量所编码的色度(CbCr)信息量。该技术被称为色度二次取样。一般被表示为L:M:N的数字符号可用于表示这种采样策略,其中“L”表示亮度分量(Y′)的采样基准因子,而“M”和“N”指的是相对于亮度采样(Y′)的色度采样(例如,分别为Cb和Cr)。例如,符号4:4:4可表示其中对每一亮度样本存在一个色度样本的Y′CbCr数据。符号4:2:2可表示其中对每两个亮度样本(水平的)存在一个色度样本的Y′CbCr数据。符号4:2:0可表示其中对每一2×2的亮度样本群集存在一个色度样本的Y′CbCr数据。符号4:1:1可表示其中对每四个亮度样本(水平的)存在一个色度样本的Y′CbCr数据。
在其中编码策略提供比色度信息更多的亮度信息的这些环境中,解码器可通过基于所提供的色度信息执行内插来重构“遗失的”色度信息。更一般地,欠采样指的是,产生比一组初始图像样本更少的图像样本的任何技术。过采样指的是,产生比该组初始图像样本更多的图像样本的任何技术。因此,上述内插定义了一种过采样。
编码策略也指定色度样本空间上与相应的亮度样本对准的方式。编码策略在此方面有所不同。某些使色度样本与亮度样本对准,诸如色度样本被直接置于亮度样本“上方”。这被称为共同定点(cositing)。其它策略将色度样本置于亮度样本的二维阵列内的孔隙空间中。
·量化考虑因素量化指的是离散的数值被赋值给色彩分量(或黑白信息)的信号幅度的方法。在数字领域中,数值在指定数量的阶中横跨指定范围的色空间值(色域)。例如,通常使用255阶来描述每一分量值,使得每一分量可采用0到255中的一个值。通常使用8位来表示每一色彩值。
从高精度数字转换到低精度数字有时可能产生各种伪影。设计了各种误差分散算法来解决这个问题,诸如Floyd-Steinberg算法。误差分散算法可将由量化的舍入效应产生的误差分布到邻近的像素位置。关于Floyd-Steinberg算法的其它背景信息将在以下详细描述的主要部分内提供。
·隔行与逐行表示考虑因素原先,电视仅以从上到下的逐行扫描(sweep)方式显示黑白图像信息。当今,常规的电视信号以隔行的方式扫描。在隔行扫描中,捕捉视频帧的第一场,之后立刻捕捉该视频帧的第二场(例如,1/50或1/60秒之后)。第二场相对于第一场有少量的垂直偏移,使得第二场捕捉第一场的扫描行之间的孔隙空间中的信息。通过以快速连续的方式显示第一和第二场来呈现视频信息,使得视频信息一般被人类观众感知为单个连续的信息流。
然而,计算机监视器和其它呈现设备以逐行而非隔行的方式显示图像信息。因此,为了使装置在计算机监视器上呈现隔行的信息,它必须通过对相对场内插数据来以隔行的场速率显示逐行的帧(被称为“去隔行(de-interlacing)”的处理)。例如,为显示隔行的场,它必须通过检查另一侧的场来对行之间的空间位置内插“遗失的”数据。术语“逐行格式”一般指的是任何非隔行的图像格式。
图像信息(例如,来自视频照相机)一般以隔行形式存储,例如第一场与第二场(语义上)分开存储。如果图像信息仅被显示在隔行的TV显示器上,则其Y′UV隔行信息可被直接传给CRT。CRT在内部将Y′UV信息转换成R′G′B′信息,并使用该信号来驱动输出枪。
隔行是有利的,因为它使图像信息的有效垂直分辨率翻倍。然而,隔行也引入伪影。这是因为对象能以60hz运动,但在隔行呈现中,每30hz仅显示一半信息。由这种现象产生的结果伪影有时被称为“羽化(feathering)”。伪影尤其在高速运动视频的显示中显现,其中对象显现为被分成偶数和奇数行。
关于以上着重课题中每一个的其它信息可在多个介绍性文献中找到,诸如Charles Poyton被广泛关注的Digital Video and HDTV(数字视频和HDTV)(2003年Morgan Kaufmann出版社)。
发明概述描述了用于以线性形式处理图像信息以减少伪影数量(相比以非线性形式处理数据)的策略。示例性的各种处理操作可包括,缩放、合成、阿尔法混合、边缘检测等。在一个更具体的实现中,描述了用于处理a)线性;b)位于RGB色空间中;c)高精度(例如,以浮点表示提供);d)逐行;以及e)全通道的图像信息的策略。其它改进提供用于a)在伪线性空间中处理图像信息以改进处理速度;b)实现改进的误差分散技术;c)动态计算和应用滤波器内核;d)以最优方式产生流水线代码;以及e)使用新颖的像素阴影着色器技术来实现各种处理任务。
附图简述

图1示出了涉及以线性格式处理图像信息的示例性图像处理流水线。
图2示出了用于使用图1的图像处理流水线来以线性格式处理图像信息的示例性过程。
图3示出了4:2:0图像信息的样本作为讨论处理这种信息而不招致伪影时的某些难题的载体。
图4示出了适应以伪线性形式处理图像信息的图像处理流水线的示例性部分。
图5示出了用于使用图4中所示的图像处理流水线部分以伪线性形式处理图像信息的示例性过程。
图6和7一起解释了执行抖动和误差分散的已知方法。
图8示出了用于提供抖动和误差分散的产生优于关于图6和7描述的模型的结果的示例性系统。
图9示出了用于使用图8的系统来执行抖动和误差分散的示例性过程。
图10示出了用于当执行缩放时提供滤波的示例性系统,它涉及滤波器内核的动态计算。
图11示出了用于使用图10的系统来执行滤波的示例性过程。
图12示出了可结合此处所述的任何改进的示例性图像处理流水线。
图13示出了例如通过去除特定图像处理应用所不需要的代码模块来产生用于实现图12的图像处理流水线的有效代码的示例性系统。
图14示出了用于应用图13中所示的代码优化系统的示例性过程。
图15示出了用于通过使用包含像素阴影着色器功能的图形处理单元(GPU)来实现图12的图像处理流水线的示例性系统。
图16示出了已知的像素阴影着色器设计。
图17示出了涉及在典型的图形应用环境中将纹理信息应用于多边形的一般原理。
图18示出了使用像素着色器的4抽头滤波器的示例性实现。
图19示出了解释图19的滤波器的操作的示例性过程。
图20示出了使用像素阴影着色器的图1的图像处理流水线的各方面的更一般的实现。
图21示出了用于实现在前述附图中所示的各个特征的各方面的示例性计算机环境。
在全部公开内容和附图中使用相同的编号来引用相同的组件和特征。系列100编号指的是最初在图1中找到的特征,系列200编号指的是最初在图2中找到的特征,系列300编号指的是最初在图3中找到的特征,依此类推。
较佳实施例的详细描述以下描述描绘了用于改进图像处理流水线的各个策略。这些策略提出了基于对本领域中的确立概念的重新考虑来处理图像信息的新方式。第一类改进(在节A中描述)可抽象地应用于任何图像处理流水线。第二类改进(在节B中描述)可更具体地应用于图像处理流水线的某些技术专用或实现专用的应用。
根据一种示例性策略,由图像处理流水线接收的图像信息被转换成线性形式,并然后以该形式处理。例如,在一个示例性实现中,所接收到的亮度相关图像信息(例如,Y′CbCr)被转换成线性RGB形式,并以该形式处理。示例性的处理任务可包括去隔行、调整大小(缩放)、合成、阿尔法混合、边缘检测、锐化等。在线性空间(相对于非线性空间)中处理图像信息具有显著的优点,因为它一般产生具有减少的伪影的输出结果。
根据另一示例性策略,图像信息被转换成全通道(4:4:4)和高精度格式,并以该格式处理,随后将信息量化为较低的精度。较高精度的信息能以浮点格式表示。处理全通道和高精度的信息是有利的,因为它产生具有减少的伪影的输出结果,且可减少当信息在流水线中处理时色度分辨率的劣化。
根据另一示例性策略,提供用于处理4:2:0的隔行图像信息的特殊设备(provision)。这些特殊设备提供将过采样操作与去隔行操作相集成的方式。这种策略出于众多原因而是有益的。例如,这种策略更好地确保了4:2:0信息将被正确处理,例如不产生所谓的“色度缺陷”处理伪影。
根据另一示例性策略,可应用特殊的传递函数以便将图像信息转换到伪线性空间而非理论上正确的线性空间。随后使用线性型算法在此伪线性空间中对图像信息执行处理(而不必修改这些算法以考虑到它们对非线性信号的应用)。这种策略是有益的,因为它涉及可使用可用的处理硬件来更快地执行的算术运算。这种策略也消除了通过将纠错机制结合在这些算法内来更改图像处理算法的需求。纠错机制的目的在于最小化使用线性算法来处理非线性数据的负面影响。然而,这些误差机制的设计和应用通常变得比原始处理算法更复杂。
根据另一示例性策略,应用了一种独特的误差分散算法。对原始图像信息中的每一像素,该算法量化由原始图像、噪声信息和误差项定义的总和。这为该特定像素产生一量化值。该算法然后通过计算该量化值与原始值之差来为将要处理的后一像素计算误差项。这种策略优于本领域中的必须向原始图像信息添加噪声并量化该含噪声的图像信息的已知策略;这些已知技术然后参考汉噪声的图像信息而非原始图像信息来计算误差项。因此,不像此处公开的策略,已知的技术与对原始图像信息添加的噪声信息成比例地劣化了原始图像信息。作为另一种改进,此处所述的策略使用具有足够长的重复周期和足够的“类噪声”伪随机特性的噪声生成器,使得噪声生成器本身不在目的图像信息中产生伪影。
根据另一策略,使用Catmull-Rom滤波器的变型来执行缩放操作。该策略涉及计算调整图像信息大小所需要的滤波器内核的数目以及每一内核所需的抽头的数目,然后预先计算滤波器内核。这些滤波器内核然后被应用于图像信息。更具体地,内核可被循环地应用于图像信息的行和列。该策略出于众多原因而是有利的。例如,对动态计算的滤波器内核的使用减少了在已知应用中发现的某些伪影。滤波器内核的预计算是有利的,因为它加速了滤波器的实际应用。对循环应用的内核的极小集的恰到好处的使用具有其它效率相关的优点。
根据另一策略,描述了用于生成实现图像处理流水线的代码的功能。该功能接收指定假定流水线要执行何种操作的要求,然后选择性地从代码模块库中组装代码模块以实现这些功能。该功能不包括来自库中的不被需要的模块。该策略出于众多原因而是有益的;例如,它有助于产生更高效因此潜在地运行更快的代码。
最后,另一策略使用图形处理单元(GPU)来实现图像处理流水线的某些方面或图像处理流水线中的所有功能。特定实现应用像素阴影着色器(GPU内的数字信号处理器(DSP))来执行图像滤波。在一种情况中,像素阴影着色器的一个或多个纹理单元可被分配给滤波器内核的权重(weight),且一个或多个其它纹理单元可被分配给同一输入图像信息的不同增量移位形式(与内核的抽头相关联)。因为该策略由于像素阴影着色器的向量处理能力潜在地比CPU实现提供更快的处理速度和更大的处理容量,因此该策略是有益的。
这些策略的其它特征和附带的益处将在本描述中描绘。
对于术语学,术语“图像信息”旨在包括可由用户以任何可视形式消耗的任何类型的信息。图像信息可表示以任何格式表达的信息,诸如模拟格式、数字格式或数字和模拟格式的组合。图像信息可表示静止图像信息(例如,数字照片)和/或移动信息(例如,运动视频信息)。通过使用术语图像信息还可构想其它更多变化。
术语“图像处理流水线”指的是用于处理图像信息的任何功能。流水线包括以串行方式,即接连地对图像信息进行操作的至少两个功能组件。
术语“线性化”指的是图像信息从其非线性预补偿形式到线性形式的转换。术语“非线性化”指的是线性化的逆操作。
术语“亮度相关图像信息”指的是具有明亮度相关分量(例如,Y′)和色度分量的图像信息。术语“亮度相关色空间”指的是用于形成亮度相关图像信息的多个标准中的任何一个(例如,Y′CbCr等)。
一般,就所述主题的结构方面而言,此处所述的任何功能可使用软件、固件(例如,固定的逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的,术语“模块”、“功能”和“逻辑”一般表示软件、固件或软件和固件的组合。在软件实现的情况中,术语模块、功能或逻辑表示当在一个或多个处理设备(例如,CPU)上执行时执行指定任务的程序代码。程序代码可被存储在一个或多个固定和/或可移动计算机可读存储器设备中。
就本主题的过程方面而言,某些操作被描述为构成以某一特定顺序执行的各个不同步骤。这样的实现是示例性而非限制性的。此处所述的某些步骤可被组到一起,并在单个操作中执行,且某些步骤可按照不同于本公开中所述的示例中所采用的顺序的顺序执行。
本公开包括以下内容A.对视频处理流水线的示例性一般改进A.1.在RGB(线性)色空间中处理图像信息A.2.在流水线内使用浮点全通道图像信息A.3.4:2:0图像信息的特殊设备A.4.在伪线性空间中处理图像信息A.5.对误差分散算法的改进A.6.滤波器内核的动态计算B.对视频处理流水线的示例性实现相关改进B.1.流水线处理代码的优化生成B.2.GPU的一般使用以执行图像处理B.3.像素阴影着色器的相关改进C.示例性计算机环境A.对视频处理流水线的示例性一般改进A.1.在RGB(线性)色空间中处理图像信息图1示出了用于处理图像信息(例如,视频信息)的示例性图像处理流水线100。作为概观,最上面一行模块从各个源(照相机、扫描仪、磁盘、存储介质、数字网络等)中的任何一个接收图像信息,然后将该图像信息转换成用于处理的形式。附图中间的较大模块表示这样的处理,它产生经处理的图像信息。最底下一行模块将经处理的图像信息转换成适于输出至目的地(例如,电视机、计算机监视器、存储介质、数字网络等)的任何形式。
存在对图像处理流水线100的若干独特而有利的方面,它们在本公开的单独的小节中标识。这些小节将关注以线性形式处理图像信息。由在RGB色空间内以逐行(去隔行)的形式对图像信息的其它处理得到其它改进。作为对比,本领域中的典型方法是执行对4:4:4或4:2:2的隔行Y′UV信息的处理。如本发明的发明人所理解的,在非线性色空间处理图像信息产生各种伪影。图1的流水线100中所具体化的方法克服了这些问题。
将依次描述图1中所示的每一模块。
对于顶行模块,去抖动(undithering)模块102将所接收的具有第一精度的Y′CbCr图像信息转换成具有第二精度的图像信息,其中第二精度高于第一精度。模块102通过执行去抖动型处理来执行该任务。即,可使用抖动操作(未示出)来将馈送给流水线100的输入图像信息量化为第一精度。模块102有效地应用了这些量化操作的逆操作来产生第二较高精度。
过采样模块104将具有第一数目的样本的输入图像信息变换成具有第二数目的样本的输出图像信息,其中样本的第二数目比样本的第一数目大。在一个典型的应用中,图像信息由流水线以其中亮度信息(Y′)的样本比色度信息(Cb或Cr)的样本多的形式接收;这是因为眼睛对亮度信息更敏感,使得可在不必忍受可察觉的劣化的情况下减少色度信息相对于亮度信息的数量。过采样模块104一般工作来增加色度样本的数目,使得色度样本与亮度样本同等。例如,过采样模块104可将4:2:0或4:2:2的Y′CbCr图像信息转换成4:4:4的Y′PbPr信息。由模块104执行的过采样操作通过内插现有样本来增加样本的数目(由此有效地执行缩放操作)。这样的内插技术通常必须特别考虑不同的标准如何相对于亮度信息安置色度信息以提供准确的结果。
模块106对4:4:4的Y′CbCr图像信息应用矩阵变换以将其变换成另一色空间,即R′G′B′色空间。
模块108然后通过对非线性R′G′B′图像信息应用转递函数来将其变换成线性形式。再次重复,与R′G′B′图像信息相关联的“′”符号指示它是非线性形式的;没有“′”号(例如,RGB)一般表示线性数据(除了如上所述当常规上理解信号指的是非线性信息时去除“′”号也是常见的以外)。图1的模块108下方图1中所示的模型传递函数示出了所采用的传递函数的大致形状,这也是CRT(未示出)的固有传递函数的大致形状。该模型传递函数也指示,它可在其曲线接近V=0部分采用线性尾部以考虑到在该“坡脚”区域中适用的特殊考虑因素。
模块110可任选地对图像信息执行去隔行操作,以将其从隔行形式转换成逐行形式。当执行该任务时,模块110可使用(对特殊情况,例如4:2:0信息的)RGB图像信息或原始Y′CbCr图像信息中的任何一个来指导。然而,去隔行操作应较佳地在线性RGB空间中执行。这是因为去隔行实际上是一种形式的图像处理(涉及例如现有样本的内插);从而,在线性空间中执行该处理将产生更准确的结果。
模块112可任选地变换线性RGB信息的色原以在另一色空间中表示该信息。该转换可包括对RGB信息应用矩阵变换以改变其色原以便对应于在视频处理流水线中的下游组件中执行的处理所期望的任何原色。在一个示例中,模块112可将各种不同类型的图像信息转换到公共色空间,这便于在稍后的操作中将这些信息混合在一起。
模块114一般表示对具有经变换的色空间的图像信息的任何类型的处理。此时,在该特定示例中,对a)线性形式;b)位于RGB色空间中;c)4:4:4(全通道)形式;以及d)逐行形式的图像信息进行处理。尽管较佳是是处理在线性色空间中发生以减少伪影,但不必为图像处理流水线提供该列表中列举的所有方面以提供好处。
在任何情况中,模块114可执行任何类型的图像信息处理。基本上,处理包括图像信息的任何变换,例如输出图像=某一函数(输入图像),包括任何类型的图像滤波操作。这一处理操作的代表性且非限制性列表包括a)合成;b)阿尔法混合(例如,各种渐变和叠化);c)边缘检测;d)锐化;e)调整大小(缩放至较大或较小的图像大小);f)去隔行(如果之前未执行)等。合成涉及将一种类型的图像信息与另一类型的图像信息混合。例如,可采用模块114将图形(例如,文本信息)组合到从DVD盘中抓取的视频图像信息上。阿尔法混合涉及基于阿尔法因子(它确定一种色彩混合到另一种色彩的程度)将色彩混合到一起。例如,混合操作由以下公式管理最终色彩=源色彩*源混合因子+目的地色彩*目的地混合因子。在此公式中,目的地像素色彩表示预先存在的场景中的像素的色彩,而源像素色彩表示混合引擎打算添加到目的地像素的新像素色彩。混合因子从0到1变化,并用于控制源和目的地像素色彩在最终色彩值中起多大作用。再次重复,存在大量潜在的处理应用的仅代表性的示例。一般,众多上述视频处理应用对源与目标图像信息之间的转换应用放射加权。在这些类型的应用中,非线性加权的使用可引起图像信息的总明亮度过快下降。这仅是本发明的解决方案依靠其对线性图像信息的处理可消除或减少的伪影的一个示例。
图1中底行的模块一般逆转上述顶行中的操作。即,在模块114中的处理之后,模块116可任选地将图像信息转换到另一色空间,诸如返回至RGB色空间。如果图像信息需要以隔行形式存储或显示,则模块118应用可任选的图像信息的重新隔行化。模块120应用传递函数以再次将RGB图像信息变换成非线性形式(R′G′B′)(如果适当)。模块112将R′G′B′图像信息的色空间变回将其亮度分量(Y′)与其色度分量(例如,PbPr)分离的格式。模块124可任选地对Y′PbPr图像信息进行二次取样以减少相对于亮度样本(Y′)数目的色度样本(PbPr)数目。即,该模块124可将Y′PbPr 4:4:4图像信息(其中,对每个亮度样本存在一个色度样本)变换成Y′PbPr 4:2:2或4:2:0图像信息(其中,存在相对于亮度样本较少的色度样本)。最后,模块126对图像信息应用量化操作。量化操作具有将图像信息转换至较低精度以便于经由网络的有效传输、存储、显示等的效果。量化操作可与抖动操作耦合以便减少否则可能由量化所产生的舍入误差引起的伪影。如将在以下的小节中更详细解释的,抖动操作具有当处理图像信息时将这些误差分布到邻近像素的效果,从而减轻伪影的效应。
图2示出了以流程图形式概括上述操作的过程200。步骤202涉及将输入图像信息转换到线性色空间,诸如RGB。该信息也较佳地被去隔行成逐行形式,并过采样至4:4:4(全通道)格式。步骤202因此对应于图1中的顶行模块。
步骤204需要以图像信息的线性形式对其执行任何类型的处理任务(及组合)。
步骤206表示将经处理的线性图像信息转换成特定应用所要求的任何输出格式。这可涉及将经处理的线性图像信息转换到非线性色空间、对其重新隔行化、欠采样、量化等。步骤206对应于图1中底行的模块。
A.2.在流水线内使用浮点全通道图像信息返回图1,流水线100也提供优于已知策略的结果,因为它使用具有(b)相对较高精度以及(c)可任选地线性语义的(a)全通道图像信息(即,4:4:4)。更具体地,如上所述,流水线100将它所接收的图像信息转换成比其原始形式更高的精度。流水线100也通过增加信息中相对于亮度样本的色度样本的数目来将图像信息转换成全通道形式(4:4:4)。然后对高精度且全通道的图像信息执行各种处理任务。在执行处理之后,流水线100可任选地再次将经处理的图像信息转换成较低精度的二次取样形式。
一般,图像信息到高精度和全通道形式的转换有效地放大了相对于信息的噪声分量的信息的信号分量,从而允许在该信息上执行的处理产生更准确的结果。作为对比,在流水线中的各个中间接合处不能使用高精度和/或全通道图像信息的已知的策略可能沿着流水线传播误差,并可能降低图像信息的分辨率(通过基本上丢失色彩内容)。图1一般表示由馈送到处理模块128内的标记为128的信息框对高精度且全通道的图像信息的处理(尽管该附图中的其它模块也可受益于高精度且全通道形式的信息的处理,诸如去隔行模块110)。
另一示例将使该讨论更具体。考虑相比正常精度的4:2:0或4:2:2的Y′UV图像信息,对高精度线性RGB图像信息工作的优点。回想到4:2:0和4:2:2图像信息相对于亮度信息量的一半和四分之一(分别)的色度信息量。一般,高清晰度(HD)图像信息(具体地,1920×1080i,2.07兆像素)被缩小到1280×720p(0.92兆像素)或720*480p(0.35兆像素)分辨率。如果流水线在该环境中以4:2:0的欠采样格式(例如,1920×1080到1280×720)执行缩小操作,则流水线将2.07兆像素的亮度信息和0.52兆像素的色度信息减少到0.92兆像素的亮度信息和0.23兆像素的色度信息。然而,如果流水线先过采样到4:4:4,然后转换成高精度RGB(例如,浮点),然后缩小,并然后转换成4:4:4的YUV,则流水线将有效地保留0.92兆像素的亮度信息和0.52兆像素的色度信息。换言之,在该环境中高精度处理的使用允许流水线保留几乎所有的原始色度信息。
实现高精度中间图像信息的一种方式是使用浮点格式来表示信息。浮点数具有尾数分量和指数分量。指数分量定义将如何移位尾数分量。使用这种格式,浮点信息可通过相应地移位信息的表示(例如,通过改变指数分量)来表示非常小的值到非常大的值。可使用具有任何位数的任何种类浮点表示,包括16位浮点表示、32位浮点表示等。供图像处理流水线100中使用的特别适用的一种浮点形式是被称为FP16的浮点格式,但也可使用其它种类的浮点表示。
A.3.4:2:0图像信息的特殊设备作为回顾,如在背景部分所解释的,4:4:4图像信息包括对每四个Y′样本的四个Cb和Cr样本。4:2:2图像信息包括对每四个Y′样本的两个Cb样本和两个Cr样本。4:2:0图像信息包括每一扫描线上Y′样本一半的Cb和Cr样本,以及Y′扫描线一半的Cb和Cr扫描线。换言之,色度信息的分辨率在水平和垂直方向上均为亮度信息的一半。例如,如果全图像分辨率是720×480,则色度信息仅以360×240存储。在4:2:0中,不仅必须在每一扫描线上内插遗失的样本,而且色度信息的全部扫描线必须从上方和下方的扫描线内插。图3示出了MPEG2隔行4:2:0图像信息的示例。关于对4:2:0图像信息的处理的其它信息可在Don Munsil和StaceySpears“The Chroma Up-sampling Error and the 4:2:0 Interlaced Chroma Problem(色度过采样误差和4:2:0隔行色度问题)”DVD基准,2001年4月(2002年12月,2003年1月更新)中找到。
对4:2:0图像信息中的色度信息的不足和位置对准引入处理该信息时的多个难题。一般而言,因为处理流水线100中的一个阶段需要对处理流水线100中的另一阶段的分析以便正确解释4:2:0图像信息,因此可能引起问题。考虑图1的过采样模块104和矩阵变换模块106的示例。为了正确解释4:2:0图像信息,过采样模块104最佳地需要关于色彩信息在图像信息中如何表示的知识,这是由去隔行模块110提供的信息。但是由于去隔行模块110位于相对于过采样模块104的下游,因此该知识对过采样模块104不可用。如果模块104和106在不受益于去隔行分析的情况下处理4:2:0信息,则它们可能在图像信息中产生误差,这种图像信息难以或不可能是正确的。这种困难最终随着4:2:0中的扫描线在去隔行分析中不能彼此独立地处理(不像例如4:2:2)的事实而发生。
为了解决这种难题,图1的流水线100可结合用于处理4:2:0图像信息的特殊设备。作为一般设备,可修改流水线100,使得在不同阶段执行的分析(以及在不同阶段可用的信息)更广泛地对流水线中的其它阶段共享,而不需要每一阶段仅原子地分析前一阶段对它馈送的任何信息。
特别对于由去隔行模块110在流水线100中的位置引起的问题,可修改流水线100,使得去隔行分析(由模块110执行)被更早执行,例如连同过采样分析(由模块104执行)一起执行。图1由虚线130示出了该战术。或者,去隔行模块110可通过也检查馈送给过采样模块104的原始输入图像信息来执行去隔行分析。即,去隔行模块110可结合原始图像信息对模块108的输出执行分析以获取对应如何对图像信息去隔行的更好的理解。
可设计其它模块集成设备以共享由流水线100内的各个模块单独执行的分析,从而更有效地解决4:2:0图像信息中的色度信息不足问题。
A.4.在伪线性空间中处理图像信息前述部分达成了设计产生较少伪影的图像处理流水线的目标。然而,图像处理流水线也应以高效的方式提供输出结果。当图像处理流水线以足够的速度以及可接受数量的处理资源产生结果时,它以高效的方式产生结果。为此,本小节提出可应用于图1中所示的流水线100以减少流水线100的复杂度的各种逼近。
即,本小节提出对图1中所示的流水线100的修改,使得它提供接近线性但不是完全线性的图像信息。结果,这些变换被称为将图像信息变换到“伪线性”空间,而非理论上正确的线性空间。优点在于,可极大地简化传递函数(模块108和120中)所需的数学运算的硬件实现,导致更迅速且更有效地处理图像信息。更具体地,这些所选运算一般比它们的原始的对应函数(在数学上更精确)快大约一个数量级的速度执行。在伪线性空间中处理图像的负面影响是极小的,因为伪线性图像信息是接近线性的。因此,线性本质的任何算法可无需修改而应用于该信息以为大多数应用提供满意的输出结果。
图4提供了关于上述逼近的更多信息。更具体地,图4表示仅对图1的处理流水线100的某些模块的修改,从而仅包含对图1中所示的全部处理流水线100的缩减的描述。
如图4中所示的流水线选段400包括代替图8的传递函数模块108的传递函数模块402。代替应用对图像信息的数学上精确的变换以将其转换到线性空间(如模块108所做),模块402应用将图像信息转换到上述伪线性空间的近似传递函数(g_approx(x))。该模块402采用g_approx(x)传递函数,因为它比图1的模块108所需的更精确的传递函数“便宜”。
模块404表示图1的处理模块114的对应物。模块404在伪线性处理空间中对伪线性图像信息执行任何数量的处理任务。
模块406、408和410然后执行将经处理的图像信息转换成适于输出(例如,至显示器、存储设备、网络目标站点等)的格式的任务。模块406特别承担通过应用模块402的操作的逆,即g_approx′(x)来去除模块402的效果的责任。模块408然后通过应用传递函数g_inx(x)来线性化模块406的输出;执行该操作是因为下一阶段410被设计成接受线性输入。然后,模块410应用反传递函数(g_out′(x))来产生适应所需的任何输出格式的最终的经伽马校正的输出图像信息。在一个实际实现中,模块406、408和410可被集成到由模块412执行的表示为F(x)的单个变换内。
重要的是,由模块404在伪线性色空间中应用的算法与图1的模块114中应用于“正确的”线性色空间的算法相同;换言之,由图4表示的处理策略不需要自己特别定制图像处理算法。作为对比,由已知的现有策略采取的方法是在接收图像信息的任何非线性空间中执行处理,然后对算法应用各种特别和应用专用的校正因子以试图修补任何伪影。然而,这些校正因子通常是不准确的,且一般无论如何都是复杂的。更一般地,现有技术不应用将信息转换到伪线性形式的综合和可通用方法,然后以上述方式移除该伪线性形式。
该小节中的其余讨论描述了可用于实现图4中上述模块的示例性逼近。首先,注意,用于执行伽马处理的传递函数一般是幂函数(例如,x0.45或反函数x1/0.45≈x2.222),或若干函数的组合。对于使用可用硬件在每个像素的基础上计算,幂函数一般非常耗时。
然而,注意到x0.45近似等于x的平方根,或换言之x0.45≈x0.50。且x1/0.45近似等于x2,或换言之,x1/0.45≈x2。存在用于计算x1/2的的优化硬件,它比一般幂函数所需的运算迅速(通常快一个数量级)。且硬件可非常迅速地执行平方x2,因为这仅是一个乘法运算。从而,这些逼近可显著地削减与实现传递函数相关联的处理成本。
更正式地,由模块402执行的函数g_approx(x)可采用x2*sign(x)的形式,由模块406执行的反传递函数可采用(abs(x))1/2*sign(x)的形式。(注意,作为特殊考虑因素,传递函数和反传递函数可应用接近于0的线性尾部段)。
以上方法可推广到不同的输入和输出色域,这些色域使用以下示例性的一连串操作由函数g_in(x)和g_out(x)表示1)对图像信息应用反线性逼近g_approx(x)=x2=x*x。模块402可执行该步骤。
2)在伪线性空间中处理数据。模块404可执行该步骤。
3)应用线性逼近g_approx′(x)。模块406可执行该操作。
4)应用传递函数g_in(x)以线性化模块406的输出。模块408可执行该操作。
5)对模块408的输出应用反传递函数g_out′(x)以在期望的g_out空间中产生信息。
步骤(3)-(5)可被合并成单个函数F(x),即F(x)=g_out′(g_in(g_approx′(x)))。
如果流水线在伽马2.222到伽马2.4之间转换,则函数F(x)可被表示为F(x)=(((x0.5)1/0.45)1/2.6)=x0.426.]]>以上算法的成本涉及g_approx(x)函数所需的一个非常“便宜”的对话,继之以在伪线性空间中的信息处理,继之以F(x)函数所需的一个可能昂贵的对话。但由于公式F(x)仅要求指数的乘法,该函数的成本不会比原始的反函数更差。从而,图4中所示的解决方案具有潜在地将全线性化/非线性化循环的成本减少近似一半的实际效果。如上所述,该解决方案在它不需要由模块404执行的算法的特殊定制的意义上是有利的。
图5示出概述上述操作的过程500,它是图2中所示的线性化过程200的对应物。步骤502需要将输入图像信息转换到伪线性空间。步骤504需要使用模块404在伪线性空间内对图像信息执行处理。而步骤506需要将经处理的信息转换到适当的非线性色空间以便输出。
A.5.对误差分散算法的改进将高精度图像信息量化成低精度格式可能引入误差,因为量化所需的逼近在没有被正确处理时可能导致伪影。各种误差分散算法用于分散由量化引起的误差,从而最小化伪影。这样的误差分散是抖动的一种形式。
图6示出分散由量化引起的误差的Floyd-Steinberg算法的已知应用。考虑图像中的点X,它表示图像中的一像素(或更一般地,一图元)。对该图元X的量化将产生误差差,它被计算为图元的高精度表示与它被量化成的值之差。Floyd-Steinberg算法将该差划分成不同的分量,然后将这些分量分布到邻近图元X(且未由该算法处理过)的图元。当处理前进至这样的一个邻近图元时,之前分散到该图元的误差分量将被加到其上,且该图元然后将以上述的方式处理,例如,通过对其量化、计算另一误差差并将该误差分散到邻近图元。对整个图像的处理可按照各种方式进行,诸如按从左到右和自顶向下。
Floyd-Steinberg算法向它分散至邻近图元的各误差分量分配不同的权重。图6示出了分配给邻近图元X的图元的权重7、1、5和3(以顺时针方向)。更精确地,应用于误差分量的加权因子是7/16、1/16、5/15和3/16,其中分母“16”反映了分配给邻近图元的权重总和。
然而,诸如Floyd-Steinberg等误差分散算法有时产生含有各种伪影的目的图像。这样的伪影可在视觉上可辨别的图案中显现,在某些图像内容中尤其显著。已知策略通过对原始图像添加随机噪声以混乱由误差分散算法引起的图案来解决这个问题。但这种补救本身可能具有各种缺点。首先,已知技术将噪声添加到原始图像,然后将含噪声的原始图像量化为基线(按以下将更仔细描述的方式)。尽管这种技术具有模糊由误差分散算法引起的伪影的效果,但它也劣化了最终的目的图像。即,目的图像中的噪声与添加到原始图像的噪声成比例地增加。其次,已知策略可使用具有相对较短的重复周期的噪声生成器来添加噪声。因此,噪声生成器可产生它们自己的图案型伪影,这些伪影可能在目的图像中在视觉上可辨别(以及可能地,噪声生成器被设计来掩饰的误差分散的伪影的某些残余痕迹)。
图7示出了更具体解释了上述问题中的前者的过程700。过程700的目的在于使用误差分布算法来量化原始图像信息(“Original(原始)”)以产生目的图像信息(“Final(最终)”)。步骤702需要通过对图像元素i(例如,像素)的原始图像信息添加噪声信息来产生“Temp(临时)”图像信息。步骤704需要通过量化由Temp图像信息和“Error_Term(i)(误差项)”图像信息定义的和来产生Final图像信息。Error_Term表示基于对早先处理的一个或多个图元的先前的量化添加到图元i的误差分量。步骤706需要将下一Error_Term分量(将被应用于待处理的将来的图元)定义为如此计算出的Final图像信息减去Temp图像信息。该算法的应用具有基本上量化含噪声图像的实际效果,也具有上述随之引起的缺点。
图8示出了克服本领域中的上述问题的系统800。抖动模块802使用误差分散算法将原始图像信息804变换成目的图像信息806。误差分散算法包括上述的Floyd-Steinberg算法,但不限于此算法。噪声生成器808将随机噪声插入量化处理以帮助模糊由误差分散算法产生的伪影中的某一些。
系统800在至少两个方面上不同于已知策略。首先,系统800实际上是对量化处理而非原始图像信息804添加噪声信息。换言之,原始图像信息804保留可从中测量误差项的基线,相反在现有技术中,保留了加上噪声信息的原始图像。因此,系统800中噪声量的增加不会必然地具有逐渐使目的图像信息806看起来噪声更多的效果;这是因为传播到邻近图元的误差项保留对目的图像信息806相对于原始图像信息804的偏差的测量,因此误差分散算法继续试图校正添加到量化处理的随机噪声的效应。
图9示出了解释以上处理的过程900。步骤902涉及通过量化图元i的原始图像信息、噪声信息以及误差项的总和来为像点i产生最终图像信息。步骤904需要通过计算图元i的最终图像信息与原始图像信息之差来计算将被分散到一个或多个邻近图元的误差项。
一示例将使该讨论更具体。假定任务是将具有值23.3的图元量化到最接近的整数。在图7中所示的已知策略中,假定向该值添加了+0.4的噪声信息量,使值为23.7。该像点的最终图像值将是24,而被传播的误差项将是-0.3(最终输出图像值与含噪声图像值23.7之差)。相反,在图9的改进策略中,被传播的误差项将是-0.7(最终输出图像值与原始图像值之差)。
将基于Floyd-Steinberg误差分散算法的应用,在以下阐明对以上技术的更正式描述。对图像中的每一像素,该算法的任务在于量化高精度值V,并将其存储在像素阵列P的像素位置P(x,y)中,其中P(x,y)具有低于V的精度。由该算法产生的误差项被存储在具有与像素阵列P相同大小的高精度误差阵列E中。像素P(x,y)的误差项被存储在E(x,y)的相应位置中。该算法中的函数“round()”将高精度数舍入到最接近的低精度数。该算法中的函数“random()”返回范围{-0.5..0.5}中的高精度数。临时值“Desired(期望)”和“Error(误差)”是高精度值。实际误差传播系数来自Floyd-Steinberg误差传播算法。
算法1改进的误差分散For each pixel x,yDesired=V+E(x,y)P(x,y)=round(Desired+random())Error=Desired-P(x,y)E(x+1,y)=Error*7/16E(x-1,y+1)=Error*1/16E(x,y+1)=Error*5/16E(x+1,y+1)=Error*3/16Endd作为第二种改进,不像已知的方法,噪声生成器808采用相对较长的重复模式。短语“相对较长”可按照令噪声生成器808在处理图像信息的整个帧时不重复它的数或在产生目的图像信息806中的显著伪影的的意义上至少不重复其本身来相对解释。满足该要求的一个特定的随机数生成器被称为R250的随机噪声生成器。
A.6.滤波器内核的动态计算当将图像信息的大小从源大小调整到目的大小时,可在图1中所示的流水线100中的各个接合处使用缩放滤波器。例如,在模块114中执行的处理可涉及取决于应用和/或取决于由用户输入的控制信号放大或缩小图像信息。缩放也可在流水线100中的其它接合处执行,诸如在采样模块104和124中。
结合缩放算法可使用多个滤波算法。一种特定的已知类型的滤波器是所谓的Catmull-Rom滤波器。这种滤波器对调整图像信息的大小的任务的应用将引起图像信息中的边缘达某种程度的锐化。
该小节描述了用于缩放的滤波器(诸如Catmull-Rom型滤波器,但不限于这种滤波器),它可在逐个像素的基础上对图像信息进行计算和应用。这可被概念化为单独的滤波器对图像信息中的每一像素的动态计算和应用。每一滤波器可包括一个或多个内核,而每一内核可含有一个或多个抽头。内核定义应用于图像信息中的像素的权重。抽头定义内核作用于其上的图像信息样本。不能以这种方式计算和应用滤波器内核可导致目的图像中的各种伪影,诸如拍频波形图。
然而,按照计算内核所涉及的时间量,单独滤波器内核为每一像素的计算可能是非常昂贵的。这可排除图像信息在某些硬件上的实时表示。为了解决这个问题,本小节定义了用于为输入图像信息的整个行或列动态计算滤波器相位内核然后应用这样的内核的有效策略。作为概观,该策略涉及计算原始图像信息的行(或列)所需的内核的数目,计算内核所需的抽头的数目,分配用于存储内核的存储阵列,以及计算所需数量的内核并将其存储在阵列中。这些步骤继之以将阵列中所存储的滤波器内核应用于图像信息。
因为内核在其应用之前被计算,因此该算法是高效的。而且,实现了计算上的节省,因为在某些情况下,可将相对较少数量的计算出的内核循环应用于多得多的图像信息的行或列。且应用于特定行或列的同一内核可(分别)应用于图像信息中的其它行和列。换言之,取决于对特定应用的调整大小的需求,不必为图像信息中的每一单个像素计算单独的滤波器。
图10示出了用于实现上述设计的滤波器模块1002的系统1000的概观。滤波器模块1002包括动态内核预计算模块1004。该模块1004的目的在于首先计算特定缩放操作所需的内核数量和这些内核所需的抽头的数量。内核和抽头的数量将取决于调整图像信息大小的方式(按以下描述的方式)。然后预计算模块1004预计算期望数目的内核,并将内核存储在存储模块1006中。内核应用模块100然后将内核存储模块中的内核应用于图像信息以实现期望的滤波行为。如上所述,在内核应用前计算内核有助于使滤波处理运行得更迅速。而且,滤波器计算的复杂度对于仅需对少量内核的预计算的那些缩放操作极大程度地。
图10的右手部分示出内核1010如何可迭代地应用于图像信息1014的特定行1012。内核1010串行地并以循环的方式应用(在一个示例性情况中,每一内核被应用于一个输出像素)。例如,如果对相对较长的图像信息行存在少量内核,则这些内核在处理图像信息行时接连应用并反复重复。即,预存储的内核形成列表;它们接连地应用于行,且当遇到列表中最后一个内核时,通过绕回并再次从列表顶部取出内核来继续处理。应用技术的迭代行为由图10中所示的循环1016表示。内核1010可按照类似的方式应用于其它行。而且,可对应用于图像信息1014的列的内核重复类似的处理。
以下描述可由模块1004用来计算内核(kernel)和抽头(tap)数目的示例性算法。模块1004对在图像信息1014的x和y维度上的缩放单独应用该算法。因此,尽管该算法被设置成在x维度上缩放,但该算法也可应用于y维度,例如通过将参考宽度改为参考高度等。在x维度上,算法中所使用的“ScaleRatio(缩放率)”定义了原始图像宽度与期望的最终(目标)图像宽度之比。该算法中所使用的“ceiling(天棚)”函数将实数舍入到下一个较高整数。算法中的“gcd”函数计算两个整数的最大公共分母。
算法2对内核和抽头的数目的计算ScaleRatio=SourceWidth/DestinationWidthif ScaleRatio<1.0ScaleRatio=1.0Taps=ceiling(ScaleRatio*4)if Taps is oddTaps=Taps+1Kernels=DestinationWidth/gcd(SourceWidth,DestinationWidth)作为示例,考虑对具有720像素的高度的源图像信息到具有480像素的高度的目的图像信息的垂直缩放。以上算法对该情形的应用产生ScaleRatio=720/480=1.5Taps=ceiling(ScaleRatio*4)=6Kernels=480/gcd(720,480)=480/240=2因此,模块1004需要预计算并预分配各自具有6个抽头的2个内核。调整大小操作将在内核沿一行像素移动时以往复转换的方式在两内核之间交替。
作为另一示例,考虑对具有721像素的高度的源图像信息到具有480像素的高度的目的图像信息的垂直缩放。以上算法对该情形的应用产生ScaleRatio=721/480=1.5021Taps=ceiling(ScaleRatio*4)=7Tap为奇数,因此加1,这得到8Kernels=480/gcd(721,480)=480/1=480因此,模块1004需要预计算并预分配各自具有8个抽头的480个内核。调整大小操作将对480个输出像素中的每一个使用唯一的内核。然而,仍将实现显著的节省,因为可在每一列垂直像素中使用同一组480个内核。而且,在现实的实际情况中,目的和源大小之间的比率往往是相当简单的比率,使得结果所需的内核的数目为易于管理的数目。也可加上特殊的约束,这将防止用户输入要求特别大数目的滤波器内核(例如,超出指定的阈值)的调整大小请求。
图11示出了概述上述操作的过程1100。步骤1102涉及确定实现期望的在水平和/或垂直维度上对图像调整大小所需的内核数目(和每个内核的抽头数目)。预计算模块1004可使用以上提供的算法执行该任务。步骤1104涉及在内核存储模块1006中分配空间以存储步骤1004中所计算出数目的内核。步骤1106涉及实际预计算和存储内核。步骤1108涉及将存储模块1006中所存储的预计算的内核应用于图像信息。该应用通过当处理任何给定行或列时按顺序循环通过内核来进行。
B.对视频处理流水线的示例性实现相关改进B.1.流水线处理代码的最优生成下节提供了比节A有更加技术专用的本质的图1的视频处理流水线100的多个实现。首先,图12示出了图像处理流水线1200的高层概观,它将用作讨论本部分的改进的基础。
图12中所示的流水线1200包括由输入阶段1202、处理阶段1204和输出阶段1206定义的处理阶段。对于输入阶段1202,输入源1208表示任何图像信息源。源1208一般可包括经由某一通道提供给输入阶段1202(例如,从磁盘或经由IP网络等接收)的新捕捉的图像信息(例如,由照相机或扫描仪创建)、或之前捕捉的图像信息。在前一情况中,捕捉处理功能1210可对从源1208接收的图像信息执行任何类型的初步处理。在后一情况中,解码器功能1212执行任何种类的基于流的信息提取和解压以产生图像数据。一般,这样的处理可包括将所接收到的信息中的图像信息与音频信息分离,解压该信息等。对于处理阶段1204,处理功能1214对所得的图像信息执行任何种类的处理,诸如将多个图像信息流混合在一起为合成信号。对于输出阶段,输出处理功能1216表示为将其输出到输出设备1218而对经处理的图像信息执行的任何种类的处理。输出设备1218可代表电视机、计算机监视器等。输出设备也可代表存储设备。此外,输出“设备”(或输出功能1216)可提供准备信息以便存储在设备上或分布在网络上的压缩和格式化功能(诸如多路复用器)。
一般,图1中描述的处理操作可按照任何方式跨阶段(1202、1204、1206)分布。例如,处理阶段1204一般实现如图1中所示的处理模块114。各阶段(1202、1204、1206)中的每一个可物理地实现为用于执行归属的任务的单个装置或以串行或并行方式耦合在一起的多个装置。功能可由软件和硬件的任何组合实现。
图13示出了用于配置如图12中所示的图像处理流水线1200的示例性系统1300。更具体地,示例性系统1300可包括用于自动生成实现流水线1200的计算机代码的功能,使其实现如图1中所示的图像处理操作的任何组合。
为了以上述方式运作,系统1300包括配置模块1302。配置模块1302接收定义经配置的流水线应满足的要求的流水线要求信息1304。要求信息1304可具有多个组分。输入要求组分1306定义期望流水线接收的图像信息的特征。输入要求组分1306可定义可被处理的单种图像信息,或可定义可被处理的一组许可的多种图像信息。方便地指定许可的输入信息的多个特征的一种方式是指定所使用的视频编码标准,它隐含图像信息拥有的全部特征,诸如许可色空间、色度二次取样方案、伽马传递函数等。例如,ITU-R Recommendation BT.601是定义图像信息的工作室数字编码的国际标准。该标准使用图像信息的Y′CbCr编码。ITU-R RecommendationBT.709是定义高精确度视频信息的工作室编码的国际标准。高清晰度(HD)内容表示具有高于标准清晰度(SD)的视频内容,一般为1920×1080、1280×720等。这些仅是图像信息流水线可处理的众多视频编码标准中的两个。
输出要求组分1308定义期望流水线输出的图像信息的特征。即,输出要求组分1308可定义可被生成来适于特定输出设备的单种图像信息,或可定义可被生成来适应不同种类的输出设备的一组许可的多种图像信息。再一次,方便地指定许可的输入信息的多个特征的一种方式是指定所使用的视频编码标准。
中间处理要求组分1310定义流水线应对输入图像信息执行的处理任务的特性。可指定多个处理任务,包括但不限于,调整大小(缩放)、合成、阿尔法混合、边缘检测等。
一般,操作人员可手动地选择流水线要求1304。或者,一个或多个要求1304可由其中将采用流水线的环境来自动推断。
给定输入流水线要求1304,配置模块1302执行使用静态分析来与代码模块库1312交互的的任务以组装满足流水线要求1304的代码模块的自定义集合。这样做的一种方式是生成将任何种类的输入信息映射到涉及任何种类的中间处理的任何种类的输出信息的主方程。该主方程将包括多个组分。组分与存储在库1312中的相应的代码模块相关联。在此实现中,配置模块1302执行通过去除鉴于输入流水线要求1304而不必要的所有组分来编译自定义的代码模块集合的任务。这具有从库1312中选择某些代码模块并略去其它模块的效果。
由配置模块1302执行的处理的结果是优化的流水线代码1314,它可被应用来处理图像信息。流线化该代码1314以便仅执行所需的功能。结果,基于该代码建立的流水线具有以比例如具有用于处理众多不同任务、在特定应用中可能永远不会采用的各种链接的子例程的大型包罗万象的程序更快的方式执行其操作的可能性。
仅举一个示例,假定特定应用中的视频流水线任务是将隔行的4:2:2 Y′CbCr图像信息转换到中间线性逐行4:4:4 RGB色空间、在RGB色空间中执行合成、然后将所得的经处理的信息输出到电视机。这一连串的操作调用某些操作(例如,过采样、转移矩阵转换、传递函数应用、合成等),但不调用其它操作。从而,配置模块1302将仅产生执行所需计算所必要的代码,而不产生其它。
在包括或略去模块的上下文中描述了配置操作。然而,更多高级配置功能可执行其它优化操作,诸如以特定有效方式组合所选代码模块、去除所选代码模块公有的冗余代码等。
存在实现配置模块1302的多种方式。实现该功能的一种方式是利用现有的配置工具(例如,常规C++编译器),它们已经拥有分析源代码并去除冗余代码的能力,且对通过挑选和选择适当模块来优化流水线代码的手边任务应用这样的功能。
图14示出了以流程图形式概述以上讨论的过程1400。步骤1402需要输入视频流水线要求。步骤1404需要确定满足输入要求的最优代码。步骤1406需要输出和执行最优代码。
B.2.GPU的一般使用以执行图像处理图15示出了可用于实现图12中所示的图像流水线的各个方面(以及,更抽象地,图1中所示的视频处理操作100)的示例性系统1500的概观。系统1500可表示包含一个或多个CPU的计算机(诸如个人计算机)。系统1500将图1中所示的某些图像处理任务(或所有图像处理任务)分配给图形模块功能。图形处理功能可包括一个或多个图形处理单元(在本领域中称为GPU)。一般,图15包括将可由系统1500的CPU执行的功能从可由系统1500的图形模块功能执行的功能中划分出来的虚线(但这种划分仅是示例性的;有可能有其它CPU/GPU分配)。
作为背景,GPU一般是如CPU但一般具有较少执行分支型决策能力的处理设备。系统一般使用GPU来执行重复执行的信息密集型呈现任务,诸如使用三维处理流水线呈现信息(涉及顶点阴影着色器、像素阴影着色器等)。GPU使用的支柱从而是游戏和模拟技术,它使用GPU来呈现各种场景、角色、特效等。向GPU分配重复或信息密集型任务释放了系统的CPU以执行其它高端管理任务,因此改进了这一系统的性能。在当前情况中,系统1500在将所接收的图像信息(例如,视频信息)输出到任何种类的输出设备之前采用图形模块功能来对其进行修改而非生成游戏信息。例如,系统1500的一种应用是从DVD接收视频信息,在图形功能内对视频信息执行合成(例如,通过将文本文字组合到视频信息上),然后将所得的信号输出到电视单元。
使用以上概观,图15的示例性组件中的每一个将在以下依次描述。稍后的小节(B.3)将提供关于可如何采用图形模块功能来实现图1中所示的流水线100的各方面的更具体的信息。
首先,系统1500接受来自多个源中的任一个的信息。例如,系统1500可接受来自网络1502(诸如耦合至因特网的远程源)、任何种类的数据库1504、任何种类的计算机可读盘介质1506(诸如光盘、DVD等)或某些其它源的图像信息。在任何情况中,所接收的信息可包含图像信息和音频信息的组合。多路分配器单元1510将音频信息与图像信息分离。音频处理功能1512处理音频信息。
图像解码器1514处理图像信息。图像解码器1514可将经压缩的图像信息从其接收到的格式转换成某种其它格式等。图像解码器1514的输出可包括所谓的纯图像信息以及图像子流信息。纯图像信息构成将在显示设备上呈现的主要图形流。图像子流信息可构成与纯图像信息相关联的任何补充信息,诸如嵌入字幕信息、任何种类的图形覆盖信息(诸如各种图形编辑控件)、由DVD播放器呈现的各种类型的子图像等。(在另一实现中,视频解码器的某些方面可被分配给图形模块功能。)在一个示例性实现中,视频混合呈现器(VMR)模块1516在对如此接收到的图像信息的处理中扮演中央角色。作为概观,VMR模块1516与图形接口1518和显示驱动器1520交互,显示驱动器1520又控制图形模块1522。这种交互可涉及探查图形模块1522的能力。这种交互也涉及协调图形接口1518、显示器驱动器1520和图形模块1522对图像信息的处理。在一种实现中,图形接口1318可使用由Microsoft公司的DirectX提供的DirectDraw功能来实现。DirectDraw在这种环境下用作用于将VMR模块1516通信耦合至图形模块1522的消息通信管道。图形模块1522自己可构成计算机或类似设备内的固定模块,或它可构成可拆单元,诸如图形卡。(一般,在本公开的第一节中提及的共同转让的申请提供了关于VMR模块1516可用来与图形模块1522交互的示例性数据结构的细节;由于交互不是本公开的重点,因此这样的交互的细节将不在此重复。)
图形模块1522本身包括一个或多个图形处理单元(GPU)1524。如上所述,系统可将图1中所示的处理操作的任何组合分配给GPU 1524。GPU 1524使用像素阴影着色器1526执行这些任务。像素阴影着色器指的是可在逐个像素的基础上对图像信息执行各种操作的功能。小节B.3提供关于典型的像素阴影着色器的体系结构以及可如何采用这样的技术来执行图1中所示的操作的其它信息。
GPU 1524可与同图形模块1522相关联的本地存储器1528交互。该本地存储器1528可适应任何数量的存储相关目的。例如,该存储器1528可存储最终图像表面,它然后被转发给输出设备1530(诸如,显示监视器、电视单元、存储设备、网络目标等)。
B.3.像素阴影着色器相关的改进作为背景,图16示出在3D处理流水线中通常使用的像素阴影着色器1600的已知体系结构。典型的像素阴影着色器应用中的每一像素可由四个浮点值的向量表示,例如RGBA(红、绿、蓝、阿尔法),其中每一值对应于一单独的通道。像素阴影着色器1600的体系结构包括一连串输入/输出寄存器(1602、1604、1606、1608),以及用于对输入数据执行操作的算术逻辑单元(ALU)1610。更具体地,寄存器包括色彩寄存器1602。这些寄存器1602将迭代的顶点色彩数据从顶点阴影着色器(未示出)流传送到像素阴影着色器1600。常量寄存器1604向像素阴影着色器1600提供用户定义的常量。输出/临时寄存器1606为中间计算提供了临时存储。在该寄存器集中,寄存器r0也接收像素阴影着色器1600的输出。纹理寄存器1608向像素阴影着色器ALU 1610提供纹理数据。像素阴影着色器ALU 1610基于一程序来执行算术和纹理寻址指令。该程序包括从一组许可的像素阴影着色器命令中选出的指令的集合。
随后的讨论将具体关注于使用纹理寄存器1608(此后,更一般地被称为“单元”)来向像素阴影着色器ALU 1610馈送图像信息和滤波器权重。从而,将提供关于图17的环境中的纹理的概念的其它介绍性信息。
不严格地描述,在游戏应用中,纹理定义被“粘贴”到定义角色、场景等的多边形表面上的图像。图17示出了其中纹理1702被应用于多边形1704的纹理应用操作1700。多边形1704由被组装来形成矩形的两个三角形图元组成。多边形1704包括四个顶点,V1、V2、V3和V4。每一顶点包括纹理坐标。纹理坐标参考常规的U和V参考体系来指定。在该参考体系中,U坐标一般对应于X轴,V坐标一般对应于Y轴。U轴中的值被限制到0.0到1.0的范围中,V轴中的值同样被限制到0.0到1.0的范围中。
与顶点相关联的纹理坐标指定纹理1702将被如何置于多边形1704上。在图17的示例性情况中,顶点V1具有纹理坐标0.0,0.0,这对应于纹理1702的左上角。顶点V2具有纹理坐标1.0,0.0,这对应于表面1702的右上角。顶点V3具有纹理坐标0.0,0.5,这对应于纹理1702的左边缘的中间。顶点V4具有纹理坐标1.0,0.5,这对应于纹理1702的右边缘的中间。从而,当根据纹理坐标将纹理1702映射到多边形1704时,仅将纹理1702的上半部分应用到多边形1704。纹理1702对多边形1704的应用的结果在纹理化的表面1706中示出。
3D处理流水线一般允许在游戏信息生成的环境中开发的多个特殊纹理处理操作。一个特殊操作被称为绕回(wrap)模式。在绕回模式中,3D处理流水线将多次重复一纹理,例如在一个情况中以便产生具有相同内容的一行或一个矩阵的纹理。镜像(mirror)模式也复制相邻的纹理,但如镜子般翻转(反射)纹理。
关于一般本质的任何像素阴影着色器主题的其它信息可在多个市场上出售的文本中找到,诸如Wolfgang F.Engel的Direct3D ShaderXVertex and Pixel ShaderTips and Tricks,Wordware出版公司,2002。
使用以上介绍,其余的讨论描述了用于使用像素阴影着色器来实现图1中所示的图像处理流水线的各方面的示例性新颖的技术。
一开始,图18示出了实现具有带有4个抽头的内核的图像处理滤波器的像素阴影着色器1526(图15)的示例性应用1800。由于图18中所示的那种类型的处理对由图1的流水线100执行的众多其它操作也是基础性的,因此参考图18描述的原理应用于可由像素阴影着色器1526执行的其它种类的处理。四抽头滤波器内核的情况当然仅是示例性的;稍后的示例解释该模型可如何被扩展成不同的滤波器设计。
一般,GPU 1524可被配置成扫描过一个或多个输入图像,从每一个图像中提取像素值,基于输入应用计算并输出单个像素。该操作可被表示为输出(x,y)=函数(输入1(x,y),输入2(x,y),...输入p(x,y),数组常量[m])。换言之,该一般表示表明结果(输出(x,y))数学上取决于各种输入信号(输入1(x,y),输入2(x,y),...输入p(x,y))和可任选地各种定义的常数(数组常数[m])的某种函数。
在使用滤波器的图像处理的特定环境中,像素阴影着色器1526需要输入一个或多个输入图像以及将应用于这些图像的相关联的滤波器权重。更正式地,生成与输出像素相关联的输出(Out[x])的滤波器可定义如下Out[x]=sum(in[x-taps/2+i]*kernel[i],i=0...taps-1)换言之,像素的输出(Out[x])表示不同输入项的加权和。内核表示将应用于各输入项的权重信息。不同的输入项又可表示对输入图像信息的同一选段的移位的形式。
图18示出了像素阴影着色器1526如何可实现以上公式。所示的四抽头示例1800示出了对像素阴影着色器ALU 1804提供输入的一连串纹理单元1802。所示方法是将滤波器权重分配给第一纹理单元,并将同一图像信息的四个不同的增量移位版本分配给接下来的四个纹理单元(表示内核的四个抽头)。像素阴影着色器ALU 1804读入纹理单元中所存储的信息(在单个读操作中),并为特定像素提供单个输出(在单个写操作中)。重复该过程多次以处理整个图像。该方法定义带有“Taps”滤波器抽头的支持窗口的1-D卷积滤波器。
图18中所示的示例1800的操作可如下更正式表示。所使用的示例性1-D内核具有“w”像素宽的宽度,内核权重为w[-1]、w
、w[2]和w[3]。通过为每一像素计算滤波器内核的四个权重来计算权重纹理。1-D内核也包括定义为in[-1]、in
、in[1]和in[2]的四个输入。符号Δ被定义为1/w。给定这些,以下信息被分配给纹理单元1-5纹理1“权重纹理”,坐标为0...1;纹理2in[-1],坐标为(0...1)+(-1)*Δ(即从0-Δ到1-Δ)的输入图像;纹理3in
,坐标为(0...1)+(0)*Δ的输入图像;纹理4in[1],坐标为(0...1)+(1)*Δ的输入图像;以及纹理5in[2],坐标为(0...1)+(2)*Δ(即从0+2*Δ到1+2*Δ)的输入图像。
如果tn表示从纹理单元“n”取出的像素,则由像素阴影着色器ALU 1804执行的计算可由以下程序表示算法3使用像素阴影着色器实现滤波器Let w
=t1.redLet w[1]=t1.greenLet w[2]=t1.blue
Let w[3]=t1.alphaOut.rgba=t2.rgba*w
+t3.rgba*w[1]+t4.rgba*w[2]+t5.rgba*w[3]换言之,阵列w首先被分配存储在第一纹理单元(t1)中的加权信息的值。然后,通过以权重w修改纹理单元t2-t5中所包含的经移位的图像信息来形成输出结果(Out.rgba)。附加到寄存器信息的下标定义通道信息。从而,输出Out.rgba表示存储在红、绿、蓝和阿尔法通道中的四个浮点的向量。可见,以上算法需要“taps”+1个输入纹理单元,例如因为一个单元被分配来存储权重信息。
一般,当输入图像信息以RGB格式表示时,则纹理单元可存储等量的红、绿和蓝分量。然而,当将像素阴影着色器应用于处理亮度相关图像信息(诸如YUV)时,则纹理单元相对于色度信息(U、V)可存储较多的亮度信息。这种规定利用人眼对亮度信息比色度信息更敏感的事实,因此不必要存储和处理与亮度信息一样多的色度信息以达到可接受的输出结果。
构想了上述方法的多个变型和优化。
根据一种变型,上述绕回模式可用于将任何纹理作为图像信息的无限瓦片(tile)来处理。使用这种模式,一种方法是设置0到1.0/gcd(SourceWidth,DestinationWidth)而不是0...1的输入权重纹理的坐标。在应用该纹理时,纹理预取单元将自动“绕回”至存储在纹理中的权重信息的下一副本。这种规定允许设计者减少内核的存储需求,同时仍确保当有需要时其信息将被重复应用。
根据另一变型,内核可具有4个以上抽头。为解决这种情况,一种实现可将内核权重信息集分解为一组四个的值,并将每一值分配给附加的输入“权重”纹理。考虑其中有6个抽头的情况。在这种情况中,实现可使用两个权重纹理(第一纹理具有4个值,第二纹理具有其余的2个值,剩下2个槽未使用)。这种实现也要求6个输入图像纹理。因此,为实现这种设计,可使用8个纹理GPU来单遍执行使用6个抽头的滤波。
根据另一变型,抽头的数目可超过纹理单元的数目。注意,对输出图像信息的计算表示“taps”项的总和。因此,较大数目的抽头可通过将对总和的计算分解成多遍处理来计算。例如,如果滤波器内核具有12个抽头,则一种实现可计算Out[x]=sum(in[x+i]*w[i],i*0..11)为
Suml[x]=sum(in[x+i]*w[i],i=0...3)Sum2[x]=sum(in[x+i]*w[i],i=4...8)Sum3[x]=sum(in[x+i]*w[i],i=9...11)该实现然后可使用最后一遍来组合结果Out[x]=suml[x]+sum2[x]+sum3[x](三个读,一个写)另一种可能的实现可经由以下一连串操作来聚集Out[x]Out[x]=suml[x](写)Out[x]=out[x]+sum2[x](读,读,写)Out[x]=out[x]+sum3[x](读,读,写)后一方法实质上比前一方法要求较少的存储器,但相比前一方法,它也要求了两倍的存储器访问(例如,四个读和三个写)。后一策略的这种特征可使其不可行,因为GPU上的读-修改-写循环是非常耗时的,或可能被禁止的。
根据另一变型,一种实现可提供将定义的图像信息以外的所有像素作为黑色(或某个其它默认值)来处理的特殊模型(“削除像素(kill pixel)”)。这种规定可被应用来对不应显示的图像自动“隐藏”边缘条件。
根据另一变型,一种实现可在处理图像信息时应用上述镜像模式。该模式在参考图像信息边界以外的图像信息时以水平或垂直中任一种方式反射图像信息。
图19示出了概述上述特征中的多个的过程1900。步骤1902需要将各种输入信息分配给像素阴影着色器的各个输入单元。这样的信息可包括应用于纹理单元的图像信息和权重信息、应用于各个常量单元的常量等。步骤1904需要基于对像素阴影着色器ALU 1804提供的编程指令在逐个像素的基础上计算输出图像信息。步骤1906确定是否还需要额外的遍数。如果是,则过程1900一次或多次重复图19中所示的操作中的一个或多个。步骤1908产生最终输出结果。
作为最后一个主题,图20示出了执行在图1的环境中介绍的若干操作的像素阴影着色器1526的应用。图20尤其关注其中流水线接收4:2:2 YUV图像信息、对其过采样、将其转换成线性RGB形式并对所得的线性信息执行缩放的一个示例性应用。图20中所示的处理是基于以上参考图18和19形成的概念。
注意,以混合平面格式(诸如NV12)表示的4:2:0图像信息可作为包括亮度平面和色度平面来对待。从而可能并行地对该信息执行某些处理。
一种方法是将纹理单元划分成两个组,一个组用于内插色度分量。该过采样操作调用可用于生成4:4:4的色度信息的缩放放大操作。像素阴影着色器1526然后可使用亮度和内插的色度分量,使用转移矩阵在逐个像素的基础上计算相应的R′G′B′信息。接着,像素阴影着色器1526可应用传递函数以线性化图像信息。然后,像素阴影着色器1526可用于使用第二组纹理单元在RGB空间中执行进一步缩放。
更正式地,以下标识了可用于按上述方式变换图像信息的示例性步骤序列。
1)以上述方式(图18中所示)设置纹理1-5以执行第一缩放操作。
2)使用上述缩放操作以亮度信息两倍的采样速率来计算CbCr信息。
3)将Y′CbCr到R′G′B′色空间转换矩阵加载到16个常量的数组内,作为矩阵M。
4)按以下方式计算R′G′B′信息计算R′=dotProd4(M
,aY′CbCr)计算G′=dotProd4(M[1],aY′CbCr)计算B′=dotProd4(M[2],aY′CbCr)计算A′=dotProd4(M[3],aY′CbCr)5)使用传递函数从R′G′B′中计算RGB。
6)通过使用上述的算法(参考图18)但使用纹理6-12计算经缩放的线性RGB数据来执行第二缩放操作。
7)当执行了水平缩放之后,对RGB信息应用垂直缩放。
图20示出了以流程图形式解释上述算法的过程2000。步骤2002涉及将信息分配给适当的纹理单元(例如,第一组纹理单元)。步骤2004需要使用第一组纹理单元来对色度信息进行过采样。步骤2006需要将执行色空间转换所使用的常量加载到像素阴影着色器1526内。步骤2008需要使用常量来将图像信息转换成非线性的R′G′B′形式。步骤2010需要将R′G′B′信息转换成线性RGB形式。而步骤2012需要缩放RGB信息。
C.示例性计算机环境在一个示例性实现中,在之前的附图中所示的处理的各个方面可由计算装置执行。在这种情况中,图21提供了关于可用于实现之前的附图中所示的处理的各个方面的示例性计算机环境2100的信息。例如,计算机可用于实现图1中所示的图像处理流水线的部分或全部。
计算环境2100包括通用型计算机2102和显示设备2104。然而,计算环境2100可包括其它种类的计算装置。例如,尽管未示出,但计算机环境2100可包括手持式或膝上型设备、机顶盒、游戏控制台、集成到视频处理/呈现设备(例如,电视、DVD等)的处理功能、大型机等。此外,图21示出了组合在一起以便于讨论的计算机环境2100的元件。然而,计算环境2100可采用分布式处理配置。在分布式计算环境中,计算资源可在整个环境中物理分散。
示例性计算机2102包括一个或多个处理器或处理单元2106、系统存储器2108和总线2110。总线2110将各种系统组件连接在一起。例如,总线2110将处理器2106连接至系统存储器2108。总线2110可使用任何种类的总线结构或总线结构的组合实现,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用各种总线体系结构中任一种的处理器或本地总线。计算机2102也可以上述方式耦合至一个或多个GPU单元(未示出)。
计算机2102也可包括各种计算机可读介质,包括各种类型的易失性和非易失性介质,其中的每一个可以是可移动或不可移动的。例如,系统存储器2108包括易失性存储器形式的计算机可读介质,诸如随机存取存储器(RAM)2112,以及非易失性存储器形式的计算机可读介质,诸如只读存储器(ROM)2214。ROM 2114包括包含有助于诸如启动时在计算机2102内元件之间传递信息的基本例程的输入/输出(BIOS)2116。RAM 2112一般包含可由处理单元2106迅速访问的形式的数据和/或程序模块。
其它种类的计算机存储介质包括用于从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器2118,从可移动、非易失性磁盘2122(例如,“软盘”)中读取或向其写入的磁盘驱动器2120,以及从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘2126中读取或向其写入的光盘驱动器2124。硬盘驱动器2118、磁盘驱动器2120和光盘驱动器2124各自通过一个或多个数据介质接口2128连接至系统总线2110。或者,硬盘驱动器2118、磁盘驱动器2120和光盘驱动器2124可由SCSI接口(未示出)或其它耦合机制连接至系统总线2110。尽管未示出,但计算机2102可包括其它类型的计算机可读介质,诸如磁带或其它磁存储介质、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光学存储、电可擦可编程只读存储器(EEPROM)等。
一般,上述计算机可读介质提供对由计算机2102使用的计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。例如,可读介质可存储操作系统2130、应用程序模块2132、其它程序模块2134以及程序数据2136。
计算机环境2100可包括各种输入设备。例如,计算机环境2100包括用于向计算机2102输入命令和信息的键盘2138和定点设备2140(例如,“鼠标”)。计算机环境2100可包括其它输入设备(未示出),诸如麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪、读卡设备、数码相机或数码摄影机等。输入/输出接口2142将输入设备耦合至处理单元2106。更一般地,输入设备可经由任何种类的接口和总线结构耦合至计算机2102,诸如并行端口、串行端口、游戏端口、通用串行总线(USB)端口等。
计算机环境2100还包括显示设备2104。视频适配器2144将显示设备2104耦合至总线2110。除显示设备2104以外,计算机环境2100可包括其它输出外围设备,诸如扬声器(未示出)、打印机(未示出)等。
计算机2102使用与诸如远程计算设备2146等一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算设备2146可包括任何种类的计算机装置,包括通用个人计算机、便携式计算机、服务器、游戏控制台、网络扩充设备等。远程计算设备2146可包括以上参考计算机2102讨论的所有特征或其某个子集。
可使用任何类型的网络2148使计算机2102与远程计算设备2146耦合,诸如WAN、LAN等。计算机2102经由网络接口耦合至网络2148,该接口可利用宽带连接、调制解调器连接、DSL连接或其它连接策略。尽管未示出,但计算环境2100可提供用于使计算机2102与远程计算设备2146连接的无线通信功能(诸如,经由已调制无线电信号、已调制红外线信号等)。
作为结束,在本公开中以替换方式(例如,情况A或情况B)提供了多个示例。此外,本公开包括在单个实现中组合替换的情况(例如,情况A和情况B),即使本公开可能没有在每个示例中明示这些结合的情况。
而且,此处通过首先标识特征可解决的示例性问题来描述了这多个特征。这种方式的说明并不承认他人已经以此处指定的方式理解和/或明白表示了这些问题。对视频处理领域中存在的问题的理解和明白表示将被理解为本发明的一部分。
尽管以结构特征和/或方法动作专用的语言描述了本发明,但可理解,在所附权利要求书中定义的本发明不必限于所述的具体特征或动作。相反,这些具体特征和动作是作为实现要求保护的本发明的示例性形式而公开的。
权利要求
1.一种用于以线性形式处理图像信息的方法,包括接收隔行非线性形式的图像信息;通过对所述图像信息应用传递函数将所述图像信息转换成线性形式;通过对所述图像信息去隔行将所述图像信息转换成逐行形式;以及对所述逐行线性形式的图像信息执行处理。
2.如权利要求1所述的方法,其特征在于,所述接收到的图像信息位于亮度相关色空间中。
3.如权利要求2所述的方法,其特征在于,还包括在将所述图像信息转换成线性形式之前,通过对所述图像信息应用转换矩阵将所述图像信息转换到非线性R′G′B′色空间。
4.如权利要求3所述的方法,其特征在于,所述将图像信息转换成线性形式包括应用所述传递函数以将所述图像信息从所述R′G′B′色空间转换到线性的RGB色空间。
5.如权利要求1所述的方法,其特征在于,所述处理包括调整所述图像信息的大小。
6.如权利要求1所述的方法,其特征在于,所述处理包括对所述图像信息执行合成操作。
7.如权利要求1所述的方法,其特征在于,所述处理包括对所述图像执行阿尔法混合。
8.如权利要求1所述的方法,其特征在于,所述处理包括对所述图像信息执行边缘检测。
9.如权利要求1所述的方法,其特征在于,所述接收到的图像信息位于亮度相关色空间中,且所述接收到的图像信息具有相对于亮度样本较少的色度样本。
10.如权利要求9所述的方法,其特征在于,还包括对所述接收到的图像信息进行过采样,以增加相对于所述亮度样本数目的色度样本数目。
11.如权利要求10所述的方法,其特征在于,所述过采样产生全通道的4:4:4图像信息。
12.如权利要求10所述的方法,其特征在于,所述接收到的图像信息是4:2:0格式的,且由所述去隔行和所述过采样执行的分析被集成在一起。
13.如权利要求1所述的方法,其特征在于,所述接收到的图像信息被转换成高进动格式。
14.如权利要求13所述的方法,其特征在于,所述高精度格式包括浮点格式。
15.如权利要求14所述的方法,其特征在于,所述浮点格式包括16位浮点格式。
16.如权利要求1所述的方法,其特征在于,还包括在处理了所述图像信息来降低其精度之后,对所述图像信息进行量化并抖动,从而提供经量化的图像信息。
17.如权利要求16所述的方法,其特征在于,所述量化和抖动应用误差分散算法来减少所述经量化的图像信息中的伪影数量,其中所述误差分散算法将误差项分布到正进行处理的图元的相邻图元。
18.如权利要求17所述的方法,其特征在于,所述误差分散算法基于Floyd-Steinberg算法。
19.如权利要求17所述的方法,其特征在于,将噪声添加到由所述误差分散算法执行的量化,使得被量化的值基于原始图像值、误差项值和噪声值以产生量化值。
20.如权利要求19所述的方法,其特征在于,后续量化操作的误差项是通过找出所述原始图像值与所述量化值之差来计算的。
21.如权利要求19所述的方法,其特征在于,所述添加到所述量化的噪声是由具有足够长以使伪影在所述经量化的图像信息中不显现的的重复周期的噪声生成器生成的。
22.如权利要求1所述的方法,其特征在于,所述线性形式包括伪线性形式。
23.如权利要求22所述的方法,其特征在于,所述产生伪线性形式的传递函数应用乘法操作。
24.如权利要求22所述的方法,其特征在于,所述产生伪线性形式的传递函数在输入值接近0的区域中具有线性部分。
25.如权利要求22所述的方法,其特征在于,所述处理涉及将线性型算法应用于所述伪线性形式的图像信息。
26.如权利要求22所述的方法,其特征在于,还包括执行操作以在所述处理之后移除所述图像信息的伪线性形式。
27.如权利要求26所述的方法,其特征在于,还包括,在移除所述伪线性形式之后,将所述图像信息转换成适于指定输出要求的非线性形式。
28.如权利要求27所述的方法,其特征在于,所述移除伪线性形式和转换成适于输出要求的非线性形式被组合成单个操作。
29.如权利要求1所述的方法,其特征在于,所述方法涉及至少一个缩放操作。
30.如权利要求29所述的方法,其特征在于,所述缩放操作采用Catmull-Rom滤波器。
31.如权利要求29所述的方法,其特征在于,所述缩放操作涉及预计算多个滤波器内核,然后应用预计算出的滤波器内核来处理所述图像信息。
32.如权利要求31所述的方法,其特征在于,所述预计算还涉及计算所需的多个滤波器内核,并确定每一内核应具有多少个抽头。
33.如权利要求31所述的方法,其特征在于,所述应用滤波器内核涉及当处理所述图像信息的一行或一列时循环重复一连串所述预计算出的滤波器内核。
34.如权利要求1所述的方法,其特征在于,所述方法定义图像处理流水线,且其中使用优化的代码程序来实现所述图像处理流水线。
35.如权利要求34所述的方法,其特征在于,所述优化的代码由以下步骤产生输入所述图像处理流水线的要求;以及从代码模块库中组装可用于实现所述要求的代码模块,其中不被需要的代码模块在所述优化的模块中不被使用。
36.如权利要求1所述的方法,其特征在于,所述方法中的至少一个操作是使用图形处理单元来执行的。
37.如权利要求36所述的方法,其特征在于,所述方法中的所有操作是使用所述图形处理单元来执行的。
38.如权利要求36所述的方法,其特征在于,所述图形处理单元包括像素阴影着色器。
39.如权利要求38所述的方法,其特征在于,还包括使用所述像素阴影着色器通过以下步骤执行缩放操作将权重信息分配给至少一个纹理单元;将输入图像信息的增量移位形式分配给多个其它纹理单元;以及基于从所述纹理单元接收到的信息使用所述像素阴影着色器来执行操作以提供输出结果。
40.如权利要求39所述的方法,其特征在于,还包括在多个部分输出结果的基础上使用所述像素阴影着色器来执行多个操作以生成最终输出结果。
41.如权利要求40所述的方法,其特征在于,所述多个操作的执行被应用于其中所述缩放操作使用具有超出可用纹理单元数目的多个抽头的滤波器的情况。
42.一种被配置成实现如权利要求1所述的方法的图像处理流水线。
43.一个或多个存储被配置成实现如权利要求1所述的方法的机器可读指令的计算机可读介质。
44.一种用于以线性形式处理图像信息的方法,包括接收非线性形式的图像信息;将所述图像信息转换成高精度线性RGB格式;以及对所述高精度线性RGB格式的图像信息执行处理。
45.一种被配置成实现如权利要求44所述的方法的图像处理流水线。
46.一个或多个存储被配置成实现如权利要求44所述的方法的机器可读指令的计算机可读介质。
47.一种量化并抖动原始图像信息以产生经量化的图像信息的方法,包括量化组合了从所述图像信息中取出的原始值、噪声值和误差项的总和以产生量化值;以及通过计算所述量化值与所述原始值之差来计算供后续的量化操作使用的误差项。
48.一种被配置成实现如权利要求47所述的方法的图像处理流水线。
49.一个或多个存储被配置成实现如权利要求47所述的方法的机器可读指令的计算机可读介质。
50.一种用于以伪线性形式处理图像信息的方法,包括接收非线性形式的图像信息;使用传递函数将所述图像信息转换成伪线性形式;以及使用适用于处理线性信息的至少一个算法对所述伪线性形式的图像信息执行处理。
51.一种被配置成实现如权利要求50所述的方法的图像处理流水线。
52.一个或多个存储被配置成实现如权利要求50所述的方法的机器可读指令的计算机可读介质。
53.一种用于使用滤波器通过以下步骤对图像信息执行缩放操作的方法基于将执行的缩放,计算实现所述滤波器所需的滤波器内核数目以及每一滤波器内核所需的抽头的数目;预计算并存储所述数目的滤波器内核;如果在所述图像信息的行或列中存在多于预计算的滤波器内核的像素元素,则通过重复顺序通过所述滤波器内核将所述滤波器内核应用于所述行或列。
54.一种被配置成实现如权利要求53所述的方法的图像处理流水线。
55.一个或多个存储被配置成实现如权利要求53所述的方法的机器可读指令的计算机可读介质。
56.一种用于生成用于实现图像处理流水线的代码的方法,包括输入所述图像处理流水线的要求;以及从代码模块库中组装可用于实现所述要求的代码模块,其中不需要的代码模块不在所生成的代码中使用。
57.如权利要求56所述的方法,其特征在于,所述代码模块的组装在应用所述图像处理流水线之前使用静态分析来生成用于实现所述图像处理流水线的代码。
58.一种被配置成实现如权利要求56所述的方法的装置。
59.一个或多个存储被配置成实现如权利要求56所述的方法的机器可读指令的计算机可读介质。
60.一种用于使用图形处理单元的像素阴影着色器来执行图像处理流水线中的至少一个处理任务的方法,包括将权重信息分配给所述像素阴影着色器的至少一个纹理单元;将输入图像信息的增量移位形式分配给所述像素阴影着色器的多个其它纹理单元;以及基于来自所述纹理单元的信息使用所述像素阴影着色器来执行操作,从而提供输出结果。
61.一种被配置成实现如权利要求60所述的方法的图像处理流水线。
62.一个或多个存储被配置成实现如权利要求60所述的方法的机器可读指令的计算机可读介质。
全文摘要
描述了用于以线性形式处理图像信息以减少伪影数量(相比以非线性形式处理数据)的策略。示例性的各种处理操作可包括,缩放、合成、阿尔法混合、边缘检测等。在一个更具体的实现中,描述了用于处理a)线性;b)位于RGB色空间中;c)高精度(例如,以浮点表示提供);d)逐行;以及e)全通道的图像信息的策略。其它改进提供用于a)在伪线性空间中处理图像信息以改进处理速度;b)实现改进的误差分散技术;c)动态计算和应用滤波器内核;d)以最优方式产生流水线代码;以及e)使用新颖的像素阴影着色器技术实现各种处理任务的策略。
文档编号H04N5/44GK1981294SQ200580022541
公开日2007年6月13日 申请日期2005年7月28日 优先权日2004年7月29日
发明者D·J·穆瑟尔, G·F·伊万斯, S·L·斯帕尔斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1