具有数据模型的双边滤波器的制作方法

文档序号:19741450发布日期:2020-01-18 05:16阅读:245来源:国知局
具有数据模型的双边滤波器的制作方法



背景技术:

本公开涉及一种对图像中的目标像素进行滤波的方法。

图像滤波器通常用于对图像进行处理。例如,图像滤波器可用于使图像模糊或锐化。图像滤波器的一个示例是双边滤波器。

双边滤波器是用于图像的非线性、边缘保持和降噪平滑滤波器。标准双边滤波器可以基于来自相邻像素的强度值的加权平均值来确定目标像素的已滤波值(i滤波(x))。例如,可以使用内核(ω)内的相邻像素值(i(xi))的加权和,其中该总和中的特定相邻像素的权重基于以下两者:(i)目标像素与相邻像素之间的空间距离(‖xi-x‖),以及(ii)目标像素值与相邻像素值之间的差(‖i(xi)-i(x)‖)。内核(ω)通常是以目标像素(x)为中心的方形内核(例如,3×3或5×5),但通常内核可以是任何合适的形状和大小。

例如,位置x处的已滤波像素值i滤波(x)可以如下给出:

其中d是数据项,通常称为“光度成本函数”,它是目标像素值与相邻像素值之差(i(xi)-i(x))的函数,而g是几何项,它是目标像素与相邻像素之间空间距离(xi-x)的函数;并且k是归一化项,由给出。

数据项(d)和几何项(g)可以例如是高斯函数,例如:

其中σd和σg是平滑参数。

当自变量q设置为像素值差i(xi)-i(x)时,数据项(d)变为:

且类似地,当自变量q设置为空间距离xi-x时,几何项(g)变为:

函数d()和g()两者都是高斯函数,不同之处仅在于平滑参数σd和σg。

然而,标准双边滤波器通常产生扁平化的输出,从而产生“油画”效果,由此使细微的梯度扁平化,并将假边缘引入到已滤波图像中。



技术实现要素:

提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

根据本发明的第一方面,提供了一种对图像中的目标像素进行滤波的方法,该方法包括:对于包括目标像素及其相邻像素的像素内核,形成数据模型,以对内核内的像素值进行建模;计算内核的每个像素的权重,其包括:(i)取决于该像素与目标像素之间的位置差异的几何项;以及(ii)取决于该像素的像素值与其根据数据模型的预测像素值之间的差异的数据项;以及使用内核中像素的计算权重来形成目标像素的已滤波像素值。

使用所述计算权重可以包括:使用内核的像素的计算权重,利用加权回归分析技术来更新数据模型;以及在目标像素位置处评估已更新数据模型,以便形成目标像素的已滤波像素值。

该方法还可以包括执行计算和更新步骤的一次或多次迭代,其中使用前一次迭代的已更新数据模型来计算已更新权重。

更新数据模型可以包括最小化由数据模型预测的内核的像素值与内核的对应实际像素值之间的平方残差的加权和。

加权回归分析技术可以包括执行加权最小二乘法。

加权回归分析技术可以包括执行加权局部梯度测量方法。

形成数据模型可以包括将第一滤波器应用于内核以便形成目标像素值以用于计算权重。

第一滤波器可以是双边滤波器。

数据模型可以由包括目标像素的位置处的一个或多个梯度参数β和估计值的一个或多个参数来定义,并且其中形成数据模型包括选择定义适合用于对内核内的像素值进行建模的曲线或曲面的数据模型,以及将数据模型的一个或多个梯度参数设置为零。

数据模型可以是双线性数据模型、线性数据模型、双二次数据模型、二次数据模型、参数化数据模型或多项式数据模型。

每个像素值可以包括相应像素的一个或多个特征。

每个特征可以是深度信息、描述图像中标识的表面的法向矢量的信息、纹理信息、辉度(luma)、亮度(luminance)、色度(chrominance)、明度(brightness)、照度(lightness)、色调(hue)、饱和度(saturation)、彩度(chroma)、色彩(colourfulness)或任何颜色分量中的一项或多项。

该方法还可以包括:根据任何前述权利要求,形成第一通道的目标像素的已滤波像素值;以及根据第二数据模型,形成第二通道的目标像素的第二已滤波像素值,方式是:对于包括目标像素及其相邻像素的像素内核,形成第二数据模型,以对由内核内的像素值表示的第二特征进行建模;计算内核的每个像素的权重,其包括:(i)取决于该像素与目标像素之间的位置差异的几何项;以及(ii)取决于该像素的像素值与其根据第二数据模型的预测像素值之间的差异的数据项;以及使用内核中像素的计算权重来形成目标像素的第二已滤波像素值。

内核可以关于目标像素对称。

内核可以关于目标像素不对称。

滤波可以是交叉滤波,使得已滤波像素值在第一通道中,并且数据项取决于第二通道中的像素值差。

数据项可以取决于多于一个通道中的像素值差。

