所谓马赛克,即是一种抹除图像细节的一种手段。一般用于抹除关键部位或敏感信息等(好了老司机刹车)。 马赛克一般被认为不可恢复。但是最近的一些论文例如 Google Brain 的 Pixel Recursive Super Resolution 等等确乎一定程度上恢复了马赛克(如下图),这是什么回事呢?

图像空间

首先我们需要讨论所谓“图像空间”的事情。(这里我们并不把它严格作为数学上的“空间”对待,而是泛泛的使用这个名称,并且启示性的说明它的性质而不是严格的描述)。所谓图像空间可以被认为是一类图像的集合,或者是一类图像在完整的图像空间中的一种分布。下面我们谈及图像空间的时候,都是针对特定大小的图像。

首先我们考虑一个固定大小的图像,比如 4 * 4 的

它一共有16个像素点组成。每个像素点可以包含多少种颜色呢?按照现在“真彩色”的标准,可以有 $2^{24}=16,777,216$ 种颜色,基本已经达到人类颜色分辨能力的上限了。这样一来,这个 4*4 的图像的空间大小就是 ${2^{24}}^{16}$,写全就是 39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306816 种图片。$3.94\times 10 ^{115}$ 绝对是个天文数字。

接下来,我们试图把它进行马赛克。马赛克的原理很简单,就是用一个区块颜色的平均值代替整个区块的颜色(当然这只是一种最常见的马赛克方法)。如果选择 2*2 的区块,马赛克的结果如下:

由于每个区块颜色相同,所以马赛克空间的大小为 ${2^{24}}^{4} = 7.92\times10^{28}$ 我们设原来图片空间为 $X$ 马赛克空间为 $Y$,那么马赛克操作相当于一个函数 f,它把原图的空间映射到马赛克空间: $f:X\rightarrow Y$

由此,我们可以从数学上看出为什么马赛克难以恢复:$X$ 有 $3.94\times 10 ^{115}$ 个元素,而 $Y$ 仅仅有 $7.92\times10^{28}$ 个,相当于若要从 $Y$ 恢复到 $X$,那么每个 $Y$ 中的元素大致要对应 $4.97\times 10^{86}$ 个原先的合理的图片。这个是难以接受的。

这个类似于从一个框(马赛克)中挑出被放进去的一个球(原图),当原图很多时,是很难挑出原来的球的。

比马赛克还要少

但是,真实的特定东西的照片,比如人脸的图片,一共能有多少张呢?我们采用一个过高的估计:假设地球上 70 亿人,每个人一生产生1亿张关于自己脸的照片,并且这样过去了1亿代人,一共会产生约 $7 \times 10 ^{25}$ 张脸的照片,存储这些照片可能把地球上的所有沙子和矿物挖完了做存储器还不够,所以是个过高的估计。就算如此,它仍然远远低于马赛克空间的大小,甚至不如 4 * 4 的“图片”的马赛克空间大,更不要提 720p 或者 1080p 照片的马赛克空间,那是让天文学家也觉得大的可笑的数目(科学计数法已经不足以对付了,它已经超过了数量级可以描述的范围)。

稀疏意味着,$f:X\rightarrow Y$ 变的近乎可逆,因为每个 $Y$ 平均对应着远远少于1的数目的原图。这是马赛克恢复的可行之处。

这个时候还用上面的图比喻就如下图的情况,可见此时挑出被放进某个框(马赛克图片)的一个球(原图)要简单很多。

但是,问题并不是那么简单,因为人脸不是“平均分布”的数据,事实上它因为非常相似的一些特征而非常接近,这是马赛克恢复的困难之处。

也就是实际情况可能更类似下图一样。

作为上采样(up-sampling)问题

对信号之类有点概念的人会发现马赛克实质上是个低通的滤波器或者是一个下采样过程。所以我们可以使用一个上采样器来恢复原图。

超分辨率问题

对于计算机视觉领域而言,有专门的模型来描述类似马赛克的问题,那就是超分辨率(Super Resolution)

马赛克和分辨率低的图片在各种意义上都是类似的:

(哈,叫你不用svg)

去除马赛克,相当于提高图像的清晰度,因此可以构建一个低清晰度向高清晰度投射的函数来完成任务。更多相关的问题就不再多说了,因为这是一篇短blog。