2014-05-20 26 views
4

美好的一天,Matlab - 註冊和裁剪來自兩個不同來源的對齊圖像

在MATLAB中,我有多個不同樣本的圖像對。一對中的圖像由不同的相機拍攝。儘管我已經創建了可以應用於糾正該問題的變換(針對每個圖像對),但圖像的方向不同。它們的邊界包含相同的物理區域,但一個圖像的尺寸較小(即,對於250x250爲50x50)。此外,較小的圖像在較大的圖像中不在一個一致的位置。但是,較小的圖像位於較大圖像的邊界內。

我想要做的事情如下:將預定義的變換應用到較大的圖像後,我想剪裁與較小圖像相同的較大圖像的一部分。

我知道我可以指定XDataYData時應用我的變換輸出轉換圖像的子集,但我不知道如何將它與較小的圖像的位置相關聯。 (注:轉換是從控制點結構創建的)

請讓我知道是否有什麼不清楚。

任何幫助,非常感謝。

回答

3

看到您如何指定控制點以從一個圖像轉換到另一個圖像,我假設這是一個註冊問題。因此,我還假設您正在使用imtransform將一個圖像轉換爲另一個圖像。

imtransform允許指定兩個額外輸出參數:

[out, xdata, ydata] = imtransform(in, tform); 

這裏,in將是較小的圖像和tform將創建註冊較小圖像翹曲成較大的圖像的轉換。您無需在此處指定XDataYData輸入。 XDataYData的輸入將綁定您希望進行轉換的位置。通常人們指定圖像的尺寸以確保輸出圖像始終包含在圖像的邊界內。不過就你而言,我不認爲這是必要的。

輸出變量out是由您的tform對象規定的變形和變形圖像。另外兩個輸出變量xdataydata是座標系統內的最小值和最大值xy,它們將完全包含轉換後的圖像。因此,您可以使用這些變量來幫助您找到確切地說顯示轉換後的較小圖像的較大圖像。如果你想做一個比較,你可以使用它們來裁剪更大的圖像,看看轉換的效果如何。

注意:有時xdataydata的限制將超出圖像的尺寸。但是,因爲您說較小的圖像將始終包含在較大的圖像中(我假設它完全包含在內),那麼這應該不成問題。此外,限制也可能是浮點,因此如果要使用這些座標來裁剪最小跨越邊界框,您需要小心。

+0

你的假設是正確的。非常感謝你的協助。 – DoctorNode

+0

非常歡迎。歡迎來到StackOverflow! – rayryeng