形成数据模型可以包括:根据从位于内核内的像素对确定的多个像素值差的总和,确定x和y两个方向上的平均梯度(β);基于所确定的平均梯度,从内核中的每个像素,确定目标像素位置处的估计像素值通过执行从内核中的每个像素确定的估计像素值的加权和,来确定目标像素位置处的模型像素值

根据本发明的第二方面,提供了一种用于对图像中的目标像素进行滤波的数据处理系统,该数据处理系统包括:数据模型形成单元,其被配置为对于包括目标像素以及其相邻像素的像素内核,形成数据模型,以对内核内的像素值进行建模;权重计算单元,其被配置为计算内核的每个像素的权重,其包括:(i)取决于该像素与目标像素之间的位置差异的几何项;以及(ii)取决于该像素的像素值与其根据数据模型的预测像素值之间的差异的数据项;数据建模单元,其被配置为使用内核中像素的计算权重来形成目标像素的已滤波像素值。

数据建模单元可以包括:数据模型更新单元,其被配置为使用内核的像素的计算权重,利用加权回归分析技术来更新数据模型;以及数据模型评估单元,其被配置为评估目标像素位置处的已更新数据模型,以形成目标像素的已滤波像素值。

该数据处理系统可以被配置为执行权重计算单元中的计算以及数据模型更新单元中的更新的一次或多次迭代,其中权重计算单元被配置为使用先前迭代的已更新数据模型来计算已更新权重。

数据模型更新单元可以被配置为通过最小化由数据模型预测的内核的像素值与内核的对应实际像素值之间的平方残差的加权和,来更新数据模型。

数据模型可以由包括目标像素的位置处的一个或多个梯度参数β和估计值的一个或多个参数来定义,并且其中数据模型形成单元被配置为选择定义适合用于对内核内的像素值进行建模的曲线或曲面的数据模型,以及将数据模型的一个或多个梯度参数设置为零。

还提供了一种数据处理系统,其被配置为执行本文描述的方法。数据处理系统可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统中制造数据处理系统的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集配置系统以制造数据处理系统。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理时,该计算机可读描述使集成电路制造系统制造数据处理系统。

还可以提供一种集成电路制造系统,该系统包括:非暂时性计算机可读存储介质,其上存储有描述数据处理系统的计算机可读集成电路描述;布局处理系统,其被配置为处理集成电路描述,以便生成体现数据处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造数据处理系统。

可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,该指令使计算机系统执行如本文所述的方法。

附图说明

参考附图以示例的方式描述本发明。在附图中:

图1描绘了用于对图像进行滤波的系统。

图2示意性地描绘了五个像素的内核的数据模型。

图3是示出用于对图像进行滤波的系统的示例性迭代实现方式的流程图。

图4描绘了示例性图像滤波系统。

图5a描绘了输入图像。

图5b描绘了使用标准双边滤波器对图5a的输入图像进行滤波的结果。

图5c描绘了使用本文描述的用于对图像进行滤波的系统来对图5a的输入图像进行滤波的结果。

图6是集成电路制造系统的示意图。

具体实施方式

通过示例的方式呈现以下描述以使得本领域技术人员能够实施和使用本发明。本发明不限于本文所述的示例,并且对所公开的实施方案的各种修改对于本领域技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。

本文描述的示例涉及双边滤波器,然而,它们也可以适用于其他图像滤波器。

标准双边滤波器通常会使细微的梯度“扁平化”并将假边缘引入到已滤波图像中。发生这种情况的一个原因是因为数据项(d)倾向于将像素值偏向于与相邻像素值相同。也就是说,当相邻像素具有与目标像素相似的值时,数据项(d)在加权组合中占较大的比重。换句话说,数据项(d)假设与目标像素相关的像素具有相似的值。然而,满足该假设的均匀像素值的区域在大多数实像中非常罕见。也就是说,在存在于实像中的像素值之间通常存在至少一些梯度。

本文提供了用于对目标像素值进行滤波的替代方法。可以形成数据模型,用于对图像的像素值的变化进行建模。可以使用加权线性回归技术,将数据模型拟合到图像的像素值。在拟合期间应用于图像的像素值的权重基于传统上由双边滤波器方程定义的权重。也就是说,权重可以包括如上所述的数据项和几何项,但是与传统的双边滤波器相比,数据项还取决于数据模型本身。可以在目标像素位置处评估已更新数据模型,以便为目标像素提供已滤波值。因此,目标像素的权重、数据模型和已滤波值是相互依赖的,并且可以迭代地细化。

根据本公开的图像滤波器为图像中的软梯度提供了良好的建模和良好的去噪,并且产生很少的或不产生扁平化伪像。示例如图5a至5c所示。图5a描绘了输入图像;图5b描绘了使用标准双边滤波器来对图5a的输入图像进行滤波的结果;而图5c描绘了使用本文所述的用于对图像进行滤波的系统来对图5a的输入图像进行滤波的结果。从图5b中可以看出,标准双边滤波器可以使细微的梯度扁平化,从而在图像中产生轻微斑驳(“油画”)效果;而图5c中的图像在具有轻微梯度的部分更平滑,同时仍然保留边缘。

