close

點擊下方卡片,關注「新機器視覺」公眾號

重磅乾貨,第一時間送達


作者:Emma Kamoun
機器之心編譯
參與:Nurhachu Null,Geek AI
作為計算機視覺的重要研究課題,圖像配准經歷了從傳統方法走向深度學習的重要革命。本文將回顧圖像配准技術的前世今生,為讀者提供一個該領域的宏觀視野。
圖像配準是計算機視覺領域的一個基礎步驟。在本文深入探討深度學習之前,我們先展示一下 OpenCV 中基於特徵的方法。
什麼是圖像配准?
圖像配准就是將同一個場景的不同圖像轉換到同樣的坐標系統中的過程。這些圖像可以是不同時間拍攝的(多時間配准),可以是不同傳感器拍攝的(多模配准),可以是不同視角拍攝的。這些圖像之間的空間關係可能是剛體的(平移和旋轉)、仿射的(例如錯切),也有可能是單應性的,或者是複雜的大型形變模型。

圖像配准有很廣泛的應用:只要我們面對的任務需要比較相同場景的多張圖片,它就是必不可少的。它在醫學影像、衛星圖像分析以及光流領域都是很常用的。

經過配准後的 CT 掃描和核磁共振圖像
在本文中,我們會重點關注在一張參考圖像和一張待配准圖像之間進行圖像配準的不同方法。我們不會選擇迭代式的/基於強度的方法,因為它們並不像本文中提到的方法這樣常用。
傳統的基於特徵的方法
自本世紀初以來,圖像配准主要使用傳統的基於特徵的方法。這些方法基於三個步驟:關鍵點檢測和特徵描述,特徵匹配,圖像變形。簡而言之,我們在兩幅圖像中選擇興趣點,將參考圖像中的每個興趣點和它在待配准圖像中的對應點關聯起來,然後對待批准圖像進行變換,這樣兩幅圖像就得以對齊。

對一個圖像對通過單應性變換進行關聯的基於特徵的方法
關鍵點檢測和特徵描述
關鍵點就是感興趣的點。它定義了一幅圖像中重要並且有特點的地方(如角,邊等)。每個關鍵點都由一個描述子(包含關鍵點本質特點的特徵向量)表徵。描述子應該對圖像變換(如位置變換、縮放變換、亮度變換等)是魯棒的。很多算法都要執行關鍵點檢測和特徵描述:

SIFT(Scale-invariant feature transform,尺度不變的特徵變換)是用於關鍵點檢測的原始算法,但是它並不能免費地被用於商業用途。SIFT 特徵描述子對均衡的縮放,方向、亮度變化是保持不變的,對仿射形變也是部分不變的。

SURF(Speeded Up Robust Features,加速魯棒特徵)是受到 SIFT 深刻啟發設計的檢測器和描述子。與 SIFT 相比,它的運行速度要快好幾倍。當然,它也是受專利保護的。

ORB(定向的 FAST 和旋轉的 BRIEF)是基於 FAST(Features from Accelerated Segment Test)關鍵點檢測器和 BRIEF(Binary robust independent elementary features)描述子的組合的快速二值描述子,具有旋轉不變性和對噪聲的魯棒性。它是由 OpenCV Lab 開發的高效、免費的 SIFT 替代方案。

AKAZE(Accelerated-KAZE) 是 KAZE 的加速版本。它為非線性尺度空間提出了一種快速多尺度的特徵檢測和描述方法。它對於縮放和旋轉也是具有不變性的,可以免費使用。


這些算法在 OenCV 中都得到了實現,易於使用。在下面的例子中,我們使用了 AKAZE 的 OpenCV 實現。其它算法的代碼大致也是一樣的:只需修改一下算法的名字即可。
import numpy as npimport cv2 as cvimg=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)
圖像的關鍵點
更多關於特徵檢測和描述的細節,請參閱下面的 OpenCV 教程:https://docs.opencv.org/3.4/d7/d66/tutorial_feature_detection.html
特徵匹配
當組成一個圖像對的兩張圖的關鍵點都被識別出來以後,我們需要將它們關聯(或稱「匹配」)起來,兩張圖像中對應的關鍵點在現實中是同一個點。一個可以實現該功能的函數是「BFMatcher.knnMatch()」。這個匹配器(matcher)會衡量每一對關鍵點的描述子之間的距離,然後返回與每個關鍵點距離最小的 k 個最佳匹配結果。
接下來,我們應用比例濾波器來保持正確的匹配。事實上,為了實現可靠的匹配,配對的關鍵點應該比距離最近的錯誤匹配點更接近。
import numpy as npimport cv2 as cvimport matplotlib.pyplot as pltimg1 = cv.imread('image1.jpg', cv.IMREAD_GRAYSCALE) # referenceImageimg2 = cv.imread('image2.jpg', cv.IMREAD_GRAYSCALE) # sensedImage# Initiate AKAZE detectorakaze = cv.AKAZE_create()# Find the keypoints and descriptors with SIFTkp1, des1 = akaze.detectAndCompute(img1, None)kp2, des2 = akaze.detectAndCompute(img2, None)# BFMatcher with default paramsbf = cv.BFMatcher()matches = bf.knnMatch(des1, des2, k=2)# Apply ratio testgood_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)

