2011-03-10 68 views
2

所以我一直在使用gnu-gsl和CImg來實現仿射和度量校正的一些基本投影空間技術。圖像轉換

我已經完成計算仿射矯正,但是我很難弄清楚如何將仿射矯正矩陣應用到原始(輸入)圖像。

我目前的思維過程是針對每個像素座標在輸入圖像上進行迭代。然後乘以仿射校正矩陣的原始像素座標(轉換爲齊次座標)以獲得輸出像素座標。

然後使用輸出像素座標訪問輸出圖像,並使用原始圖像的像素顏色對輸出圖像的像素位置執行混合(加法)操作。

這聽起來沒錯嗎?在將原始像素座標乘以仿射校正矩陣後,我得到了許多非常奇怪的值。

回答

1

不,你的價值觀不應該很奇怪。你爲什麼不做一個簡單的例子,一個小的翻譯小范例;例如

x' = 1.01*x + 0.0*y + 5; 
y' = 0.0*x + 0.98*y + 10; 

現在(10,10)處的像素應該映射到(15.1,19.8),對不對?

如果你想製作一個很好的輸出圖像,你應該找到正向投影,然後反向投影到輸入圖像並插入,而不是嘗試混合到輸出圖像。否則,最終會在輸出中出現空白。

您需要注意您的術語;這聽起來像你在做計劃,有時也被稱爲計算機圖形學界的翹曲。整頓是另一回事,但這取決於你在做什麼。

+0

我想出了我的問題的一個主要部分與座標規範化有關。 *嘆*有點明顯。話雖如此,我注意到我從系統中獲得的大部分圖像座標都是負值。他們看起來像像素座標,只是負面的。有點奇怪......我想我可以比較一下gnu-gsl和Matlab的對比。 至於應用轉換,我找到了一些引導矩陣 - 向量乘法(元素明智)的參考代碼。這似乎是在做伎倆。 – 2011-03-11 16:14:46

+0

這聽起來像你應該做一個小實例,用已知的測試數據,已知的參數和已知的結果。然後,當您修復您的系統時,可以放棄協調正常化,原點位置等問題。 – koan 2011-03-11 16:55:32