图1描绘了用于对图像进行滤波的系统101。系统101可以包括数据模型形成单元102、权重计算单元103和数据建模单元107。数据建模单元107可以包括数据模型更新单元104和模型评估单元105。该系统还可以包括迭代循环106。

图像被输入到系统。图像可以是例如静止图像或视频帧。图像可包括多个像素。输入可以表示图像的所有像素,或图像的像素的子集。系统的输出可以是图像的一个或多个已滤波像素。可以对输入的像素的全部像素或子集进行滤波并从系统输出。

数据模型

根据以下示例,数据模型形成单元102可以形成数据模型以对内核内的像素值进行建模。数据模型可以适合于对输入到系统中的图像的内核内的像素值进行建模。例如,数据模型可以是内核内的像素值的一阶或更高阶数据模型。

数据模型可用于对一个或多个内核内的像素值的变化进行建模。每个内核可以包括要滤波的目标像素和多个相邻像素。数据模型可以对目标像素周围的局部梯度进行建模。内核(ω)可以是任何合适的大小和/或形状。通常,内核可以是以目标像素(x)为中心的方形内核(例如,3×3或5×5像素)。对于去噪应用,可以认为以目标像素(x)为中心的9×9像素的内核是合适的。在一些示例中,内核可以是不对称的。内核也可能不以目标像素为中心。

数据模型可用于对与内核中的像素相关联的一个或多个值的变化进行建模。每个像素值可以包括相应像素的一个或多个特征。例如,由像素值表示的特征可以包括辉度、亮度、色度、明度、照度、色调、饱和度、彩度、色彩或任何颜色分量,例如红色、绿色或蓝色分量。例如,数据模型可以对与像素相关联的亮度(y)值的变化进行建模。在其他示例中,数据模型可以对色度(uv),或红色(r)、绿色(g)或蓝色(b)分量、辉度、亮度、色度、明度、照度、色调、饱和度、彩度、色彩或任何颜色分量中的任何一项或多项进行建模。还可以对其他像素值(例如在与图像相关联的深度图、法线图或反照率图(表面纹理)中指出的像素值)的变化进行建模。在一些示例中,可以生成多个模型,每个模型对不同特征的像素值的变化进行建模。

可以通过在数据模型形成单元102中选择表示曲线或曲面的模型来形成数据模型。曲线或曲面可以具有任意阶。在优选的示例中,数据模型是双线性模型。双线性模型是两个变量的函数,这两个变量是独立线性的。双线性模型可以对“x”和“y”两个方向上的像素值的变化进行建模。因此,双线性模型特别适用于对二维图像的滤波。在一个示例中,双线性模型可以是:

其中β表示2d梯度,并且表示为矢量,即β=[βx,βy],而是目标像素值(x)的位置处的估计值。在此示例中,双线性数据模型表示平面,其中该平面上的点可以表示为以下各项之和:(i)目标像素位置x处的估计值,以及(ii)2d梯度β与要加权的相邻像素和目标像素之间的位置差异(xi-x)的矢量乘法(点积)的结果。在一些示例中,目标像素可以被定义为在滤波器内核的坐标系的原点处(即,在x=[0,0]),使得数据模型可以更简单地表示为

数据项

形成的数据模型可以并入数据项中。根据本文定义的示例的数据项可以基于传统上在双边滤波器方程中定义的数据项。如上面简要描述的,该修改的数据项和几何项可以用于将数据模型拟合到内核内的像素。数据模型可以使数据项能够考虑通常存在于实像中的相邻像素之间的变化。

在一个示例中,根据本文给出的示例,用于对目标像素值进行滤波的数据项可以是:

其中i(xi)是位置xi处的相邻像素值,而是目标像素值的当前或运行估计值。

在仅以非迭代方式使用滤波器的情况下,或者对于包括迭代循环106的滤波器的第一次迭代,目标像素值的当前或运行估计值可以是输入到系统的目标像素的值i(x)。对于第二次和随后的迭代,目标像素值的当前或运行估计值可以是在先前迭代中估计的目标像素值的值。

数据模型可以表示图像的像素内核的每个像素的预测值。也就是说,位置xi处的数据模型的值可以表示内核内的该位置处的像素的预测值。

例如,图2示意性地描绘了为五个像素202、203、204、205和206的内核生成的数据模型207。内核包括位于目标像素202的任一侧的两个像素。数据模型207可以是双线性数据模型,其中在图2中描绘了仅按一个维度(例如x或y)的位置表示的像素值的变化。数据模型207对内核内的像素202、203、204、205和206的像素值的变化进行建模。示意性地,可以从数据模型207读取内核中的每个相邻像素位置的预测像素值。

