超分辨率成像

超分辨率成像（Super-resolution imaging，缩写SR），是一种提高影片分辨率的技术。在一些称为“光学SR”的SR技术中，系统的绕射极限被超越；而在其他所谓的“几何SR”中，数位感光元件的分辨率因而提高。超分辨率成像技术用于一般图像处理和超高分辨率显微镜。

## 小波变换相关技术

在2000年以来，小波变换的技术被使用在提高影像的分辨率。

### DASR

DASR (Demirel-Anbarjafari Super Resolution)是使用离散小波变换（Discrete wavelet transform）来进行超分辨率成像的方法。当时，超分辨率成像通常是以内插影像的像素值来完成，而作者认为，对影像中的高频部分进行内插是造成品质降低的主要理由，因为内插高频部分让物体的边界变得模糊且平滑，于是提出使用离散小波变换的算法来减轻这个问题。

影像可以表示成二维的讯号，经过二维的离散小波变换，可以被分解成四个不同频段的影像，分别是：low-low (LL), low-high (LH), high-low (HL) 和 high-high (HH)，各自代表在不同维度是高频或低频，举例来说，LH就是在原影像的第一维(x轴)是低频而在第二维(y轴)是高频的分解后结果。

将原影像分解为LL, LH, HL和HH后，DASR会对高频段的三张影像LH, HL和HH分别做内插，以产生高分辨率的LH, HL和HH。这是由于作者认为，将不同的高频影像各自做内插，能够避免彼此干扰，进而保留更多的高频资讯。DASR不会内插LL，而是内插原图来当作高分辨率的LL，因为原图比LL含有更多资讯。取得四张高分辨率的LL, LH, HL和HH后，DASR将四张影像经过逆离散小波变换(Inversed discrete wavelet transform)，来生成最终的成像结果。

DASR当时在 Lena, Elaine, Pepper和Baboon上取得State-of-the-art的结果，并超越传统使用内插和其它使用离散小波变换的方法。

## 深度神经网络相关技术

随着神经网络的流行，相关技术也被应用在提高图片分辨率。

### SRCNN

SRCNN ( Super-resolution convolution neural network )是一个神经网络，输入是一个低分辨率（视觉上）的图像，而输出是一个高分辨率的图像，这里需要注意的是，在将图像喂进神经网络前，需要先经过一个预处理bicubic interpolation，将原始图片变成跟想要的高分辨率图像一样大小后，再喂进神经网络中。而神经网络做的事情，主要分成三个步骤区块特征抽取与表达（Patch extraction and representation）、非线性对应（non-linear mapping）以及重建（reconstruction）。

#### 区块特征抽取与表达（Patch extraction and representation）

这一步就如同一般的CNN ( convolution neural network )，只是没有经过max-pooling，公式如下。

$F_1(Y) = \max(0, W_1 \ast Y + B_1)$ $Y$代表已经经过bicubic interpolation的图像，$F_1(Y)$则为这层神经网络的输出，$W_1$代表$n_1$个$c \times f_1 \times f_1$的filter（$c$是图像的channel数量，而$f_1$则为filter的大小），$\ast$代表卷积（convolution），$B_1$是偏移量（bias），最后的$\max$则代表激活函数RELU。

#### 非线性对应（non-linear mapping）

非线性对应，基本上就是持续利用一般CNN的方式将前一步每一块的$n_1$维的特征向量，分别转换成$n_2$维的特征向量，公式如下。

$F_2(Y) = \max(0, W_2 \ast F_1(Y) + B_2)$

#### 重建（reconstruction）

在重建的步骤中，我们要考虑的是每一个像素所要的值是多少，这个步骤可以想成在多个相关的高维度的特征向量中，取一个平均，很凑巧的，这刚好也很像一般的卷积层（convolution layer），公式如下。

$F(Y) = W_3 \ast F_2(Y) + B_3$

#### 训练方法

在SRCNN中所采用的差异函数（Loss Function）是简单的平均方根差（Mean Square Error），定义为重建后的相片每一个像素与真正的图片的每一个像素的差异，公式如下。

$L(\theta)=\frac{1}{n}\sum_{i=1}^n \| F(Y_i; \theta) - X_i \|^2$ $\theta$为SRCNN的参数，$F(Y_i;\theta)$为给定的SRCNN重建$Y_i$的图像，$X_i$则为真正的高分辨率图像，$n$为拿来训练神经网络的图像数量或者是一个batch中所有的图像数量。

### Losses for Real-Time Style Transfer and Super-Resolution"

这篇论文提供了一个做法，可以应用在图像风格转移（Style Transfer）以及超高分辨率（Super-resolution）。

整个系统由两个神经网络组成，其中一个是图像转移网络$f_W$，另一个则是可以用来定义各种差异的差异网络$\phi$。

#### 图像转移网络$f_W$

图像转移网络的输入为一张图像，输出也是一张图像，而这个网络的参数以$W$表示。

这个图像转移网络由5个residual block所组成，而所有非residual的convolution layer后面都会接上batch normalization。激活函数（activation function）的部分，除了在最后的输出层（output layer）使用scaled tanh使得输出的数值在0到255之间，其他都是使用RELU。

convolution layer的filter（kernel）的数量上，第一层和最后一层使用$9 \times 9$个，其他层则是使用$3 \times 3$个。

