OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
影像配準

詳細說明

配準模組實現了引數化影像配準。所實現的**方法是直接對齊**,即它直接使用畫素值來計算影像對之間的配準,這與基於特徵的配準相反。該實現主要遵循[265]中的相應部分。

當我們嘗試配準在不同光照條件或曝光時間下拍攝的圖片,或者當影像只部分重疊時,基於特徵的方法相對於基於畫素的方法具有一些優勢。另一方面,與基於特徵的方法相比,基於畫素方法的主要優勢在於,對於某些圖片(在相似的光照條件下拍攝且有顯著重疊的圖片),它們具有更好的精度,因為我們使用了影像中所有可用資訊,這使我們能夠實現亞畫素精度。這對於多幀去噪或超解析度等某些應用尤其重要。

事實上,畫素和特徵配準方法可以相互補充:一個應用可以先使用特徵獲得粗略的配準,然後對影像的重疊區域使用基於畫素的方法來精煉配準。所開發的程式碼允許這種用例。

該模組實現了從抽象類cv::reg::Mapcv::reg::Mapper派生的類。前者用於模擬兩個影像之間的座標變換,後者封裝了一種呼叫計算影像對之間Map的方法。儘管目標是實現基於畫素的方法,但該模組可以擴充套件以支援其他可以計算影像之間變換的方法(特徵方法、光流等)。

Map派生的每個類都實現了運動模型,如下所示:

MapProject也可以用於模擬仿射運動或平移,但對其進行某些操作的成本更高,這就是定義另外兩個類的原因。

Mapper派生的類有:

如果影像之間的運動不是非常大,使用這些類的正常方法是建立一個MapperGrad*物件,並將其作為輸入來建立一個MapperPyramid,然後呼叫它來執行計算。然而,如果影像之間的運動足夠小,我們可以直接使用MapperGrad*類。另一種可能性是先使用基於特徵的方法進行粗略配準,然後透過MapperPyramid或直接一個MapperGrad*物件進行精煉。mapper的“calculate”方法接受一個初始運動估計作為輸入。

在決定使用哪個MapperGrad時,我們必須考慮到引數更多的mapper可以處理更復雜的運動,但涉及的計算量更大,因此速度更慢。此外,如果我們對序列遵循的運動模型有信心,超出所需範圍增加引數數量會降低精度:最好使用我們能使用的最少自由度。

在模組測試中,有一些例子展示瞭如何使用任何已實現的mapper來配準一對影像。

類  cv::reg::Map
 用於模擬兩個影像之間Map的基類。更多...
 
類  cv::reg::MapAffine
 
類  cv::reg::Mapper
 用於模擬計算map的演算法的基類。更多...
 
類  cv::reg::MapperGradAffine
 
類  cv::reg::MapperGradEuclid
 
類  cv::reg::MapperGradProj
 
類  cv::reg::MapperGradShift
 
類  cv::reg::MapperGradSimilar
 
類  cv::reg::MapperPyramid
 
類  cv::reg::MapProjec
 
類  cv::reg::MapShift
 
類  cv::reg::MapTypeCaster