我有一个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. OpenGL中的投影矩阵真的是“投影矩阵”吗?
- 4. 了解libGDX投影矩阵
- 5. 了解投影矩阵
- 6. 非对称投影矩阵
- 7. openGL - 正交投影矩阵
- 8. 如何使用透视投影矩阵?
- 9. 矩阵乘法 - 视图/投影,世界/投影等
- 10. GLM - 计算从投影矩阵
- 11. 投影矩阵似乎是错误
- 12. OpenGL中的透视投影矩阵
- 13. 投影矩阵OpenGL/GLSL问题
- 14. 的OpenGL 3.3投影矩阵错误
- 15. 投影矩阵 - 如何获得它
- 16. 从OpenGL到DirectX的投影矩阵
- 17. OpenGL投影,视图和世界矩阵
- 18. matlab:怎样创建投影
- 19. 投影使用pyproj
- 20. 带阴影的场景的投影矩阵
- 21. 带阴影矩阵的投影,简单测试失败
- 22. 反向透视投影
- 23. 带RestController的弹簧投影投影
- 24. GLSL:如何使用投影矩阵计算光线方向?
- 25. NHibernate的投影:如何获得使用标准API与投影
- 26. 我可以在DirectX中同时使用正投影和透视投影矩阵吗?我怎么能够?
- 27. Openlayer投影
- 28. MongoDB的投影
- 29. WPF投影
- 30. Hibernate genericDao投影
虽然我不允许使用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