配對的關鍵點
請參閱下面的文檔來了解 OpenCV 中實現的其他特徵匹配方法:https://docs.opencv.org/trunk/dc/dc3/tutorial_py_matcher.html
圖像變形
在匹配到至少 4 對關鍵點之後,我們就可以將一幅圖像相對於另一幅圖像進行轉換。這個過程被稱作圖像變形(image warping)。空間中同一平面的任意兩幅圖像都是通過單應性變換關聯起來的。單應性變換是具有 8 個參數的幾何變換,通過一個 3×3 的矩陣表徵。它們代表着對一幅圖像整體所做的任何變形(與局部形變不同)。因此,為了得到變換後的待配准圖像,我們計算了單應矩陣,並將它應用在了待配准圖像上。
為了保證最優的變形,我們使用了 RANSAC 算法來檢測輪廓,並且在進行最終的單應性變換之前將輪廓刪除。該過程直接內置於 OpenCV 的「findHomography()」函數中。目前也有一些 RANSAC 的替代方案,例如 LMED(Least-Median robust method,最小中值魯棒方法)。
# Select good matched keypointsref_matched_kpts=np.float32([kp1[m[0].queryIdx].ptformingood_matches]).reshape(-1,1,2)sensed_matched_kpts=np.float32([kp2[m[0].trainIdx].ptformingood_matches]).reshape(-1,1,2)# Compute homographyH, status = cv.findHomography(ref_matched_kpts, sensed_matched_kpts, cv.RANSAC,5.0)# Warp imagewarped_image = cv.warpPerspective(img1, H, (img1.shape[1]+img2.shape[1], img1.shape[0])) cv.imwrite('warped.jpg', warped_image)
.

