超解析度成像

超解析度成像（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）
- 迭代稀疏漸近最小方差演算法