基於字典的影象超解析度實現
阿新 • • 發佈:2018-12-30
簡介
這段時間在看基於字典的單幀影象超解析度重建,本篇主要是對這塊做個筆記記錄。
基本原理
預處理
1、準備好用於字典訓練的低解析度影象LR及與之對應的高解析度圖片HR。 2、將低解析度影象雙線性或者三次方插值到高解析度影象相同大小,得到MR。 3、將MR影象分成若干個3x3或者5x5之類的小塊,小塊之間有1x1或者2x2之類的重疊區域,對應的高解析度影象同樣對應座標位置,分成這個多塊。 4、對MR的影象塊做特徵提取操作,可以是每個塊減去該塊平均值、或者是每個塊做梯度散度提取。
非稀疏字典處理
方法一
1、MR特徵塊集合作為低解析度字典,對應的高解析度塊集合作為高解析度字典。 2、輸入待處理的低解析度影象,並用和字典訓練一樣的塊大小做分割。 3、所有低解析度影象分割塊做特徵提取。 4、每個特徵塊X,在低解析度字典中找到最接近的K個塊。 5、通過這K個塊,擬合得到最接近該特徵塊的權重係數A。 6、找到高解析度字典上對應的該K個塊,乘上權重係數A,得到低解析度塊X對應的高解析度影象塊Y。 7、迴圈計算,直到所有低解析度塊都得到對應高解析度塊。 8、所有高解析度塊,根據之前分割座標,反向貼合(塊與塊之間重合區域,直接平均),得到結果的高解析度影象。
參考論文:Super-Resolution Through Neighbor Embedding
方法二
1、MR特徵塊集合作為低解析度字典,對應的高解析度塊集合作為高解析度字典。 2、將所有低解析度塊和高解析度塊集合,通過歐式距離,分成1024或者4096個類。 3、每個類中,使用最小二程法之類,計算對應所屬的低解析度塊到高解析度塊之間的投影矩陣。 4、輸入待處理的低解析度影象,並用和字典訓練一樣的塊大小做分割。 5、所有低解析度影象分割塊做特徵提取。 6、找到每個低解析度特徵塊X與字典中哪個類最接近,直接使用該類所屬的投影矩陣,得到對應高解析度塊Y。 7、迴圈計算,直到所有低解析度塊都得到對應高解析度塊。 8、所有高解析度塊,根據之前分割座標,反向貼合(塊與塊之間重合區域,直接平均),得到結果的高解析度影象。
參考論文:Fast Direct Super-Resolution by Simple Functions
稀疏字典處理
常規稀疏字典訓練: 1、首先通過DCT之內演算法,得到一個初始字典。 2、預處理得到的低解析度特徵塊,在初始字典中找到最相關原子。 3、該塊和原子相減,得到殘差,繼續在字典中找到和該殘差最接近的原子,繼續相減,不斷迴圈,直到殘差對於設定閥值或者迴圈次數超過一定範圍,所有對應原子位置,存入稀疏矩陣A中。 4、迴圈處理,直到計算出所有塊的稀疏矩陣A。 5、保持所有稀疏矩陣A不變,迭代更新字典,每次更新之後保證所有稀疏矩陣A和字典生成的塊與原始低解析度特徵塊,誤差更小。 6、當誤差小於某個閥值之後,便得到對應低解析度訓練字典。
注意:用來去噪之類的字典可以這麼訓練,但是超解析度重建需要高低解析度字典聯合訓練,分別得到低解析度字典和高解析度字典,在這基礎上,更復雜一點。 參考論文:On Single Image Scale-Up Using Sparse-Representations.
方法一: 1、輸入待處理的低解析度影象,並用和字典訓練一樣的塊大小做分割。 2、所有低解析度影象分割塊做特徵提取。 3、每個特徵塊,在低解析度字典中找到最接近原子。 4、該塊和原子相減,得到殘差,繼續在字典中找到和該殘差最接近的原子,繼續相減,不斷迴圈,直到殘差對於設定閥值或者迴圈次數超過一定範圍,所有對應原子位置,存入稀疏矩陣A中。 5、對應高解析度字典和稀疏矩形A相乘,得到高解析度影象塊。 6、迴圈計算,直到所有低解析度塊都得到對應高解析度塊。 7、所有高解析度塊,根據之前分割座標,反向貼合(塊與塊之間重合區域,直接平均),得到結果的高解析度影象。
參考論文:1、Image super-resolution as sparse representation of raw image patches. 2、On Single Image Scale-Up Using Sparse-Representations.
方法二: 1、在低解析度字典中,每個原子找到若干個和它最接近的原子;高解析度字典中,同樣取出對應的這些原子。 2、使用最小二程法之類,計算這些低解析度塊、高解析度原子之間的投影矩陣。 3、遍歷完整個字典原子,最終每個原子,對應都有一團鄰居原子及投影矩陣。 4、輸入待處理的低解析度影象,並用和字典訓練一樣的塊大小做分割。 5、所有低解析度影象分割塊做特徵提取。 6、找到每個低解析度特徵塊X與字典中哪個類最接近,直接使用該類所屬的投影矩陣,得到對應高解析度塊Y。 7、迴圈計算,直到所有低解析度塊都得到對應高解析度塊。 8、所有高解析度塊,根據之前分割座標,反向貼合(塊與塊之間重合區域,直接平均),得到結果的高解析度影象。
參考論文:Anchored Neighborhood Regression for Fast Example-Based Super Resolution.
方法三: 與方法二類似,區別在於:計算投影矩陣時候,每個原子尋找鄰居不是找其他原子,而是在訓練用的低解析度、高解析度塊中找,論文中建議是2048個。 如此,計算出來的投影矩陣,得到的高解析度影象,比方法二效果更好。
參考論文:A+: Adjusted Anchored Neighborhood Regression for Fast Super-Resolution
效果演示
4倍插值效果比較(左邊為opencv雙線性插值效果, 右邊為低配版方法三效果)