變形後的待配准圖像
關於以上三個步驟的更多細節,請參閱 OpenCV 官方發布的系列教程(https://docs.opencv.org/3.1.0/db/d27/tutorial_py_table_of_contents_feature2d.html)。
深度學習方法
目前大多數的圖像配准研究都涉及到深度學習的使用。過去幾年裡,深度學習方案在計算機視覺任務中(如圖像分類、目標檢測和分割)達到了最先進的性能。當然,圖像配准也沒有理由拒絕深度學習。
(二級)特徵提取
深度學習在圖像配准中使用的第一種方式就是將其用於特徵提取。在卷積神經網絡(CNN)中,連續的層能夠成功地捕獲到越來越複雜的圖像特徵,學習到特定任務的特徵。自 2014 年以來,研究者們就開始將這些神經網絡應用於特徵提取步驟,代替使用 SIFT 或者其它類似的算法。

2014 年,Dosovitskiy 等人提出了通用特徵學習方法「Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks」(https://arxiv.org/abs/1406.6909),僅使用無標籤的數據來訓練卷積神經網絡。這些特徵的泛化屬性使得它們對變換是魯棒的。這些特徵(或稱描述子),在匹配任務中要優於 SIFT 描述子。

2018 年,Yang 等人基於同樣的思想研發了一種非剛性配准方法「Multi-temporal Remote Sensing Image Registration Using Deep Convolutional Features」(https://ieeexplore.ieee.org/document/8404075)。他們使用預訓練的 VGG 網絡層來生成能夠同時保持卷積信息和定位能力的特徵描述子。這些描述子似乎也要優於和 SIFT 類的描述子,尤其是在 SIFT 包含很多輪廓或者不能匹配到足夠數目的特徵點的情況下。


SIFT 和基於深度學習的非剛性配准方法描述子的實驗結果
論文「Multi-temporal Remote Sensing Image Registration Using Deep Convolutional Features」的代碼鏈接如下:https://github.com/yzhq97/cnn-registration。

儘管我們在 15 分鐘內就在自己的圖像上完成了對這個配准算法的測試,但是它幾乎要比我們在本文前面在 SIFT 類的方法上的實現慢了近 70 倍。
單應性學習
研究者們並沒有局限於神經網絡在特徵提取上的使用,而是嘗試使用神經網絡來直接學習幾何變換,從而對齊兩張圖像。
1. 監督學習
2016 年,DeTone 等人發表了論文「深度單應性估計」(https://arxiv.org/pdf/1606.03798.pdf),提出了「Regression HomographyNet」網絡,這是一個類似於 VGG 的網絡,能夠學習到將兩幅圖像關聯起來的單應性變換。這個算法彰顯了以端到端的方式,同時學習單應性變換以及卷積神經網絡參數的好處:不再需要之前的兩個步驟了!

Regression HomographyNet 示意圖
這個網絡產生了 8 個實數作為輸出。它是以有監督的方式進行訓練的,以輸出和真實的單應之間的歐氏距離作為損失函數。

有監督的深度單應性估計
與所有的監督方法類似,這個單應性估計方法需要帶標籤的數據對。儘管在人工生成的圖像對上得到這樣的單應變換矩陣是很容易的,但是在真實的數據上卻需要付出高昂的代價。
2. 監督學習
考慮到這一點,Nguyen 等人提出了一種無監督的深度圖像單應估計方法(https://arxiv.org/pdf/1709.03966.pdf)。

他們保持了原來的 CNN,但是使用了新的、適應於無監督方法的損失函數:他們選擇了不需要真實標籤的光度損失(photometric loss)。此外,它還計算了參考圖像和待配准變換圖像之間的相似度。

L1 光度損失函數
這個方法引入了兩個新的網絡結構:張量直接線性變換(Tensor Direct Linear Transform)和空間變換層。我們在本文中不會詳述這些組成部分的細節,我們只要知道這些是被用來使用 CNN 模型的單應性參數輸出獲得變換後的待配准圖像就行了,我們會用它計算光度損失函數。

無監督深度單應性估計
這篇文章的作者稱,與傳統的基於特徵的方法相比,這種無監督方法以更快的推理速度得到了相當的或者更高的準確率,以及關於光照變化的魯棒性。此外,與監督方法相比,它還具有更高的適應能力和性能。
其它方法
1. 強化學習
作為醫療應用中的配准方法,深度強化學習正日益受到關注。與預定義的優化算法不同,在該方法中,我們使用訓練過的智能體(agent)來進行配准。

基於強化學習的配准流程示意圖

2016 年,Liao 等人首次在圖像配准中使用強化學習。他們的方法(https://arxiv.org/pdf/1611.10336.pdf)是以用於端到端訓練的貪婪監督算法為基礎的。其目標是通過找到最佳的動作序列來對齊圖像。雖然這種方法優於一些目前最先進的模型,但是它僅僅被用於剛性變換。

強化學習也被用在更加複雜的變換中。在論文「Robust non-rigid registration through agent-based action learning」(https://hal.inria.fr/hal-01569447/document)中,Krebs 等人使用了人工智能體來優化形變模型的參數。這個方法在前列腺核磁共振圖像的受試者間配准上進行了測試,在 2D 和 3D 圖像上都展現出了良好的效果。


2. 複雜變換
目前有很大一部分關於圖像配準的研究關注於醫療圖像領域。通常,由於受試者的局部形變(如呼吸變化、解剖學變化等),兩幅醫療圖像之間的變換不能簡單地通過單應矩陣來描述。所以需要更複雜的變換模型,例如可以用位移矢量場表示的微分同胚。

心臟核磁共振圖像上的變形網格和位移矢量場的示例
研究者們已試圖使用神經網絡來估計這些擁有很多參數的大規模形變模型。

第一個例子就是上文提及的 Krebs 等人的強化學習方法。

2017 年,De Vos 等人提出了 DIRNet。這是一個使用 CNN 來預測控制點的網格的神經網絡,這些控制點能夠被用來生成根據參考圖像來對待配准圖像進行變形的位移矢量場。


DIRNet 示意圖(使用 MNIST 數據集中的兩張圖像作為輸入)
Quicksilver 配准解決了一個類似的問題。Quicksilver 使用深度「編碼器-解碼器」網絡直接在圖像外觀上預測圖塊級(patch-wise)的形變。
原文地址:
https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fblog.sicara.com%2Fimage-registration-sift-deep-learning-3c794d794b7a

本文僅做學術分享,如有侵權,請聯繫刪文。

—THE END—
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()