【问题标题】:Screen Coordinates屏幕坐标
【发布时间】:2013-10-21 19:42:59
【问题描述】:

我正在做光线追踪,我有屏幕。我想在世界坐标中定义它

MaxPCx = 1;
MaxPCy = 1 / AspectRatio;

x = linspace(0,MaxPCy,Height_proj);
y = linspace(0,MaxPCx,Width_proj);

[CoordsY,CoordsX] = ndgrid(x,y);

% Convert Projector Coordinates To Screen Coordinates
ScreenXCoordinates = (CoordsX .* MaxPCxInv).* SizeX_scr + Screen_OffsetX;
ScreenYCoordinates = (1 - CoordsY .* MaxPCyInv ).* SizeY_scr + Screen_OffsetY;
ScreenZCoordinates = f(x,y) % this function is the same used in my software that I used exactly the same

所以我现在的问题是我从软件中获得了 ScreenXCoordinates ,ScreenYCoordinates 和 ScreenZCoordinates 并且我将它们与我的比较,所以 x 和 y 坐标的差异在 10^-9 的顺序上很好,但 z 方向的差异是真的很高,大约 10^-4,所以有人能给我建议吗。

然后我应用旋转矩阵和平移向量来转换到世界坐标

投影仪坐标在开头的生成(CoordsX 和 CoordsY)是否正确?

在此先感谢

【问题讨论】:

  • 这个问题非常具体,但缺少有人需要帮助您的所有信息。你拿什么来比较?您说 Z 组件已关闭,但甚至没有向我们展示产生 Z 的代码。根据什么定义,CoordsX 和 CoordsY 是否正确?
  • 我正在将我从模拟中获得的结果与我的设置软件使用的结果进行比较。其次,Z的计算是通过一个方程,它是软件使用的相同方程(复制粘贴,我检查了2次,它是相同的)
  • 我会说如果 ScreenX/YCoordinates 非常匹配,那么您的 x,y 输入参数必须是正确的。只剩下 f(x,y)。
  • 我知道我的结果发生了什么很奇怪,并且在 ScreenX/YCoordinates 之间得到密切匹配后我检查的第一件事是 f(x,y),它是相同的。反正比你好很多
  • 所以请彼得留下您的评论作为接受它的答案。谢谢

标签: matlab graphics computer-vision raytracing


【解决方案1】:

我想说,如果 ScreenX/YCoordinates 与它们一样匹配,那么您的 x,y 输入参数必须是正确的。这只会在f(x,y) 实现之间留下可能的不匹配。即使它们看起来相同,也有可能存在数值差异。精度匹配吗?其他软件可以使用整数与浮点数学吗?

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2018-01-29
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多