Bosco-and-Mancuso Filter for CFA Image Denoising
在上一篇博文中一种简单的3dnr去噪算法介绍介绍了一种拜耳模式下的去噪算法。这篇博文主要就讲解此方法的流程和实现。
人类的视觉系统,按照“韦伯法则”的描述,在高亮区域的噪声敏感度较小,在黑暗区域的噪声敏感度较大,根据“结构噪声掩膜”的性质,在边缘和突变性较大区域的噪声敏感度较小,在平滑区域的噪声敏感度较大。因此,在阀值设置的时候,对应于边缘和突变性较大的区域,视觉分辨率较高,噪声敏感度较小,相应的设置较高的阀值,相反,对应于平滑的区域,视觉分辨率较低,噪声敏感度较大,相应的设置较低的阀值。

一、主要流程图
[0017] 在一个处理流程中,有一种算法对数字静态相机传感器获取的图像进行滤波。因此,输入图像为拜耳模式格式。该噪声滤波器基于目标像素与多个相邻像素之间相似度绝对值的加权平均值,为处理窗口中正在处理的像素计算替换值。噪声滤波器通过递归处理噪声水平,使其强度能够根据所获取图像的局部特征进行调整,并适应相邻像素不断变化的噪声水平。
[0019] 计算三种不同的噪声水平估计值,分别对应图像的每个颜色通道,即红色、绿色和蓝色。可以指示滤波器分别为红色、绿色和蓝色通道调整其强度。通常,由于人眼感知颜色的方式,构成红色和蓝色通道的红色和蓝色像素可以采用比绿色像素更高的滤波强度,但该流程能够针对任何颜色通道调整为任何强度。
[0020] 如上所述,根据正在滤波的是绿色通道,还是红色或蓝色通道,使用两种不同的滤波掩码。不同的滤波掩码如图 3A、3B 和 3C 所示。图 3A 示出了根据本发明一个实施例的、用于拜耳模式中绿色像素的滤波掩码。通常,对于特定的正在滤波的绿色像素,会检查该像素及其相邻像素的信号水平。例如,参考图 3A,绿色像素 G0 为目标像素;建立一个包含目标像素 G0 部分相邻像素的工作窗口,例如包含相邻像素 G1、G2、G3、G4、G5、G6、G7 和 G8。类似地,参考图 3B,建立一个带有红色通道滤波掩码的工作窗口。该滤波掩码与图 3A 所示的滤波掩码不同,因为如参考图 1 所讨论的,拜耳模式中绿色通道的像素排列与红色或蓝色通道的像素排列不同。在图 3B 所示的红色滤波掩码中,目标像素 R0 被其相邻像素 R1、R2、R3、R4、R5、R6、R7 和 R8 包围。同样,图 3C 所示的蓝色滤波掩码中,目标像素 B0 被其相邻像素 B1、B2、B3、B4、B5、B6、B7 和 B8 包围。在红色、绿色和蓝色的每种情况下,都有一个目标像素和八个相邻像素,它们通常分别称为 T0 和 T1-T8。
具体可以如下图所示:

