拉普拉斯金字塔融合

2021-08-07 18:03:31 字數 1376 閱讀 4618

影象金字塔方法的原理是:將參加融合的的每幅影象分解為多尺度的金字塔影象序列,將低解析度的影象在上層,高解析度的影象在下層,上層影象的大小為前一層影象大小的1/4。層數為0,1,2……n。將所有影象的金字塔在相應層上以一定的規則融合,就可得到合成金字塔,再將該合成金字塔按照金字塔生成的逆過程進行重構,得到融合金字塔。這個總的思路就是一下所有基於金字塔融合的演算法過程,不同點就在於分解構造的金字塔不同,每層的融合規則不一樣,重構的方法不同而已。金字塔方法最先實現了這種思想,之後小波方法進一步完善和發展了這種多尺度融和的思想。

(1)高斯金字塔

高斯金字塔是最基本的影象塔。首先將原影象作為最底層影象g0(高斯金字塔的第0層),利用高斯核(5*5)對其進行卷積,然後對卷積後的影象進行下取樣(去除偶數行和列)得到上一層影象g1,將此影象作為輸入,重複卷積和下取樣操作得到更上一層影象,反覆迭代多次,形成乙個金字塔形的影象資料結構,即高斯金字塔。

高斯金字塔的構建過程為:假設高斯金字塔的第l層影象為gl:

式中n為高斯金字塔頂層層號,rl和cl分別為高斯金字塔第l層的行數和列數w(m,n)是乙個二維可分離的5*5視窗函式,表示式為:

由g0,g1,,,gn,就構成了乙個高斯金字塔,其中g0為高斯金字塔的底層(與原影象相同)gn為金字塔的頂層。由此可見高斯金字塔的當前層影象就是對其前一層影象首先進行高斯低通濾波,然後再進行隔行和隔列的降2取樣而生成的。前一層影象大小依次為當前層影象大小的4倍。

opencv中使用pyrdown函式就可以獲得高斯金字塔。

(2)拉普拉斯金字塔

在高斯金字塔的運算過程中,影象經過卷積和下取樣操作會丟失部分高頻細節資訊。為描述這些高頻資訊,人們定義了拉普拉斯金字塔(laplacian pyramid, lp)。用高斯金字塔的每一層影象減去其上一層影象上取樣並高斯卷積之後的**影象,得到一系列的差值影象即為 lp 分解影象。

將gl內插方法得到放大影象*gl,使*gl的尺寸與*gl-1的尺寸相同,即放大運算元expand

該式子實現兩個步驟:在偶數行和列插入0,然後使用下取樣中的高斯核進行濾波處理,得到和l-1層一樣大小的影象。

n為拉普拉斯金字塔頂層的層號lpl是拉普拉斯金字塔分解的第l層影象。由lp0,lp1、lp2…lpn構成的金字塔即為拉普拉斯金字塔。它的每一層l0影象是高斯金字塔本層g0影象與其高一層影象g1經內插放大後影象*g1的差,此過程相當於帶通濾波,因此拉普拉斯金字塔又稱為帶通金字塔分解。

內插方法:opencv中有實現的函式pyrup。可以得到*g1。然後在兩個函式作差,相減就可以得到拉普拉斯金字塔。

求得每個影象的拉普拉斯金字塔後需要對相應層次的影象進行融合,具體的融合規則有,取大、取小,等等。

(3)重構

對融合後的拉普拉斯金字塔,從其頂層開始逐層從上至下按下式進行遞推,可以恢復其對應的高斯金字塔,並最終可得到原影象g0。就是從最高層開始使用內插的方法。

高斯金字塔與拉普拉斯金字塔(python實現)

一 高斯金字塔 高斯金子塔的思路非常簡單,就是將原始影象當作金子塔的最底層,然後進行按影象長寬各減少二分之一,面積減少四分之一,進行下取樣。在進行下取樣之前需要進行高斯濾波。import numpy as np import cv2 import matplotlib.pyplot as plt d...

OpenCV 38 拉普拉斯金字塔

對輸入影象實現金字塔的reduce操作就會生成不同解析度的影象 對這些影象進行金字塔expand操作,然後使用reduce減去expand之後的結果就會得到影象拉普拉斯金字塔影象。舉例如下 輸入影象g 0 金字塔reduce操作生成 g 1 g 2 g 3 拉普拉斯金字塔 l0 g 0 expand...

拉普拉斯融合演算法

無意看到了拉普拉斯的影象融合演算法,瀏覽了幾篇部落格,終於弄懂了其中的原理,現在作乙個記錄,方便以後理解使用。演算法流程 1.分別計算待融合的兩幅影象的拉普拉斯金字塔 2.計算得到兩幅影象最頂層的高斯金字塔 這一步包含在第一步當中,因為在求拉普拉斯金字塔前要先得到影象的高斯金字塔 3.生成每一級的掩...