一文回顧常見圖像融合方法
背景介紹
圖像融合將多個源圖像(可能來自不同傳感器、不同視角、不同時間點)的信息整合到單一的輸出圖像中,這一過程旨在通過有效合并各源圖像中的互補、冗余或獨特信息,生成一個既包含所有關鍵細節又具有增強特性的綜合圖像。
例如對多幀不同曝光設置下的圖像融合可以實現高動態范圍(HDR)效果,對多幀不同焦段的圖像進行融合可以得到大景深的圖像,多張連續拍攝的相同環境下的圖片可以有效降低圖像中的噪點并提升整體畫質,多個視角的圖像拼接融合可以得到全景圖像。
根據不同的融合任務需要設定不同的準則,然后對每張圖像計算一個權重圖。根據原始圖像和融合權重圖就可以根據融合算法計算結果。圖像融合算法要保證結果過渡自然,清晰度不出現丟失。其余如色彩自然度、細節保留、邊緣過渡、偽影抑制等方面也要盡善盡美。
常見的融合算法可以根據空間域融合和頻域融合來劃分:
空間域融合
alpha融合
alpha融合作為最簡單的融合方法,對于兩張參與融合的圖像每個對應位置的像直接進行加權,alpha控制各幀圖像參與融合的比例。
alpha融合適合在前景貼圖、亮度比較接近的圖像之間的拼接任務,alpha權重通常為物體的分割結果,并且為了過渡自然權重需要保持一定的平滑性。
金字塔融合
金字塔融合被廣泛應用于多曝光融合任務中,對于不同亮度圖像間的融合alpha融合很難保證融合mask邊緣亮度過渡自然,金字塔融合利用圖像金字塔結構來實現圖像的多尺度融合,保證過渡平滑性。
金字塔融合主要涉及權重的高斯金字塔融合和圖像的拉普拉斯金字塔融合,高斯金字塔是由同一幅圖像經過一系列降采樣和濾波操作構建而成的一組不同分辨率的集合,而拉普拉斯金字塔是高斯金字塔每個尺度的殘差,那么圖像就被分解為低分辨率下的低頻分量和不同尺度下的高頻細節。
def gaussian_kernel(size=5, sigma=0.4):
return cv2.getGaussianKernel(ksize=size, sigma=sigma)
def image_reduce(image):
kernel = gaussian_kernel()
# out_image = cv2.filter2D(image, cv2.CV_32FC3, kernel)
out_image = cv2.resize(image, None, fx=0.5, fy=0.5, interpolatinotallow=cv2.INTER_CUBIC)
return out_image
def image_expand(image, shape_1, shape_0):
kernel = gaussian_kernel()
out_image = cv2.resize(image, (shape_1, shape_0), interpolatinotallow=cv2.INTER_CUBIC)
# out_image = cv2.filter2D(out_image, cv2.CV_32FC3, kernel)
return out_image
def gaussian_pyramid(img, depth):
G = img.copy()
gp = [G]
for i in range(depth):
G = image_reduce(G)
gp.append(G)
return gp
def laplacian_pyramid(img, depth):
gp = gaussian_pyramid(img, depth + 1)
lp = [gp[depth - 1]]
for i in range(depth - 1, 0, -1):
GE = image_expand(gp[i], gp[i - 1].shape[1], gp[i - 1].shape[0])
L = cv2.subtract(gp[i - 1], GE)
lp = [L] + lp
return lp
對于每個尺度分別進行alpha融合得到該層融合結果,最后對融合結果的拉普拉斯金字塔做一次重建(當前層上采樣疊加上一層)就可以得到融合結果。
泊松融合
圖像泊松融合(Poisson Blending)是一種先進的圖像編輯技術,主要用于將源圖像中的某個物體或區域無縫地嵌入到目標圖像中,創建出自然、無明顯接縫的新圖像。這一技術基于泊松方程及其在圖像處理中的應用,特別適用于需要精確匹配源圖像和目標圖像之間光照、紋理和色彩的情況,以實現難以察覺的融合效果。
相較于Alpha融合,泊松融合對源圖像融合邊緣的精確性要求較低,不需要α mask精確的把物體貼邊的截取出來,仍能實現較好的融合效果。
泊松融合的原理如下:v代表目標圖像D的原始梯度場, g代表目標圖像D的原始標量場(亮度),現在需要把目標圖像這部分區域融進源圖像S中,重建的融合結果我們設為f:
一方面我們希望f的結構信息(梯度)和目標圖像D的梯度v不要有太大的變化,另一方面也希望f融合邊界Ω的亮度和源圖像S的邊界亮度要相等,這樣才能有一個平滑的過渡:
對于這個泛函方程的求解,帶入歐拉-拉格朗日方程后,可以看成帶有狄利克雷邊界條件的泊松方程:
這里三角形代表亮度標量場的拉普拉斯算子,div代表梯度矢量場的散度。根據不同的需求散度可以直接等于目標圖像D的散度,也可以對前后景D和S的散度做一些混合(mixed)。
補充材料:淺談矢量場 -- 1.梯度、散度與拉普拉斯算子:https://blog.csdn.net/poisonchry/article/details/114387703
IHS融合
IHS融合(Intensity-Hue-Saturation Fusion)是一種主要用于遙感圖像處理領域的圖像融合技術,針對多光譜圖像與高分辨率全色圖像進行融合。其目的是結合多光譜圖像豐富的光譜信息與全色圖像的高空間分辨率,生成一幅既具有高空間細節又包含多光譜特征的融合圖像。
通過HIS變換將多光譜圖像低空間分辨率的強度分量I和顏色成分H、S區分開,然后將全色圖像高空間分辨率的強度分量替換過來,就可以得到一張色度和飽和度分量保持不變并且分辨率提升的圖像。最后反HIS變換得到最終輸出,即達到了空間分辨率的提升也對光譜信息和色彩做了保留。
PCA融合
主成分分析(PCA)被廣泛應用于數據降維,通過一組小于原始維度數量的基底P對原始數據X進行線性變換,將大量相關變量的信息濃縮到少數幾個主成分中。其中每個主成分反映原始變量的大部分信息,特征值表示對應主成分所解釋的原始數據的總方差比例。
PCA融合與IHS融合一樣主要應用在遙感圖像處理領域中,將具有不同特性的多光譜圖像(高光譜分辨率、低空間分辨率)與全色圖像(高空間分辨率、低光譜分辨率)結合起來,生成同時具備高空間分辨率和高光譜分辨率的融合圖像。
實際處理中對于多光譜圖像首先進行PCA分析,找出波段間協方差矩陣的主要特征向量(主成分),這些主成分代表了多光譜數據的主要變異方向,即光譜信息的主要組成部分。
對于全色圖像將像素值(單波段)經過某種方式(如直方圖匹配)調整,使其與多光譜圖像的第一主成分(通常包含最多光譜信息)相匹配,使兩者在光譜層面有一定的對應關系。
最后將調整后的全色圖像(攜帶空間細節)與多光譜圖像(攜帶光譜信息)按照某種規則(如加權平均、替換低頻部分等)進行融合,生成最終的高空間分辨率、高光譜分辨率的融合圖像。
補充材料:PCA主成分分析學習總結 (https://zhuanlan.zhihu.com/p/32412043),奇異值分解SVD(https://zhuanlan.zhihu.com/p/29846048)
頻域融合
DCT融合
DCT變換將像素域的數據轉換到頻率域,頻域中圖像的能量主要集中在低頻部分,高頻部分則包含了更多的細節和邊緣信息。我們可以利用多幀圖像各自的頻譜特性取長補短,提高圖像的細節等部分。
圖像分塊:將輸入的各幀圖像分割成大小相同的子塊。
DCT變換:對每個子塊分別進行DCT變換轉換到頻率域。
融合規則:在DCT域內,通常依據各子塊的頻率特性進行融合操作,如高頻信息融合保留圖像的高頻部分,因為其提供了更豐富的空間細節。低頻信息融合根據圖像的空間結構信息,通過加權、插值等方式融合低頻部分。
逆DCT變換:A將融合后的DCT系數進行逆變換得到融合后的子塊圖像,并將所有融合后的子塊拼接起來形成完整的融合圖像。
在多景深合成任務中,融合準則設計為低頻做平均、高頻取最大值的策略,可以看到融合結果清晰度恢復效果比較好,并且也沒有明顯的塊效應。
小波融合
小波分析能夠同時捕獲圖像的頻率和空間信息,使得在融合過程中能夠有效地保留源圖像的細節和結構特征。DWT 融合的基本步驟與DCT基本類似:首先對各幀圖像進行小波變換,然后按照一定的融合準則對各幀的變換系數進行加權處理合并為一幀,最后對合并的單幀系數進行小波逆變換得到最后融合圖像。
這里依然以多景深融合為例展示融合的過程,由于多景深融合需要取各幀清晰度高的地方,因此融合準則是取變換后系數的大數融合:
論文匯總
本文轉自 AI生成未來 ,作者無關風月
