2012-04-25 112 views
3

我正在尋找一些算法(最好是如果源代碼可用) 圖像註冊。 圖像變形不能用單應性矩陣來描述(因爲我認爲變形不是對稱的而且不是均勻的),更具體地說,變形就像桶/變形和梯形失真,可能是圖像的一些旋轉。 我想獲得兩個圖像的像素對,所以我可以獲得「變形場」的表示。圖像配準(非剛性非線性)

我google很多,發現有一些算法基於一些phisics的想法,但它似乎可以匯聚 本地最大值,但不是全球。 我可以affort程序是半自動的,它意味着一些簡單的用戶interation。

也許像SIFT這樣的算法會合適嗎?但我認爲它不能提供具有規則足夠密度的「變形場」。

如果它很重要,沒有規模變化。複雜的領域 http://www.math.ucla.edu/~yanovsky/Research/ImageRegistration/2DMRI/2DMRI_lambda400_grid_only1.png

+1

兩個備註: 1. SIFT不是一個圖像配准算法。這是計算圖像中局部特徵的算法。在您的情況下獲取匹配像素對可能會有所幫助。 2.你有轉型的數學模型嗎? – 2012-04-25 11:27:20

+0

我知道SIFT,但我認爲如果我有高密度的興趣點對,我可以插入其他像素。 理論上我有變形的總和 桶/枕形 u = x + Const *(x * x + y * y)* x; v = y + Const *(x * x + y * y)* y; u =(m11 * x + m12 * y + m13);以及梯形 。 v =(m21 * x + m22 * y + m23); rotation u = x * cosa-y * sina; v = x * sina + y * cosa; – mrgloom 2012-04-25 11:41:54

回答

2

你在找什麼的

例子是「光流」。搜索這些條款將產生許多結果。

在OpenCV中,有一個名爲calcOpticalFlowFarneback()的函數(在視頻模塊中)可以做你想做的事情。 C API仍然實現了Horn & Schunck(1981)提出的名爲「確定光流」的經典論文。你可以看看我已經完成的工作以及一些代碼(但要小心,opencl內存代碼中仍然存在一些神祕的bug,我將在今年晚些時候發佈一個更正的版本)。 :http://lts2www.epfl.ch/people/dangelo/opticalflow

除了OpenCV的光學流程(以及我的;-),您可以在itk.org上看到ITK完整的圖像配準鏈(主要針對醫學成像)。

還有很多光流程代碼(matlab,C/C++ ...),可以找到感謝谷歌,例如cs.brown.edu/~dqsun/research/software.html,gpu4vision等

- 編輯 - :密集的,和其他人的光流

光流的算法兩個家庭分開。 密集算法給每個像素一個運動矢量,每個跟蹤特徵不密集一個矢量。

密集家族的例子包括Horn-Schunck和Farneback(以及opencv),更一般地說,任何算法都會使整個圖像(各種TV-L1流等)的成本函數最小化。

非密集家族的一個例子是KLT,在opencv中稱爲Lucas-Kanade。

在密集家庭中,由於每個像素的運動幾乎都是空閒的,因此它可以處理尺度變化。請記住,這些算法在大運動/尺度變化的情況下可能會失敗,因爲它們通常依賴於線性化(泰勒展開運動和圖像變化)。此外,在變分方法中,每個像素都有助於整體結果。因此,在一幅圖像中看不見的部分可能會使算法偏離實際的解決方案。

無論如何,採用從粗到細的技術來繞過這些限制,這些問題通常只有很小的影響。殘酷的光照變化或大的遮擋/未遮擋區域也可以通過一些算法明確地處理,參見例如this paper,其計算沿光流場的「創新」的稀疏圖像。

+0

你知道任何使用光流進行圖像配準的工具的例子嗎? – mrgloom 2012-04-26 06:05:13

+0

我可以爲圖像的每個像素計算光流量嗎? – mrgloom 2012-05-04 08:29:54

+1

這取決於算法。聲稱他們計算密集流量的算法(Farneback,Horn-Schunk,TV-L1的所有變體等)給出了每個像素的流向量。依靠特徵檢測和跟蹤的第一步(opencv的LK實現)的算法僅爲每個特徵提供向量。 – sansuiso 2012-05-04 08:46:48

0

我發現一些軟件醫療特定的,但它是複雜的,它不適用於簡單的圖像格式,但似乎它是我需要的。 http://www.csd.uoc.gr/~komod/FastPD/index.html 下降 - 變形註冊使用離散優化

+0

http://bigwww.epfl.ch/thevenaz/unwarpj/ http://fiji.sc/wiki/index.php/Feature_Extraction http://fiji.sc/wiki/index.php/TrakEM2 http: //fiji.sc/wiki/index.php/BUnwarpJ http://fiji.sc/wiki/index.php/Register_Virtual_Stack_Slices – mrgloom 2012-07-18 07:23:48