2011-04-12 140 views
0

我試圖將圖像以極座標(軸是角度x半徑)轉換爲笛卡爾座標圖像(座標軸爲x和y)。將極座標圖像轉換爲笛卡爾圖像

這在使用pcolor()的matlab中足夠簡單,但問題是我必須在mex文件(Matlab的C++接口)中執行此操作。這似乎很容易,除了Matlab只使用數組容器,所以我想不出一個聰明或雄辯的方式來做到這一點。

我有權訪問圖像尺寸,我可以想象一種非常混亂的方式,將輸入圖像數組重新打包爲C++中的矩陣,並將轉換過濾出來,但這樣做會很麻煩並且存在問題。

此外,我需要能夠插入xy平原點之間的間隙。

任何想法?

+0

我想我現在嘗試的是採取輸入數組,並通過它產生一個強度爲每個(角度,半徑),並存儲在一個地圖與ciel的密鑰(rcos(θ ))和ciel(rsin(theta)))。我可以爲地圖生成2D密鑰嗎?我忘了...我將存儲每個角度,每個x,y鍵的半徑值。 – 2011-04-12 15:56:47

+0

不是真的工作... – 2011-04-12 16:49:13

+0

如果你的意思是你想要將(r,phi)對轉換爲(x,y)對,我不會看到在向mex文件提供輸入數組對時混亂和有問題,並獲得輸出數組作爲輸出。還是我誤解了你的問題? 一些代碼會有所幫助。 – 2011-04-13 09:31:29

回答

2

這是圖像處理中的合理標準,尤其是在註冊時。然而,這需要一些思考,而不是「顯而易見的」。第一次也不是很明顯。

我假設你有兩個圖像,在不同的「域」中,在你的情況下,極座標中的源圖像和笛卡爾座標中的目標圖像。我假設你知道你想要填充的目標圖像中的區域。

在圖像處理中最常見的最好的事情是循環遍歷目標圖像的已知區域中的座標。對於這些位置(x,y)中的每個位置,都會有一些轉換爲極座標。這可能是r = sqrt(x*x+y*y)theta = atan2(y,x)或類似的東西。然後在插值的極座標位置從該位置採樣。

在插值的選擇是:

  1. 近鄰 - 你只是四捨五入到最接近rtheta,並選擇該值。
  2. 雙線性 -
  3. 雙三次
  4. ...

當然,你應該照顧的邊界條件,會發生什麼,如果你的rtheta走出你的形象。

對於所有類型的座標轉換,此過程也是類似的(循環遍歷目標圖像和從源圖像採樣,並根據反向轉換進行查找)。好的一點是,你不會在你的來源想象的相關問題上留下漏洞。

希望這可以幫助圖像部分。

至於墨西哥的一部分,這裏有一些鏈接: Mex tutorial Mex tutorial

你能具體談談你需要了解和墨西哥的部分是什麼?

相關問題