[0021] 拜耳模式格式的输入图像按行顺序扫描,从顶行开始,从左到右。在本发明的实施例中,红色和蓝色通道的处理窗口相同,而绿色通道的处理窗口不同。处理图像时,仅选择两种类型的处理窗口中的一种,因此,选择基于当前像素的颜色是否为绿色。
[0022] 图 4 是示出本发明自适应噪声滤波器实施例中存在的示例性流程的流程图。自适应噪声滤波器 10 始于复制图像边界的步骤 12,这将在下文讨论。如上所述,确定器 16 随后检查当前像素 T0 是否为绿色。如果 T0 是绿色像素,则生成如图 3A 所示的绿色工作窗口 18。相反,如果 T0 不是绿色像素,则生成如图 3B 或 3C 所示的红色 / 蓝色工作窗口 20。
[0023] 一旦选择了掩码和滤波窗口,差异计算器 22 就会进行距离计算。在差异计算器 22 中,确定目标像素 T0 与其相邻像素之间的绝对值差异 Di。每个差异 Di 表示目标像素 T0 的值与其相邻像素的值之间的差异。差异计算器 22 计算当前工作窗口中目标像素 T0 的值与其相邻像素的值之间差异 Di 的绝对值。
[0024] 一旦计算出像素值的差异,结果就会被发送至最大值和最小值模块 24。在该模块中,从差异值 D1-D8 的列表中计算出最大和最小距离值。最大值 / 最小值模块 24 的输出是当前工作窗口 18 或 20 中目标像素 T0 与其相邻像素 T1-T8 之间的最大差异 Dmax 和最小差异 Dmin。
[0025] 这些最小和最大差异被传递至噪声水平计算模块 26,该模块在不使用自动曝光数据的情况下,对与处理窗口 18 或 20 相关联的噪声水平 NL 进行估计。根据当前窗口是处理窗口 18(绿色)还是处理窗口 20(红色或蓝色),会同时进行并存储不同的 NL 计算,每个颜色通道各一个。根据当前像素 T0 的颜色,噪声水平模块 26 更新该特定颜色的相对噪声水平估计。因此,噪声水平模块 26 根据以下计算来估计噪声水平:
[0026] 其中,NLx 是特定噪声通道 x 的噪声水平;Kn 是一个参数,如上述引用的美国专利中所讨论以及下文进一步阐述的,它决定了自适应噪声滤波器 10 所要执行的滤波强度,且 Dmax 是在最大值 / 最小值模块 24 中为特定颜色通道计算出的最大距离值。
[0027] 不同流程之间的相互关系示例可参见图 5 中本发明自适应噪声滤波器 10 的示例框图。在该图中,差异计算器 22 从当前处理窗口 18 或 20 获取输入。差异计算器 22 的输出被传递至最大值 / 最小值模块 24,该模块将每种颜色的 Dmax 和 Dmin 值传递至噪声水平模块 26。Kn 参数也是噪声水平模块 26 的一个输入。
[0028] 通常,自适应噪声滤波器 10 中使用的这些流程可通过软件或硬件实现,但出于性能考虑,硬件通常是更优选择。核心在于使用最少的资源尽快处理输入的含噪图像,以执行所有计算。为实现这些目标,根据本发明的一个实施例,噪声水平计算模块 26 采用递归实现方式。通常,两个图像缓冲区可用于执行整个滤波过程。一个缓冲区(输入缓冲区)包含待滤波的图像;另一个缓冲区(输出缓冲区)包含滤波后的图像。
[0029] 为充分利用这些流程所需的资源,当前目标像素 T0 的滤波值是利用已经计算出的像素值来计算的。这些值在内存中可用,可用于滤波下一个像素,而无需将 T1、T2、T3 和 T4 的旧未滤波值重新加载到内存中。该过程既适用于绿色工作窗口 18,也适用于红色 / 蓝色工作窗口 20。
[0030] 图 6A 示出了一组绿色像素的示例工作窗口 18,其中 G0(目标像素)、G1、G2、G3 和 G4 已经过滤波,而 G5、G6、G7 和 G8 尚未滤波。
图 6B 示出了一个示例工作窗口 20,在这种情况下恰好是蓝色的,不过对于红色通道来说,其工作窗口是相同的。在图 6B 中,B0 是正在滤波的目标像素,B1、B2、B3 和 B4 已经过滤波,而 B5、B6、B7 和 B8 尚未滤波。
[0031] 回到图 5,示出了一个人类视觉系统(HVS)评估器 30,它从工作窗口 18 和 20 接收输入。HVS 评估器 30 根据图 7 所示的函数,将人眼对亮度变化的响应纳入考量。在该图中,X 轴以 0 到 1023 之间的刻度衡量可能的亮度值,而 Y 轴则绘制了人眼能够辨别当前像素与其相邻像素之间灰度值差异的阈值水平。如图 7 所示,当像素处于暗值(x=0)和最亮值(x=1023)中间(x=512)时,人眼的 HVS 阈值最低。因此,如图 7 所示,当像素非常亮或非常暗时,人眼的 HVS 阈值最高。
具体的示意图为:

[0032] 来自 HVS 评估器 30 的因子与噪声水平模块 26 的输出相加,并提供给局部特征检查器模块 32(图 5)。该模块 32 计算用于调节将在噪声水平模块 26 中对当前像素 T0 执行的滤波过程强度的 Kn 参数。根据当前像素 T0 的颜色(绿色或红色 / 蓝色),使用两种不同的局部特征检查器函数。具体而言,如果正在滤波的当前像素是绿色的,则使用标准局部特征检查器模块。这如图 8A 所示,该图是当当前像素为绿色时,Kn 参数作为最大距离值 Dmax 的函数的曲线图。图 8A 中示出了值 Th3,它是当前像素 T0 的噪声值加上 HVS 值(Th3 = NL + HVS)。在图 8A 中,Kn 参数是一条从 1(当 Dmax 处于最小值时)开始,延伸至 Th3 的直线。相反,图 8B 是当当前像素不是绿色时,Kn 参数作为最大距离值 Dmax 的函数的曲线图。图 8B 在 Kn 参数的计算中引入了另一个值,即噪声水平 NL。因此,当 Dmax 的值小于或等于 NL 时,Kn 参数将为 1,否则 Kn 参数的值位于 1 和 Th3 之间的直线上。这增强了红色和蓝色通道相较于绿色通道的滤波强度,因为绿色通道的 Kn 参数只有在 Dmax 为 0 时才能为 1,而红色和蓝色通道的 Kn 参数在 Dmax 小于或等于 NL 时始终为 1。
[0033] 控制拜耳模式数据滤波程度的另一种额外方式是纳入由自动曝光控制(AEC)使用的增益因子。这种包含 AEC 的模块旨在获得正确曝光的场景。如果图像场景曝光正确,则无需对图像应用增益因子。另一方面,如果图像无法正确曝光,则相机的自动曝光过程会计算一个增益因子,它是一种应用于图像的系数。增益越高,图像越亮。然而,这种通用系统存在一些缺点。如果增益设置得过高,图像中的噪声也会被增强。因此,当增益较高时,噪声滤波器必须以更高的强度工作;而当增益较低或为零时,噪声滤波器应以较低的强度工作。
[0034] 自适应噪声滤波器 10 可包含采用以下方法的过程,如图 9 所示。该图展示了如何使用一个额外因子(AEC 增益因子)来生成 Kn 参数。如果 G 是由图 5 的 AEC 模块 34 计算出的当前 AEC 增益因子,且 Gmax 是增益因子的最大值(其取决于图像传感器),则可以计算出 G/Gmax 的比值。如图 9 所示,该比值与噪声水平因子 NL 相乘,以确定将使 Kn 参数等于 1 的最高 Dmax 值。这与图 8B 所示的曲线图不同,图 8B 未包含增益 G/Gmax 比值因子。因此,如果为了获得最佳曝光的图像而将 G 设置为 Gmax,那么这意味着 G/Gmax 比值为 1,因此将最大滤波程度(Kn = 1)与其他滤波程度区分开的阈值就是噪声水平 NL。相反,如果在增益 G 满足 0≤G≤Gmax 的情况下获得了正确曝光的图像,那么 NL*G/Gmax≤NL,因为 G/Gmax≤1,所以用于区分较高滤波程度与其他滤波程度的阈值较低,因此滤波强度会降低。这种技术可应用于所有三个颜色通道,或者可仅用于红色 / 蓝色通道,而绿色通道可在图 8A 所示的标准模式下进行滤波。
[0035] 参考图 5,AEC 模块 34 可能需要在噪声水平计算模块 26 计算噪声水平之前提供其输出。这不成问题,因为噪声水平计算模块 26 和自适应噪声滤波器 10 的其他部分并不局限于作为图像处理链的第一个元素。实际上,如有必要,自适应噪声滤波器 10 可位于图像处理过程(图 2)的更后端,例如在缺陷校正模块内。当自适应噪声滤波器 10 位于图像处理链的缺陷校正模块中时,它接收含噪像素作为输入。然后,去噪后的值作为自适应噪声滤波器的输出传递至缺陷校正算法,以便生成拜耳模式的最终去噪和缺陷校正后的像素,并传递至图像处理链的其余部分。
[0036] 对像素值执行的最后一个过程基于模糊逻辑。隶属度计算模块与一个由两个阈值 Th1 和 Th2 界定的模糊函数相关联。该模糊函数对 “目标像素 T0 与其相邻像素 Ti 相似” 这一关系进行模糊化处理,其中 Ti 是相邻像素 T1-T8 中的任意一个。对于 T0 的每个相邻像素 Ti,计算一个系数 Ki,它对 T0 和 Ti 之间的相似度进行加权。这些权重系数 Ki 随后用于滤波值的最终确定。因此,对于每个像素 T0,将有八个系数值 K1-K8,其中 K1 对 T0 和 T1 之间的相似度进行加权,K2 对 T0 和 T2 之间的相似度进行加权,以此类推,直至 K8。
[0039] 这些值在图 5 所示的阈值计算模块 36 中计算,该模块接收阈值因子 Kn、Dmin 和 Dmax 作为输入,并生成上述阈值 Th1 和 Th2。
[0040] 这些阈值被输入到系数计算器 38 中,该计算器计算方程式 6、7 和 8 中的 Ki 值。
[0041] 自适应噪声滤波器 10 的最终输出是当前目标像素 T0 的滤波值。通过对相机传感器生成的每个像素依次重复此过程,可在其输出端获得最终的滤波图像。噪声滤波器 10 的输出可表示如下: