5. 数码相机内的图像处理-图像采样与金字塔

2020-04-17 15:32:55 浏览数 (2)

你有没有见过下面这张图像上那种神秘的彩色纹路?我们知道这件灰色衬衣本身应该是光滑的,为什么拍出来的照片上会有这样的纹路呢?

今天我们首先来回答这个问题,然后介绍图像的两种金字塔以及它们的应用。

一. 图像采样与混叠

首先来看看信号采样的概念,下面展示了一个正弦信号经过采样之后的采样点:

可以看到,只要采样点足够的密,即采样频率足够高,我们完全可以通过这些采样点恢复出原始信号。

但要是采样频率不足呢?此时我们就无法知道采样点到底是哪个频率信号产生的了,如下图:

这种现象叫做信号的混叠(Alias)。

图像也是一种离散的信号,是现实世界的连续信号的离散表达:

如果采样率不足,那么就会产生开篇所展示的图像上那种混叠现象,这种条纹我们称作为摩尔纹

其实,除了以上这种空域上的混叠,在视频中如果摄像机的快门速度不够,那么还会产生时域上的混叠现象。大家可以看看以下这个视频,会有更直观的感受:

车轮效应(Wagon Wheel Effect)

那么如何消除混叠现象呢?

如果是空域的混叠,那么有两种手段:

1. 增加采样率

这是相机厂商一直努力追求的方向,更多像素颗粒,于是你甚至看到手机上的相机从最早几十万像素一直到现在的几千万像素。这确实带来了更高的解析力,也降低了混叠现象。

2. 平滑信号

这是通过先对图像进行平滑滤波,去除一些高频信息,然后再进行采样,来消除混叠。

可以通过下面两张图来比较是否加入平滑滤波对最终结果的影响:

无滤波时,图像上有明显的混叠现象

有滤波时,图像混叠现象轻微

你肯定会问,这种方法中,滤波要滤到什么程度?采样又要采样多密?回答这个问题需要知道什么是Nyquist Rate:

它是信息论里面的一个概念,如果对一个连续信号进行采样,然后想要用采样之后的信号来恢复出原有信号的完整信息,那么采样率必须大于等于Nyquist Rate,而这个Rate是此连续信号中最高频分量频率的两倍。

回到图像的下采样中,如果想要消除采样后导致的混叠,我们需要进行足够的滤波,以使得采样频率能够大于滤波后图像的Nyquist Rate。当然,在实际的任务中,滤波幅度通常还是要通过实验来进行。

一种很典型的光学滤波手段是传感器上的LensLet,在汇聚光线的同时,它也在将原始的信号进行滤波平滑。你可以想象,从不同方向角度入射到微镜头上的多条光线会被微镜头汇聚到它所覆盖的一个像素上,这相当于是对入射的这些光线带来的能量做加权和,这相当于是在平滑各条光线的差异。所以我称之为光学滤波。

在现在的相机中,有时在传感器前方还会有一片光学玻璃,它被称为Anti-Aliasing(AA) Filter。它也可以起到对光线进行平滑的作用,具有反混叠的效应。但它也一定程度导致了解析力的下降,因此有些摄影师甚至会将它移除,来获取更清晰的图像(可能有混叠),如下图

其实,AA Filter有时候还是有用的,它可以消除图像中的摩尔纹:

但有时候则会影响到成像的清晰度,降低观感,如下图:

所以,摄影师会选择性的使用它。

二. 图像金字塔

当不断的模糊图像再下采样图像,直到所规定的最小的分辨率,就可以形成一系列从大到小的图像,这就是图像金字塔。

我们先介绍高斯金字塔:

在此金字塔中,越往上一层,图像越模糊,尺寸越小。最上层的图像保留了图像中的大的平摊区域,也有人称之为直流分量。但从最上层的图像是不能逆向还原出原始图像的,因为构建高斯金字塔的过程是一个不可逆的过程,层与层之间因为模糊的关系是有信息损失的。

要想从金字塔中不失真的恢复原始图像,可以用到拉普拉斯金字塔。在拉普拉斯金字塔中,除了最上层之外存放的不再是图像本身,而是层与层之间的图像差异,而只有最上层保留了图像的直流分量,如下图所示:

拉普拉斯金字塔的构建过程如下:

而从其中恢复出原始图像的方法也很简单:

由于拉普拉斯金字塔中存放了图像的差异,这种差异是很稀疏的,所以可以用于图像压缩过程,大大减少信息的尺寸。

为什么对图像做模糊并下采样的金字塔叫做拉普拉斯金字塔?实际上,是利用了如下图所示原理,来用图像和其高斯滤波后的图像的差异来代替了直接对图像做拉普拉斯滤波,从而节省计算量。

图像金字塔在很多领域都有应用,例如

特别有意思的是,在我所参考的CMU计算摄影学课程15.463的课程作业中,还提到图像金字塔的一个特别应用:视频动作放大(Motion Magnification)

大家可以看下面的视频感受一下:

欧式视频动作放大

三. 总结

这篇帖子先介绍了图像的混叠现象,然后阐述了采样与混叠现象的关系,以及如何消除混叠。最后介绍了图像的两种金字塔:高斯金字塔、拉普拉斯金字塔。下面的脑图总结了本章的关键内容。感谢你的阅读。

我在如下的Jupyter Notebook中展示了本帖中的相关操作,你可以对着它获取更深入的理解,也能够进一步掌握用Python来进行图像处理的一些技巧。

nbviewer.jupyter.org/gi

跟这一系列专题文章相关的Notebook可以从github.com/yourwanghao/获取

参考资料:

这一篇文章的绝大部分素材来自于

[1] CMU 2017 Fall Computational Photography Course 15-463, Lecture 5

如果不做特别说明,素材均来自于[1]

我也会参考下面的重要资料中的内容

[2] Richard Szeliski, Computer Vision : Algorithms and Applications, Section 3.5

0 人点赞