通过将数据模型并入数据项中,每个相邻像素的权重可以取决于每个相邻像素的实际值与根据数据模型为该像素预测的值之间的差异。以这种方式,如果某一相邻像素具有更接近模型所预测的值的值,则可以增大滤波过程中的每个该相邻像素的权重。

例如,返回参考图2,像素203和204具有相同的像素值。对于标准双边滤波器(没有数据模型)的数据项,这些像素203、204中的每一个的数据项的值将是相同的。然而,通过根据本公开在数据项中并入数据模型,像素204的数据项将大于像素203的数据项。这是因为像素204的值比像素203的值更接近数据模型207所预测的值。现在考虑像素205和206,像素205具有与目标像素202相同的值,而像素206具有与目标像素202大不相同的像素值。因此,对于标准双边滤波器(没有数据模型)的数据项,像素205的数据项将大于像素206的数据项。然而,根据本文给出的示例,像素206的数据项可以大于像素205的数据项,因为像素206比像素205的值更接近数据模型207所预测的值。

滤波

如下所述,目标像素值的当前或运行估计值可以直接从数据模型导出。也就是说,可以不必像传统的双边滤波器那样执行像素值的完全加权组合。

在一些示例中,所形成的数据模型的参数例如β和最初可以设置为使得β=[0,0]和在一些示例中,可以根据输入像素值的先验知识来估计数据模型的系数。

在评估所形成的数据模型之前,数据模型可以由数据模型更新单元104更新。更新数据模型,即更新参数βx、βy以及可以涉及将数据模型拟合到内核中的像素的值。拟合该模型可以涉及最小化数据模型与内核内的像素值之间的误差,例如,使用未加权线性最小二乘技术,但在本文详细描述的示例中使用了加权线性最小二乘技术。拟合该模型可以导致数据模型的系数或参数例如βx、βy和被更新。

在一些示例中,在第一次迭代中,数据模型可以拟合到输入系统中的内核的像素值。在其他示例中,在第一次迭代之前,执行初始标准滤波步骤(例如,根据标准双边滤波器方程)。

可以通过加权回归分析技术来执行数据模型的拟合。加权回归分析技术可以是本领域内的可用于将模型拟合到数据集的任何技术,其中数据集的值被加权。例如,可以使用加权线性最小二乘法、加权局部梯度测量方法或任何其他合适的加权回归分析技术来执行数据模型的拟合。使用加权局部梯度测量方法来拟合模型可以涉及通过测量根据数据项和几何项加权的像素值对之间的差异来测量内核内的像素值梯度,如下所述。因此,加权局部梯度测量结果可以表示关于目标像素的像素值的变化。

因此,为了更新数据模型,必须计算加权回归分析的权重。该步骤可以由权重计算单元103来执行。权重计算单元103可以基于传统上在双线性滤波器加权组合中使用的权重来计算权重。也就是说,加权回归分析中特定相邻像素的权重基于以下两者:(i)根据本文给出的示例包含了数据模型的数据项,以及(ii)基于相邻像素与目标像素之间的位置差异的几何项。用于更新数据模型的权重可以呈以下形式:

其中如上所述,d()和g()是高斯函数,权重的扩展表达式变为:

其中σd和σg是平滑参数。平滑参数可以基于图像中的噪声水平的估计值,其中通常选择较大的值以在具有较高噪声水平的图像或图像部分中提供更大的平滑。

在此示例中,函数d()和g()都是高斯函数。高斯函数具有适当的尖峰形状并且易于计算,但也可以使用替代函数。例如,可以使用三角函数,或由样条(例如,三次样条)定义的函数。用于d()和g()的函数不需要是相同的类型。例如,d()可以使用高斯函数,而g()使用三角函数。

因此,更新该数据模型可以包括最小化由数据模型预测的相邻像素的像素值与内核的对应实际相邻像素值之间的平方残差的加权和。换句话说,可以通过根据以下方程,求出βx、βy和的值来更新数据模型:

一旦更新了数据模型,就可以评估目标像素位置x处的数据模型的值(例如,在目标像素位于内核中心的情况下,i(0)),并因而可以更新目标像素值的当前或运行估计值

可以迭代地重复下列过程:(1)根据数据模型参数βx、βy和来计算权重;(2)使用加权线性回归技术(例如加权线性最小二乘技术)来更新数据模型;以及(3)评估模型以便确定已更新数据模型参数βx、βy和

也就是说,如果要执行进一步的迭代,则也由数据模型评估单元105评估模型参数(βx、βy和),以反馈到权重计算单元103中。已更新模型参数(βx、βy和)可以通过迭代循环106反馈到权重计算单元中。因此,滤波器权重可以在迭代之间变化,因为它们取决于前一次迭代的模型参数(βx、βy和)。

图3是示出根据本文描述的原理配置的用于对图像进行滤波的系统的示例性迭代使用的流程图。

在步骤301中,根据上述示例,形成用于表示内核内的像素值的变化的数据模型。

