(Source:https://blog.sicara.com/image-registration-sift-deep-learning-3c794d794b7a)
圖像配准方法概述
圖像配准廣泛用於遙感,醫學圖像,計算機視覺等。通常,它的應用根據圖像獲取方式主要分為四組:
- 不同視角(多視角分析)——從不同視角獲取同一場景圖像。其目的是為了獲得更大的2D視圖或者掃描場景的3D表示。應用示例:遙感-被檢區域圖像的拼接。計算機視覺-形狀恢復(立體形狀)。
- 不同時間(多時分析)——從不同時間獲取同一場景圖像,通常是定期的,可能在不同條件下。其目的是找到和評價連續獲得的圖像之間場景的改變。應用示例:遙感-全球土地使用監督,景觀規划。計算機視覺-安防自動改變檢測,運動追蹤。醫學圖像-愈合治療監督,腫瘤進展監督。
- 不同傳感器(多模態分析)——從不同傳感器獲得同一場景圖像。其目的是整合不同來源的信息來獲得更復雜更細節的場景表示。應用示例:遙感-不同特征傳感器信息融合,如有更好空間分辨率的全色圖像,有更好光譜分辨率的彩色/多光譜圖像,或與雲層和光照無關的雷達圖像。研究結果可應用於放射治療和核醫學領域。
- 場景到模型的配准。一個場景的圖像和場景的模型配准。模型可以是場景的計算機表示,例如GIS中的地圖或數字海拔模型(DEM),有相似內容的另一個場景,'平均'標本等。其目的是在場景/模型中定位獲得的圖像,並且/或者比較它們。應用示例:遙感-航空或者衛星數據到地圖或者其它GIS層的配准。計算機視覺-目標模板匹配實時圖像,自動質檢。醫學圖像-病人圖像和數字解剖集的比較,標本分類。
由於配准圖像的多樣性和各種類型的退化,不能設計出適合所有配准任務的通用方法。每種方法不僅要考慮圖像之間假定的幾何變形類型,還要考慮輻射變形和噪聲損壞,所需配准的准確率和應用數據特征。
盡管如此,配准方法主要包含以下四步(圖1):
- 特征檢測。手動或者可能自動檢測顯著和獨特的對象(閉合邊界區域,邊緣,輪廓,交線,角點等)。為了進一步處理,這些特征可以通過點來表示(重心,線尾,特征點),這些點稱為控制點(CP)。
- 特征匹配。建立場景圖像和參考圖像特征之間的相關性。使用各種各樣的特征描述符,相似性度量,連同特征的空間相關性。
- 轉換模型估計。估計將感測圖像和參考圖像對齊的所謂映射函數的類型和參數。映射函數的參數通過特征相關性計算。
- 圖像重采樣和轉換。使用映射函數轉換感測圖像。使用合適的插值技術計算非整數坐標的圖像值。
圖1:圖像配准四個步驟:上-特征檢測。中-通過不變的描述符來特征匹配。左下-利用建立的相關性估計轉換模型。右下-用合適的插值技術進行圖像沖采樣和轉換。
每個配准步驟的實現都有自己典型的問題。首先,必須決定哪種特征適合給定的任務。特征應該是有鑒別性的目標,並且在圖像上廣泛存在以及容易檢測。通常,特征的物理可解釋性是需要的。參考圖像和感測圖像上的特征必須有足夠相同的元素,甚至在圖像沒有准確地覆蓋同樣的場景或者有物體阻擋又或者其它的改變的情況下。檢測方法應該有好的定位准確性,並且應該對假定的圖像退化不敏感。理想情況下,算法能在場景所有投影情況下檢測到同樣的特征,不管特定的圖像變形。
在特征匹配步驟,由不正確的特征檢測或者圖像退化造成的問題可能就出現了。由於不同的圖像條件或者傳感器的不同光譜敏感性,物理上的相關特征可能是不相似的。特征描述和相似性衡量的選擇必須考慮到這些因素。對於假定的退化特征描述符應該是不變的。同時,它們必須有足夠的可鑒別性來區分不同特征以及足夠的穩定性,為了不被輕微的特征變化和噪音所影響。在不變量空間的匹配算法應該是魯棒和高效的。在其它圖像上沒有相關對應的單一特征應該不影響性能。
根據圖像獲取步驟和期望的圖像退化先驗知識來選擇映射函數的類型。如果沒有一個先驗信息,模型應該足夠靈活和通用來處理所有可能出現的退化。特征檢測方法的准確性,特征相關性估計的可靠性,以及可接受的近似誤差也需要考慮。此外,必須決定圖像中哪種差異通過配准來移除。如果目標是變化檢測,則不希望移除正在搜索的差異。這個問題是非常重要的並且很難。
最終,合適的重采樣技術的選擇要取決於要求的插值准確性和計算復雜度來折中。在大多數情況下最近鄰或雙線性插值就夠了;然而,一些應用要求更准確的方法。
從傳統方法到深度學習
- 傳統的基於特征的方法
自21世紀初以來,圖像配准主要使用基於特征的方法。這些方法有三個步驟:關鍵點檢測和特征描述,特征匹配,圖像變換。簡單的說,我們選擇兩個圖像中的感興趣點,將參考圖像(reference image)與感測圖像(sensed image)中的等價感興趣點進行關聯,然后變換感測圖像使兩個圖像對齊。
Feature-based methods for an image couple associated by a homography transformation
關鍵點檢測和特征描述
關鍵點就是感興趣點,它表示圖像中重要或獨特的內容(邊角,邊緣等)。每個關鍵點由描述符表示,關鍵點基本特征的特征向量。描述符應該對圖像變換(定位,縮放,亮度等)具有魯棒性。許多算法使用關鍵點檢測和特征描述:
- SIFT^4(Scale-invariant feature transform)是用於關鍵點檢測的原始算法,但它不能免費用於商業用途。SIFT特征描述符對於均勻縮放,方向,亮度變化和對仿射失真不變的部分不會發生變化。
- SURF^5(Speeded Up Robust Features)是一個受SIFT啟發的探測器和描述符。它的優點是非常快。它同樣是有專利的。
- ORB^6(Oriented FAST and Rotated BRIEF)是一種快速的二進制描述符,它基於 FAST^7(Features from Accelerated Segment Test)關鍵點檢測和 BRIEF^8(Binary robust independent elementary features)描述符的組合。它具有旋轉不變性和對噪聲的魯棒性。它由OpenCV實驗室開發,是SIFT有效的免費替代品。
- AKAZE^9(Accelerated-KAZE)是KAZE^10快速版本。它為非線性尺度空間^11提供了快速的多尺度特征檢測和描述方法,具有縮放和旋轉不變性。
這些算法都可以在OpenCV中輕松使用。在下面的例子中使用了AKAZE的OpenCV實現。其他算法的代碼大致相同,只需要修改算法的名稱。
import numpy as np import cv2 as cv img = cv.imread('image.jpg') gray= cv.cvtColor(img, cv.COLOR_BGR2GRAY) akaze = cv.AKAZE_create() kp, descriptor = akaze.detectAndCompute(gray, None) img=cv.drawKeypoints(gray, kp, img) cv.imwrite('keypoints.jpg', img)
Image Keypoints
更多關於特征檢測與描述請參見:OpenCV tutorial
特征匹配
一旦在一對圖像中識別出關鍵點,我們就需要將兩個圖像中對應的關鍵點進行關聯或“匹配”。其中一種方法是BFMatcher.knnMatch()
。這個方法計算每對關鍵點之間的描述符的距離,並返回每個關鍵點的k個最佳匹配中的最小距離。
然后我們設定比率來保持正確率。實際上,為了使匹配更可靠,匹配的關鍵點需要比最近的錯誤匹配更靠近。
import numpy as np import cv2 as cv import matplotlib.pyplot as plt img1 = cv.imread('image1.jpg', cv.IMREAD_GRAYSCALE) # referenceImage img2 = cv.imread('image2.jpg', cv.IMREAD_GRAYSCALE) # sensedImage # Initiate AKAZE detector akaze = cv.AKAZE_create() # Find the keypoints and descriptors with SIFT kp1, des1 = akaze.detectAndCompute(img1, None) kp2, des2 = akaze.detectAndCompute(img2, None) # BFMatcher with default params bf = cv.BFMatcher() matches = bf.knnMatch(des1, des2, k=2) # Apply ratio test good_matches = [] for m,n in matches: if m.distance < 0.75*n.distance: good_matches.append([m]) # Draw matches img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good_matches,None,flags=cv.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) cv.imwrite('matches.jpg', img3)
Matched Keypoints
OpenCV中關於特征匹配方法的實現
圖像變換
在匹配至少四對關鍵點之后,我們就可以將一個圖像轉換為另一個圖像,稱為圖像變換^12(image warping)。空間中相同平面的兩個圖像通過單應性變換^13(Homographies)進行關聯。Homographies是具有8個自由參數的幾何變換,由3x3矩陣表示圖像的整體變換(與局部變換相反)。因此,為了獲得變換后的感測圖像,需要計算Homographies矩陣。
為了得到最佳的變換,我們需要使用RANSAC算法檢測異常值並去除。它內置在OpenCV的findHomography方法中。同時也存在RANSAC算法的替代方案,例如LMEDS:Least-Median魯棒方法。
# Select good matched keypoints ref_matched_kpts = np.float32([kp1[m[0].queryIdx].pt for m in good_matches]).reshape(-1,1,2) sensed_matched_kpts = np.float32([kp2[m[0].trainIdx].pt for m in good_matches]).reshape(-1,1,2) # Compute homography H, status = cv.findHomography(ref_matched_kpts, sensed_matched_kpts, cv.RANSAC,5.0) # Warp image warped_image = cv.warpPerspective(img1, H, (img1.shape[1]+img2.shape[1], img1.shape[0])) cv.imwrite('warped.jpg', warped_image)
Sensed image after warping
深度學習方法
目前大多數關於圖像配准的研究涉及深度學習。在過去的幾年中,深度學習使計算機視覺任務具有先進的性能,如圖像分類,物體檢測和分割。
特征提取
深度學習用於圖像配准的第一種方式是用於特征提取。卷積神經網絡設法獲得越來越復雜的圖像特征並進行學習。2014年以來,研究人員將這些網絡應用於特征提取的步驟,而不是使用SIFT或類似算法。
- 2014年,Dosovitskiy等人提出了一種通用的特征提取方法,使用未標記的數據訓練卷積神經網絡。這些特征的通用性使轉換具有魯棒性。這些特征或描述符的性能優於SIFT描述符以匹配任務。
- 2018年,Yang等人開發了一種基於相同思想的非剛性配准方法。他們使用預訓練的VGG網絡層來生成一個特征描述符,同時保留卷積信息和局部特征。這些描述符的性能也優於類似SIFT的探測器,特別是在SIFT包含許多異常值或無法匹配足夠數量特征點的情況下。
Homography學習
研究人員利用神經網絡直接學習幾何變換對齊兩幅圖像,而不僅僅局限於特征提取。
監督學習
在2016年,DeTone等人發表了 Deep Image Homography Estimation,提出了HomographyNe回歸網絡,這是一種VGG風格模型,可以學習兩幅相關圖像的單應性。該算法具有以端到端的方式同時學習單應性和CNN模型參數的優勢,不需要前兩個階段的過程!
Regression HomographyNet
網絡產生八個數值作為輸出。以監督的方式進行訓練,並計算輸出和真實單應性之間的歐幾里德損失。
Supervised Deep Homography Estimation
與其他有監督方法一樣,該單應性估計方法需要有標記數據。雖然很容易獲得真實圖像的單應性,但在實際數據上要昂貴得多。
無監督學習
基於這個想法,Nguyen等人提出了一種無監督的深度圖像單應性估計方法。他們保留了相同結構的CNN,但是使用適合無監督方法的損失函數:不需要人工標簽的光度損失(photometric loss)函數。相反,它計算參考圖像和感測變換圖像之間的相似性。
他們的方法引入了兩種新的網絡結構:張量直接線性變換和空間變換層。我們可以簡單地使用CNN模型輸出的單應性參數獲得變換后的感測圖像,然后我們使用它們來計算光度損失。
Unsupervised Deep Homography Estimation
作者聲稱,與傳統的基於特征的方法相比,這種無監督方法具有相當或更高的准確率和魯棒性,並且具有更快的執行速度。此外,與有監督方法相比,它具有更好的適應性和性能。
其他方法
強化學習
強化學習方法作為醫學應用的常用方法正在得到越來越多的關注。與預定義的優化算法相反,在這種方法中,我們使用訓練好的代理進行配准。
A visualization of the registration pipeline for reinforcement learning’s technics
- 2016年,Liao 等人首先使用強化學習進行圖像配准。他們的方法基於有監督算法進行端到端的訓練。它的目標是通過尋找最佳的運動動作序列來對齊圖像。這種方法優於最先進的方法,但它只能用於剛性轉換。
- 強化學習也可以用於更復雜的轉換。在Robust non-rigid registration through agent-based action learning論文中,Krebs等人使用人工代理優化變形模型參數。該方法對前列腺MRI圖像的患者間的配准進行實驗,在2-D和3-D中表現出了較好的結果。
復雜的轉換
在當前圖像配准研究中占較大比例的是醫學影像。通常,由於患者的局部變形(因呼吸,解剖學變化等),兩個醫學圖像之間的變換不能簡單地通過單應矩陣描述,這需要更復雜的變換模型,例如由位移矢量場表示微分同胚(diffeomorphisms)。
Example of deformation grid and displacement vector field on cardiac MRI images
研究人員開始嘗試使用神經網絡來估計這些具有許多參數的大變形模型。
- 一個例子是上面提到的Krebs等人的強化學習方法。
- 2017年De Vos等人提出了DIRNet。它使用CNN來預測控制點網格,該控制點用於生成位移矢量場,然后根據參考圖像變換感測圖像
Schematics of the DIRNet with two input images from the MNIST data
- Quicksilver配准解決了類似的問題。Quicksilver使用深度編碼-解碼器網絡直接在預測圖像上進行變形。
參考文獻:
[1] Image registration methods: a survey (2003)
[2] Image Registration: From SIFT to Deep Learning