#### 差异网络$\phi$

差异网络定义了各种差异函数（loss function），输入为两张图像，一张来自图像转移网络，一张则是真正的高分辨率影像，输出为一个实数（scalar）。

而这篇论文所使用的差异网络是16层的VGG网络，并事先利用Image Net训练过。差异函数的部分，使用了两个不同于传统简单的差异函数。（CHW代表feature map各个维度的数值）

##### 特征重建差异（Feature Reconstruction Loss）

这个差异函数的设计理念在于，当我们在看两张图片像不像时，我们并不是一个一个像素的比较，而是比较两张图片中的特征像不像。因此，他拿差异网络中某一层的输出，当作一个图片特征值，再以两张图片的特征值的Euclidean Distance当作差异。

$l_{feat}^{\phi, j}(\hat{y},y)=\frac{1}{C_j H_j W_j}\| \phi_j(\hat{y}) - \phi_j(y)\|_2^2$

##### 风格重建差异（Style Reconstruction Loss）

除了一般的特征以外，我们也会需要图像转移网络正确的重建颜色、材质等等的内容，因此必须再加上风格重建差异函数。

在定义风格重建差异之前，我们先定义Gram矩阵$G_j^{\phi}(x)_{c,c'}$。

$G_j^{\phi}(x)_{c,c'}=\frac{1}{C_j H_j W_j}\sum_{h=1}^{H_j}\sum_{w=1}^{W_j}\phi_j(x)_{h,w,c}\phi_j(x)_{h,w,c'}$

接着差异函数就可以定义为$l_{style}^{\phi,j}(\hat{y},y)=\| G_j^{\phi}(\hat{y}) - G_j^{\phi}(y) \|_F^2$

而一般比较每一个像素差异的差异函数，则可以写为$l_{pixel}(\hat{y},y)=\|\hat{y}-y\|_2^2/CHW$

有了这两个网络后，训练图像转移网络的方法则是最小化各式差异函数的权重和（weighted sum），优化的方法是梯度下降法（Stochastic Gradient Descent（l是差异函数（loss function）））。

$W^* = arg \min_W E_{x,\{y_i\}}[\sum_{i=1} \lambda_i l_i( f_W(x), y_i ) ]$

这篇论文在高分辨率图像这个传统问题上，给了一个快速且有效的解法，快速的原因在于，在遇到一张新的图片时，只需要把图像喂进图像转移网络就好（一次forward pass）。而在结果上，也大大的超越了之前的做法（一样使用深度神经网络）SRCNN。

## 立体图像超分辨率成像

立体图像超分辨率成像（Stereo Image Super-Resolution，缩写SSR）是一种利用多台相机对同一场景进行拍摄的影像进行超分辨率成像的技术。通常，SSR技术的目的是提高低分辨率的立体图像对的空间分辨率，从而获得更加细致、清晰的立体图像。单张图像超分辨率成像（Single Image Super-Resolution）方法在单张图像上进行超分辨率处理，但当只有单张图像时，无法从中获得立体资讯。而SSR技术利用两台或多台相机同时拍摄同一场景的影像，通过分析这些影像中的立体资讯，从而实现对低分辨率立体图像对的超分辨率成像。

SSR技术的关键是能够对齐或是解析不同视角的立体图像，并处理影像之间的视差，以便将它们结合在一起进行超分辨率处理。一旦能够取得视差资讯，可以使用多种超分辨率技术，如插值、机器学习等方法，来提高分辨率。

### 应用

- 虚拟现实和扩增实境：SSR技术可以提供更高品质的立体图像，补足更多图像细节和提供更高清晰度，改善虚拟现实和扩增实境应用中的视觉体验，使使用者感受到更加真实的视觉效果。
- 医学影像：在医学影像领域，SSR技术可以帮助医生更准确地分析立体影像，提供更详细的医学诊断和手术规划。例如，在医学摄影中使用SSR技术可以提高医学影像的分辨率，帮助检测病灶和细节。

### 基于深度学习的方法

由于机器学习是一种能够从资料中自动分析获得规律，并利用规律对未知资料进行预测的算法，因此在超分辨率领域可以借由让神经网络模型从大量的训练数据中学习到高分辨率图像的统计特性和特征，来获得提高立体图像的超分辨率成像效果。

立体图像超分辨率成像作为单张图像超分辨率成像的延伸，在神经网络架构的设计上是可以沿用单张图像超分辨率成像的架构的，再加入图像间特征混合的作法来处理影像之间的视差，如此便可以有效利用不同视角的图片间的资讯，将分辨率提升至比单张图像超分辨率成像还要高的品质，如：NAFSSR即是一个以此概念设计的神经网络。

由于立体图像超分辨率任务是很容易过适的，因此在训练过程中，需要适当的加上数据扩充方法，常见的方法为随机裁减训练影像的部分区块、随机的水平或上下翻转，以及随机排列RGB颜色通道的顺序。

### 相关资料集

- KITTI 2012
- KITTI 2015
- Middlebury
- Flickr1024

## 参见条目

- 超分辨率显微镜
- 光学分辨率
- 混叠
- 过采样
- 压缩感知
- 核磁共振成像（MRI）
- 迭代稀疏渐近最小方差算法