在步骤302中,基于几何项和数据项来计算一组权重,数据项包括如本文给出的示例中描述的数据模型。

在步骤303中,使用加权线性回归技术(例如,加权线性最小二乘技术),根据计算权重,来更新数据模型。

在步骤304中,评估已更新数据模型以便确定已更新数据模型参数βx、βy和

如果在判定框305处不执行进一步的迭代,则可以输出306目标像素值的当前或运行估计值作为已滤波目标像素值。

如果在判定框305处要进行进一步的迭代,则使用已更新数据模型参数(βx、βy和)在步骤302中重新计算权重。可以重复更新303和评估304数据模型的过程。以这种方式,可以迭代地细化目标像素值的当前估计值(以及其他数据模型参数(βx和βy))。

要执行的迭代次数可以取决于可用的计算资源。在其他示例中,正在被滤波的像素值的类型、或正在使用的数据模型的阶可以是决定要执行多少次迭代的因素。要执行的迭代次数也可以动态确定,例如,取决于由数据模型对内核内的像素预测的值与内核中像素的值之间的误差的加权测量结果。例如,当平方误差的加权和低于阈值时,该方法可以停止迭代。

可以针对输入图像中的每个像素或针对输入图像中的像素的子集,重复滤波过程。例如,可以仅对图像的一部分进行滤波。在其他示例中,可以每隔一个像素地进行滤波。滤波过程使图像中的噪声最小化,因为每个输出的已滤波目标像素值取决于多个相邻像素值。以这种方式,可以去除无关的像素值。

示例性滤波算法

可以根据以下示例性算法来执行根据本公开的目标像素值的迭代滤波。在该示例中,数据模型是双线性模型。

输入:

i(x),x∈ω-当前工作内核,目标/输出像素位于x=0。

g(x)-几何成本函数。

取决于数据模型βx以及目标像素值的估计值的光度成本函数,其中β是具有在x和y方向上定义双线性模型的梯度的分量βx和βy的矢量(即β=[βx,βy])。

σg-几何平滑参数。

σd-数据平滑参数。

n迭代-要执行的拟合迭代次数。

输出:

目标/输出像素位置x=0处的值的新估计值。

算法:

1.初始化梯度参数:β←[00]。

2.初始化目标像素估计值:

3.对于i=1…n迭代(重复n迭代次)

a.计算权重:

b.使用权重w(x),采用应用于内核ω中的像素值i(x)的加权线性最小二乘法,来估计β,

其中可以如下使用加权线性最小二乘法,求出双线性数据模型的参数β和

内核中所有像素的坐标可以排列成m×3矩阵,

其中m是内核ω中的像素数。像素值可以排列在列矢量中,

i=[i(x1)…i(xm)]t.

数据模型可表示为,

该方程的标准加权线性最小二乘解是,

这里w是包含根据本公开计算出的权重的对角矩阵,

替代非迭代方法

在上面给出的示例中,迭代方法同时求解权重和数据模型,包括已滤波像素值其中权重和数据模型彼此依赖。

在替代示例中,可以使用任何适当的拟合方法来首先确定数据模型。然后可以使用加权组合将滤波器应用于内核,其中权重相对于数据模型而确定。

例如,可以使用诸如基于局部梯度测量的方法之类的方法找到数据模型。这种方法可以根据从位于内核内的像素对确定的多个像素值差的总和来确定x和y两个方向上的平均梯度(β)。可以将加权应用于像素值差异,例如基于光度成本函数,但不使用数据模型。

类似地,可以求出的值,其可以是内核内的像素值的加权或未加权平均值,并且还可以基于所确定的平均梯度。例如,内核内位置处xi的每个像素值可用于基于所确定的梯度和目标像素位置x与位置xi之间的位置差异,来提供目标像素位置x处的的估计值。例如,可以通过i(xi)-β(xi-x),给出使用位置xi处的像素值的的估计值。然后,可以例如使用加权和,对来自内核内的不同像素值的的估计值求和并归一化,以确定目标像素位置处的模型像素值可以如上所述,例如,基于光度成本函数来确定加权和的权重。

最后,可以通过根据确定的数据模型来计算权重,并且以加权和来应用那些权重,来确定输出像素值:

其中k是归一化项:

替代数据模型

在上述示例中,数据模型是双线性模型。然而,各种数据模型可以并入双边滤波器的数据项中。例如,模型可以是任意阶的线性、双线性、双二次、参数化、多项式模型,或任何其他合适的模型。

在一个示例中,简单的线性模型可能是合适的。例如,简单的线性模型可以呈形式α(xi-x),其中α=[αx]。可以使用线性内核(即1d内核)来对图像进行滤波。例如,可以通过使用一个或多个线性内核,对每行或每列像素进行滤波,来对图像进行滤波。替代性地,可以首先使用线性内核对图像中的像素行进行滤波,然后使用线性内核对像素列进行滤波,反之亦然。

在另一个示例中,双二次模型可以合并到数据项中。例如,数据项可以呈以下形式:

