我有一個256x256投影矩陣。每行是以等角度拍攝的投影。我需要用matlab反向投影生成原始圖像,而我對matlab並不熟悉。你可以建議我任何代碼示例或alghorithms?我發現了一些類似的代碼,我無法使用它們生成原始圖像。使用MATLAB投影矩陣反投影
0
A
回答
1
這應該是與iradon
命令比較簡單,如果您有圖像處理工具箱。如果你不這樣做,這將會更加困難,因爲你需要推出自己的版本。顯然,你不能用這個,但是這是非常值得我得到的圖像,如果我使用:
I = iradon(Pteta',linspace(0,179,size(Pteta,1));
那麼,你怎麼能這樣做自己?我會盡力幫助你,而不會給你答案 - 畢竟這是作業!
首先,考慮一下你的0度投影。想象一下你投射的軸有1,256個單位。現在想象一下,後面這些的投影在你的圖像座標,它會是這個樣子:
同樣,認爲一個90度的投影是這樣的:
酷,我們可以得到這些矩陣通過使用[X, Y] = meshgrid(1:256);
,但離軸投影呢?想想沿着一些角度線的距離,如轉換極座標/笛卡爾座標:
theta = 45 % projection angle in degrees
t = X*cosd(theta) + Y*sind(theta);
它的工作原理!
這裏有一個問題,但!注意現在的值超過350了?它也有點偏離中心。座標現在超過了我們的投影長度,因爲正方形的對角線比邊長要長。我會讓你知道如何解決這個問題,但是最終的圖像會比最初的預測要小,你可能需要使用不同的單位(-127到128而不是1到256)。
現在,您只需將這些角度的投影索引爲反投影整個圖像的實際值即可。這裏我們還有第二個問題,因爲這些值不是整數!我們可以圍繞它們,這被稱爲最近鄰居插值,但它不能給出最好的結果。
proj = Pteta(angle,:);
% add projection filtering here
t = X*cosd(theta) + Y*sind(theta);
% do some rounding/interpolating to make t all integers
imagesc(proj(t));
對於我們偏離中心的版本,這給了我們這個形象,或類似的東西:
現在你只需要爲每一個角度做到這一點,並添加他們都放棄了。
相關問題
- 1. 投影矩陣
- 2. 投影矩陣
- 3. Three.js投影矩陣不投影
- 4. OpenGL投影矩陣
- 5. OpenGL中的投影矩陣真的是「投影矩陣」嗎?
- 6. WebGL透視投影矩陣
- 7. OpenGL獲取投影矩陣
- 8. 擴展投影矩陣
- 9. 查找投影矩陣
- 10. 瞭解投影矩陣
- 11. OpenGL 3.0+:正投影矩陣
- 12. 投影和視圖矩陣
- 13. openGL - 正交投影矩陣
- 14. 非對稱投影矩陣
- 15. 旋轉矩陣的投影
- 16. 瞭解libGDX投影矩陣
- 17. 基本矩陣的投影矩陣
- 18. 如何使用透視投影矩陣?
- 19. 矩陣乘法 - 視圖/投影,世界/投影等
- 20. 投影矩陣的用途是什麼?
- 21. 正交相機的投影矩陣
- 22. 透視投影矩陣不工作openGL
- 23. 投影矩陣和z戰鬥
- 24. 攝像機標定:投影矩陣
- 25. 的OpenGL 3.3投影矩陣錯誤
- 26. OpenGL中的透視投影矩陣
- 27. 投影矩陣似乎是錯誤
- 28. 設置Three.JS投影矩陣參數
- 29. 計算視圖投影矩陣
- 30. 投影矩陣 - 如何獲得它
雖然我不允許使用iradon命令,但我試過它給了我一些隨機圖像。我需要獲得像汽車或樹木這樣的真實形象。 和角度跨度[0,pi] 這裏是矩陣,如果有幫助:http://www.mediafire.com/?rn6j2h7rbkje3oe – dum 2012-04-11 20:47:44
這聽起來像這是你的功課,所以我已經添加了該標記。你知道背投影是如何工作的(即在紙上)? – aganders3 2012-04-11 20:50:38
好的,我剛剛打開了你的投影矩陣 - 這是扇形束數據嗎? – aganders3 2012-04-11 20:55:23