摘要:你可能已经了解数码相机的工作原理。传感器上的每个像素根据入射光产生微弱的电荷,形成模拟数据,随后相机将其转换为数字格式,传递给图像处理器进行进一步处理和存储。
你可能已经了解数码相机的工作原理。传感器上的每个像素根据入射光产生微弱的电荷,形成模拟数据,随后相机将其转换为数字格式,传递给图像处理器进行进一步处理和存储。
因此,数字图像本身可以被视为一种信号。尽管它们通常是二维信号,但当前的大多数信号处理算法都可以适应二维数据。因此,信号处理在现代摄影中扮演着至关重要的角色。
当你用智能手机拍照时,数据会经过十几个算法处理。有些算法通过在你不知情的情况下拍摄多张照片来增强图像的动态范围;另一些算法则处理图像的噪声和锐度。在低光环境下,手机还会拍摄多张图像并合并,以提升最终输出的质量。
数码相机在RAW模式下拍摄时较为简单,数据通常仅在某些情况下进行压缩而未作过多处理。然而,当你在相机中(或其他地方)查看这些图像时,处理过程首先需要将RAW数据转换为可显示的格式。这一过程涉及根据传感器感知颜色的有限数据,对每个颜色通道进行插值。
信号处理及后续图像处理的两个突破源于两种截然不同的数学概念:傅里叶变换(Fourier Transform)和小波变换(Wavelet Transform)。
傅里叶变换(及其逆变换)
傅里叶变换最早于1822年提出,定义了任何信号(无论是连续的还是非连续的)都可以分解为一系列不同幅度、频率和相位的正弦波。尽管这一概念已存在多年,但近期领域的发展使其可用于模拟信号。
随后,挑战在于如何将傅里叶变换应用于数字信号,因为数字信号大多是离散的,而非连续的模拟信号。为此,开发了离散傅里叶变换(Discrete Fourier Transform)算法,但它的作用是什么呢?
大多数来自仪器的信号属于时域(Time Domain),即信号随时间变化。换句话说,信号在任一点的值是时间的函数。
其他信号,如图像,则属于“空间域”(Spatial Domain),即信号根据所考察的空间位置而变化。对于图像,这是一个二维空间,一个点可以用其x和y坐标表示。这些信号在任一点的值是空间坐标的函数。
简单来说,傅里叶变换可以将这些域中的信号转换为“频域”(Frequency Domain)。频域表示信号的值是频率的函数。变换的最终产物是多个信号,分别表示源信号中各频率的显著程度。
对于图像,傅里叶变换的结果反映了光强变化或光(或暗)在图像中的模式。低频表示平滑或渐进的变化,意味着图像中的大结构;高频表示突变,意味着边缘或细微细节。
傅里叶变换的最大优势在于,它允许在频域中进行修改,然后通过逆变换返回原始域。因此,变换通过对原始信号的频率表示应用“滤波器”,实现了非破坏性处理。这正是傅里叶变换不仅用于分析,还广泛应用于信号滤波和处理的原因。
对于图像,傅里叶变换图通常通过镜像扩展,使原点位于中心而非左下角。
尽管傅里叶变换在图像处理中有众多应用,如轮廓提取、边缘检测、锐化和去除莫尔条纹及图案等,但本文将仅聚焦于降噪。
小波变换(及其逆变换)
小波变换是一种比傅里叶变换更为现代的方法。虽然许多人提出过类似概念,但最早可追溯到20世纪初Alfréd Haar的工作,1909年提出了第一个小波。许多杰出学者为小波理论的发展做出了贡献,涉及正交小波、连续小波变换和离散小波等多个方面。没错,小波变换比傅里叶变换年轻大约100年。
根据维基百科:
小波是一种数学函数,用于将给定的函数或连续时间信号分解为不同尺度成分。通常可以为每个尺度成分分配一个频率范围。然后,可以以与该尺度匹配的分辨率研究每个尺度成分。小波变换是通过小波表示函数的过程。小波是有限长度或快速衰减的振荡波形(称为“母小波”)的缩放和平移副本(称为“子小波”)。对于具有不连续性和尖峰的函数,以及精确分解和重构有限、非周期和/或非平稳信号,小波变换比传统傅里叶变换具有优势。
小波是一种类似波的振荡或信号。它从值为0开始,上升和/或下降,甚至可能多次穿过零,但始终以值为0结束。下图展示了一个典型的莫雷小波(Morlet Wavelet)。有趣的是,这种小波与人类的听觉和视觉感知密切相关。
当我们使用小波信号转换随机信号时,会通过“滑动窗口”技术对两个信号进行卷积。卷积是将一个信号与另一个信号相乘的过程。这一技术通过逐值滑动滤波函数(此处为小波),在小波的窗口内进行卷积,重复此过程直到整个函数与小波完成卷积。
卷积在小波的不同尺度和拉伸下进行,以获得不同尺度的输出。
图像通常包含不同尺度的元素,从小型结构(如光点或锐利边缘)到中大型结构(如主体的整体形状和大小,不含细微细节)。通过小波变换,任何图像都可以分解为多个包含不同尺度范围结构的子图像,合并这些子图像应能重构原始图像。
由于这种分解为多个“层”(通常称为图层),可以针对每一层进行操作,仅修改基于尺度的特定图像特征。这种特性使小波变换不仅能用于降噪,还可用于锐化和边缘检测。
这种技术,也称为多尺度处理(Multi-Scale Processing),是许多图像处理程序的基础。
对于二维空间信号(如图像),数据首先沿行与小波进行卷积,然后对结果图像的列进行卷积。这与二维空间信号的傅里叶变换方式类似。
例如,以下图像展示了原始图像及其在不同尺度下的小波变换图像:
9级小波分解。从左上到右下,像素尺度分别为1、2、4、8、16、32、64、128、256(2的幂)。
还有其他应用小波变换的方式,如多分辨率近似(Multi-Resolution Approximation),更常见的是小波分解(Wavelet Decomposition)。
小波分解将图像分解为多个像素尺度层的组。对于压缩,算法在每个分解级别生成四张图像。基础层包含图像的大型结构,称为近似层(Approximation Layer)。三个“细节”层称为系数层(Coefficient Layers),分别表示水平、垂直和对角方向的细节系数。
按照相同步骤,近似层可以进一步分解,同时保留每个级别的细节系数。图像的尺寸决定了可能的最大分解级别。
原始图像经过高通滤波,生成三张描述局部亮度变化(细节)的大图像;然后进行低通滤波和降采样,生成近似图像;近似图像再次进行高通滤波,生成三个较小的细节图像,并进行低通滤波,生成左上角的最终近似图像。
要恢复图像,需要将每个级别的系数与基础层相乘。你可能会注意到,大多数系数要么为零,要么非常接近零。
从存储到显示再到操作,数学是实现这一切的底层工具。
压缩
数据压缩是一个涉及大量数学处理的领域,旨在用尽可能少的位数表示数据。现代最常见的方法之一是通过小波分解实现。
压缩过程中系数的阈值由保存或导出图像时看到的JPEG质量设置表示。
JPEG2000标准(更常称为JPEG)基于图像数据的小波分解,仅存储足以实现非常接近重构的分解数据。因此,JPEG被认为是一种有损压缩算法。如果想了解更多实现细节,本文末尾提供了一些链接供进一步阅读。
图像锐化
基于小波的锐化
通过将图像分解为多个像素尺度级别,可以执行一些比直接应用于整个图像更出色的操作,图像锐化就是其中之一。
通过仅对细节系数应用图像锐化(在此情况下,锐化仅仅是增强细节系数的值),可以选择性地仅锐化图像中的边缘和细微细节。这意味着最终输出在非细节区域不会出现锐化伪影,看起来更自然。
几乎所有照片编辑软件都隐式实现了基于小波的锐化算法,用户往往不知道幕后发生了什么。
基于傅里叶的锐化
使用傅里叶变换锐化图像涉及将图像转换为频域,然后选择性地滤除低频成分或增强高频成分。
这一过程也称为图像的高通滤波,低频成分被滤除,而高频成分被保留,这些高频成分通常包含图像的边缘或细微细节。
降噪
基于小波的降噪
使用小波进行降噪的步骤与锐化相同。图像被分解为多个像素尺度级别。回想锐化时,我们增强低尺度结构,因为那是细微细节所在。
噪声也存在于前几个低尺度层中。大多数情况下,它表现为单个像素中的不需要信号(或信号缺失),这是图像中最细微的细节,因为像素是图像的最小构建单元。
通过在重构图像前选择性地平滑前几层,可以抑制噪声而不影响较大尺度的结构,从而提高降噪性能。
基于傅里叶的降噪
傅里叶降噪在许多情况下并非理想选择,但在去除模式噪声(Pattern Noise)时表现出色。模式噪声在傅里叶变换的频率表示中表现为异常模式,移除这些异常可以消除模式噪声。
相反,同样的技术可用于通过移除非异常成分并保留异常来提取和隔离图像中的模式。
这比可视化更难解释。我们稍后将通过一个示例来阐明这一概念。
这两种技术在图像或信号处理中有更多应用,它们被巧妙地用于各种数据处理中。接下来,我们将专注于降噪并详细研究该技术。
使用傅里叶变换进行降噪
傅里叶变换在去除周期性噪声(如模式噪声和扫描仪或相机传感器产生的伪影)时最为有效。
考虑以下严重受模式噪声影响的图像:
该图像的傅里叶变换表示如下生成:
这通过灰度像素的强度值表示源图像中的频率。白色像素表示频率峰值,黑色像素则相反。
中心原点是因为这是一个“扩展”表示,通过镜像将原点从右下角平移到图像中心,以方便可视化和掩码处理。
中心频率峰及其通过的垂直线通常表示图像中的所有高频信息。在本例中,其余峰值表示模式噪声的频率。
作为一种简单方法,我们可以尝试掩盖最强烈的模式频率:
对掩码后的傅里叶数据进行逆变换后,得到以下图像:
虽然在边缘处并非完美,但与原始图像相比,这是一个显著的结果。更好的掩码覆盖所有峰值,可以在不显著损失原始图像细节的情况下消除模式噪声。
如果事先知道噪声模式,可以通过对其进行傅里叶变换并用作掩码,生成完美掩码,从而完全重构无噪声图像。
使用小波变换进行降噪
让我们通过一个示例进一步研究该技术:
对于上述图像,我们可以至少推导出以下三种尺度的图像:
微小结构:通常为单个像素大小。与图像其余部分分离后,该层主要包含噪声和一些明亮的恒星。小型结构:通常为几个像素大小。分离后,该层包含所有恒星和星系臂的细微细节。大型和超大型结构:通常为数百像素大小。分离后,该层包含星系中心的整体大小和形状。对该图像应用基于尺度的层分离,得到以下结果。这些结果已调整到可查看范围以供说明。虽然实际变换生成的像素值单独可能无意义,但本指南讨论的所有技术和计算无需此调整即可应用。重构过程自然恢复正确的像素值范围。
最初两层捕获了噪声和恒星。在本例中,噪声与恒星交织在一起。然而,通过检查第一层和第二层,我们可以确定第二层中不存在的区域,表明噪声存在于第一层中。
到第三层,我们仍能看到一些恒星亮度,但仔细观察,星系臂的微弱轮廓开始显现。从第四层开始,星系以不同尺度和细节级别可见,完全没有恒星。
我们从细微细节开始,逐步过渡到较大尺度结构。到最后,仅剩星系的模糊轮廓。
此时,我们可以对前两层应用降噪处理。之后,重新组合所有层,生成一张噪声最小的图像,同时保留恒星和星系臂的复杂细节,如下图所示:
逆小波变换仅仅是将所有层的像素值相加,以及小波变换生成的残差图像。
来源:老胡科学一点号