在该示例中,a是2×2二阶梯度系数矩阵。

使用更高阶模型(即,比线性/双线性模型更高阶)可能是有利的,其可以提供图像像素内核内的图像值的更准确模型。例如,在内核相对大的情况下,可能明显的是,线性/双线性模型在内核宽度上不能足够好地逼近数据的曲率。也就是说,从概念上讲,如果要通过足够小的内核查看表示某曲线的数据部分,则该曲线的每个小部分都可能显示为直线。在这种情况下,使用双线性模型可能适合于对曲线的每个小部分进行建模。但是,如果要通过更大的内核查看相同的数据,则可能明显的是存在曲线。在这种情况下,可能需要更高阶的模型来精确地考虑曲率。然而,通常高阶模型具有更大的计算成本,并且由于退化情况(例如,没有足够的数据来唯一且稳定地确定模型的情况),可能存在困难。此外,不良的高阶模型还可能会导致过度拟合,这可能会增强噪声特征而不是去除它们。

在一些示例中,数据模型在“x”和“y”两个方向上可能不具有相同的阶。例如,模型可以在“x”方向上是线性的,而在“y”方向上是二次的。参考上述双二次数据模型,这可以通过将2×2二阶梯度矩阵a中的一个或多个系数设置为零来实现。例如,包括2d图像帧序列的视频序列具有两个空间维度和一个时间维度。可以使用不同的模型将时间维度的数据滤波到空间维度的数据。

所选模型的类型或阶可取决于正在被建模的像素值的类型(例如,亮度、色度等)。例如,如果滤波器要用于对亮度(y)值进行滤波,则更高阶模型例如一阶(即双线性)模型可能是合适的。当对色度值进行滤波时,低阶模型例如零阶(即恒定)模型可能更合适。可以根据像素值类型对过度拟合的弹性的先验知识来做出该选择。在其他情况下,可以基于试错法来做出该选择。

交叉滤波器

在像素值具有多个通道(例如rgb通道或yuv通道)的情况下,滤波器可以实现为交叉滤波器(或“联合滤波器”)。在交叉滤波器示例中,数据项可取决于多于一个通道中的差异。

例如,在yuv图像中,亮度(y)通道倾向于具有比色度(u和v)通道更高的分辨率和细节。因此,当对色度通道进行滤波以识别在单独的色度数据中不明显的图像特征(例如,边缘)时,可以使用基于y通道的内容的数据项。在其他情况下,色度通道可以具有在亮度通道中不明显的特征。用于计算权重的数据项可以是来自一些或所有通道的数据项的函数,例如数据项的最大值或平均值。

在其他示例中,可以使用非图像数据。例如,图像可以由包含深度传感器的相机拍摄,以使得每个图像像素的深度值可用,该深度值指示在该像素处可见的物体与相机的距离。深度值的改变可以指示图像特征,例如,根据单独的图像数据不明显的边缘,并因此可以提供可以合并到数据项中的有用信息。相机产生的深度数据通常是有噪声的,并且在以这种方式使用之前可能需要预处理。在一些示例中,图像数据可以用在交叉滤波器中以调节深度数据,而深度数据可以用在交叉滤波器中以调节图像数据。

根据本文原理配置的交叉滤波器的另一项应用可以是对光线跟踪图像进行去噪,其中渲染器可以产生附加信息,例如深度图、法线图、反照率图(表面纹理)等。在此示例中,附加图具有高质量并且可以支持更高阶模型,而不会遇到对噪声的过度拟合的问题。

不对称的内核

根据本文描述的示例,滤波器可以使用不对称内核(在中心像素的一侧,内核的像素比另一侧的像素更少,或者在中心像素的一侧分配更大的权重),而不将非对称伪像引入到已滤波输出中。

当使用非对称内核时,经典的双边滤波器产生有效地向内核的中心平移/移动的结果。

当根据本公开将线性或更高阶数据模型引入数据项时,该问题不会以相同的程度发生。对本文描述的数据模型进行拟合/更新,以便表示内核上像素值的变化。本文描述的本发明的实施方案用于通过评估数据模型来产生已滤波值。根据本文定义的数据项和几何项,将数据模型拟合到整个内核中的数据。因此,通过评估内核内任何位置处的模型,可以在该位置产生已滤波输出值。虽然结果仍将反映双边滤波器的权重,使得具有较高权重的像素对已滤波像素值具有较大影响,但是梯度项增加了外推效果,使得输出估计值保持在预期坐标处。

示例实现方式

在下文中,我们呈现了如本文所公开的用于对图像中的目标像素进行滤波的系统和方法的示例实现方式。根据图1,可以使用如本文所述的用于对图像进行滤波的系统来执行这些示例性实现方式。

实施例2

图4描绘了示例性图像滤波系统。图4的图像滤波系统可以包括交叉或联合双边滤波器(407)。数据模型可以是关于亮度的双线性模型。图4的图像滤波系统可以特别适合作为去噪滤波器。

在实施例2中,可以从rgb颜色空间中的rgb窗口(401)输入图像。噪声估计器(405)可以使用目标像素来估计局部噪声方差。噪声估计值可以通过噪声颜色转换器(406)转换为色度颜色空间。可以通过具有双线性亮度模型的联合双边滤波器,对目标像素值进行滤波(407)。可以利用输入目标像素值来初始化目标像素估计值,并且可以最初将亮度梯度设置为0。在每次迭代时,可以测量估计值与输入窗口之间的误差,并将该误差用于计算数据权重。可以使用输入窗口和权重来计算新的模型估计值。可以通过像素颜色转换,将最终像素估计值转换回rgb空间(418)。对于(a)去噪滤波器、(b)光度成本计算以及(c)模型拟合,可以根据以下算法来执行实施例2:

(a)去噪滤波器

输入:

irgb-rgb图像。

σlut-噪声曲线查找表。

kσ-噪声方差比例因子。

(w,h)-内核/窗口大小。

njbl-联合双边滤波过程的迭代次数。

输出:

-rgb图像的新估计值。

算法:

1.在每个目标像素prgb处,可以从噪声曲线查找表中获得rgb噪声估计值{σr2,σg2,σb2},并将其缩放kσ。

2.可以将rgb噪声估计值转换为yuv空间噪声估计值以给出σn2={σy2,σu2,σv2}。

3.可以将局部rgb窗口转换为yuv,以产生像素ω(x,y)的w×h窗口,其中目标像素与ω(0,0)对齐。

4.可以将目标像素估计值初始化为输入局部yuv窗口中的目标像素

5.可以将双线性亮度梯度参数初始化为零,gx←0,gy←0。

6.可重复以下过程njbl次,以改善yuv像素估计值:

a)计算光度成本cp和几何成本cg。

其中cp如下计算,并且cg=g(x)

b)使用光度成本和几何成本来生成权重:w=cp.cg。

c)使用模型拟合来更新像素和梯度估计值。

7.可以将最终目标像素估计值转换回rgb空间以产生

(b)光度成本计算

光度成本计算可以由光度成本计算单元(409)来执行。

输入:

空间中的当前目标像素估计值。

{gx,gy}-当前双线性亮度梯度参数。

σn2={σy2,σu2,σv2}-yuv空间中的像素噪声估计值。

ω(x,y)={y(x,y),u(x,y),v(x,y)-yuv空间像素的局部窗口,其中坐标(0,0)与目标像素对齐。

输出:

cp(x,y)-对应于ω(x,y)的光度成本窗口。

算法:

可以如下计算窗口中每个像素的像素误差,

可以根据联合、噪声方差归一化误差来计算光度成本,

cp(x,y)=d(ey(x,y),σy).d(wceu(x,y),σu).d(wcev(x,y),σv)

其中修改数据项d()的函数以获取平滑参数σ的附加自变量:

并且可调参数wc是可以应用于色度分量的权重,其用于控制它们与亮度分量相比的相对重要性。

(c)模型拟合

模型拟合可以由模型拟合单元(412)来执行。

模型拟合过程可以根据内核窗口和权重,来估计新的像素值和亮度梯度值。

输入:

ω(x,y)={y(x,y),u(x,y),v(x,y)-yuv空间像素的局部窗口,其中坐标(0,0)与目标像素对齐。

w(x,y)-对应于ω(x,y)的内核权重。

输出:

空间中的新目标像素估计值。

{gx,gy}-一组新的双线性亮度梯度参数。

算法:

权重的以下矩可用于以下计算:

可以使用零阶模型来对色度通道建模,该模型使用简单的加权平均来拟合:

亮度通道可以使用双线性模型来建模,该模型定义为:

可以使用加权线性最小二乘法(wlls),将双线性模型拟合到数据。wlls算法已被重新用公式表示为一组加权和,以避免矩阵求逆。数据也可能会处于退化配置,因此不可能唯一地解析模型的所有三个参数。可能有两种退化配置:

1.只有一个像素具有非零权重。在这种情况下,可以等于具有非零权重的像素(通常是目标像素,因此不变),并且gx=gy=0。可以通过检查μxx=μyy=0来检测这种情况。

2.具有非零权重的像素可以布置成直线,从而仅定义一个梯度。可以通过检查二阶矩是否形成奇异矩阵来检测该1d退化性。

因此,可能有三种情况,每一种情况都需要解,如下所列。

非退化情况:

在1d退化情况下,可以仅定义一个梯度。不是定义新的1d坐标系,而是可能需要使用现有的坐标系。非零像素可以与x轴或y轴对齐,或者可以成某种其他角度。解如下所示:

如果μxx≥μyy

d=dx,

gx=d-1g′x,

gy=0,

否则

d=dy,

gx=0,

gy=d-1g′y,

在点退化的情况下:没有变化。

图1和图4的数据处理系统被示为包括多个功能块。这仅是示意图,并不旨在定义此类实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,由数据处理系统形成的本文描述的中间值不需要由数据处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由数据处理系统在其输入与输出之间执行的处理的逻辑值。

本文描述的数据处理系统可以用集成电路上的硬件来体现。本文描述的数据处理系统可以被配置为执行本文描述的任何方法。通常,上述任何功能、方法、技术或部件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,该程序代码当在处理器上执行时执行指定任务。本文描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或可由机器访问的其他数据的存储器设备。

如本文使用的术语“计算机程序代码”和“计算机可读指令”是指供处理器执行的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如c、java或opencl之类的编程语言代码表示的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。

处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如cpu、gpu、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可包括一个或多个处理器。

本发明还旨在包括定义如本文所述的硬件配置的软件,例如hdl(硬件描述语言)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理时,该集成电路定义数据集将该系统配置为制造被配置为执行本文所述的任何方法的数据处理系统,或者制造包括本文所述的任何装置的数据处理系统。集成电路定义数据集可以是例如集成电路描述。

可以提供一种在集成电路制造系统中制造如本文所述的数据处理系统的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使得执行制造数据处理系统的方法。

集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义任何级别的集成电路的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示法(诸如verilog或vhdl),以及作为低级电路表示法(诸如oasis(rtm)和gdsii)。在逻辑上定义集成电路的更高级表示法(诸如rtl)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统上执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为用于生成集成电路的制造定义,以执行定义集成电路的代码,从而生成该集成电路的制造定义。

现在将参照图6描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造数据处理系统的示例。

图6示出了集成电路(ic)制造系统1002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的数据处理系统。特别地,ic制造系统1002包括布局处理系统1004和集成电路生成系统1006。ic制造系统1002被配置为接收ic定义数据集(例如,定义如本文任何示例中描述的数据处理系统)、处理ic定义数据集以及根据ic定义数据集来生成ic(例如,其体现如本文任何示例中所述的数据处理系统)。通过对ic定义数据集的处理,将ic制造系统1002配置为制造体现如本文任何示例中描述的数据处理系统的集成电路。

布局处理系统1004被配置为接收和处理ic定义数据集以确定电路布局。根据ic定义数据集来确定电路布局的方法在本领域是已知的,并且例如可以涉及合成rtl代码以确定要生成的电路的门级表示,例如,就逻辑部件而言(例如,nand、nor、and、or、mux和flip-flop部件)。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1004确定了电路布局时,它可以将电路布局定义输出到ic生成系统1006。电路布局定义可以是例如电路布局描述。

如本领域已知的,ic生成系统1006根据电路布局定义来生成ic。例如,ic生成系统1006可以实现生成ic的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式,其可以在光刻工艺中用于根据电路定义来生成ic。替代性地,提供给ic生成系统1006的电路布局定义可以是计算机可读代码的形式,ic生成系统1006可以使用该计算机可读代码来形成用于生成ic的合适掩模。

由ic制造系统1002执行的不同过程可以全部在一个位置例如由一方来实现。替代性地,ic制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同的方来执行。例如,以下各阶段中的一些可以在不同的位置和/或由不同的方执行:(i)合成表示ic定义数据集的rtl代码,以形成要生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。

在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可以将系统配置为制造数据处理系统,而不用对ic定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(例如fpga)的配置,并且对该数据集进行处理可以配置ic制造系统以生成具有该定义配置的可重新配置的处理器(例如,通过将配置数据加载到fpga)。

在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集,以上面参考图6描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的设备。

在一些示例中,集成电路定义数据集可以包括在由数据集定义的硬件上运行的软件,或者与由数据集定义的硬件组合运行的软件。在图6所示的示例中,ic生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。

与已知的实现方式相比,在本申请中阐述的概念在设备、装置、模块和/或系统(以及在本文实现的方法中)中的实现可以引起性能改进。性能改进可以包括计算性能提高、等待时间缩短、吞吐量增大和/或功耗降低中的一项或多项。在制造此类设备、装置、模块和系统(例如集成电路)期间,可以在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用较少的硅。例如,这可以通过以串行方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起设备、装置、模块和系统的物理实现方式的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造一个模块的多个实例来完成。

与已知的实现方式相比,在本申请中阐述的概念在设备、装置、模块和/或系统(以及在本文实现的方法中)中的实现可以引起性能改进。性能改进可以包括计算性能提高、等待时间缩短、吞吐量增大和/或功耗降低中的一项或多项。在制造此类设备、装置、模块和系统(例如集成电路)期间,可以在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用较少的硅。例如,这可以通过以串行方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起设备、装置、模块和系统的物理实现方式的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造一个模块的多个实例来完成。

申请人据此独立地公开了本文描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域技术人员的普通常识基于本说明书整体来执行,而不管此类特征或特征的组合是否解决本文公开的任何问题。鉴于前面的描述,对本领域技术人员将显而易见的是,可以在本发明的范围内进行各种修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1