问题标签 [homogenous-transformation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
173 浏览

3d - 我应该在同质变换后始终对一个点进行归一化吗?

我刚开始使用 3D 数学/编程,我有一个关于点标准化的问题:

在进行旋转、缩放、相机和透视投影等转换时,我应该始终对点进行归一化,以便w在转换之间为 1,还是在我准备好显示它们之前将其保留?除了表现之外,还有什么理由不这样做吗?

谢谢,

杰森

0 投票
3 回答
4542 浏览

opengl - 为什么符号在opengl投影矩阵中很重要

我正在研究一个需要使用校准相机渲染 3d 模型的计算机视觉问题。我正在编写一个函数,将校准后的相机矩阵分解为模型视图矩阵和投影矩阵,但我在 opengl 中遇到了一个有趣的现象,无法解释(至少我是这样)。

简短的描述是,否定投影矩阵不会导致任何渲染(至少在我的经验中)。我希望将投影矩阵乘以任何标量都不会产生任何影响,因为它会转换不受缩放影响的齐次坐标。

以下是我认为这出乎意料的原因;也许有人可以指出我的推理存在缺陷的地方。

想象一下下面的透视投影矩阵,它给出了正确的结果:

将此乘以相机坐标得到齐次剪辑坐标:

最后,为了获得标准化的设备坐标,我们将 x_c、y_c 和 z_c 除以 w_c:

现在,如果我们对 P 取反,则结果剪辑坐标应该被取反,但由于它们是齐次坐标,乘以任何标量(例如 -1)不应该对结果归一化设备坐标产生任何影响。然而,在 openGl 中,否定 P 不会导致任何内容被渲染。我可以将 P 乘以任何非负标量并获得完全相同的渲染结果,但只要我乘以负标量,就不会渲染任何内容。这里发生了什么??

谢谢!

0 投票
2 回答
33230 浏览

c++ - 如果已知外在参数和内在参数,则从 2D 图像像素获取 3D 坐标

我正在从 tsai algo 进行相机校准。我得到了内在和外在矩阵,但是如何从该信息中重建 3D 坐标?

在此处输入图像描述

1) 我可以使用高斯消除来找到 X、Y、Z、W,然后点将是 X/W、Y/W、Z/W 作为齐次系统。

2)我可以使用 OpenCV 文档方法:

在此处输入图像描述

据我所知u,,,,,我可以v计算RtX,Y,Z

然而,这两种方法最终都会产生不正确的不同结果。

我在做什么错?

0 投票
1 回答
3309 浏览

iphone - 将逆 CATransform3D 应用于已转换的 CALayer 的子层

我正在使用 CATransform3D 转换将伪 3D 透视效果应用于视图。

我正在使用 iPhone 4 中的陀螺仪来控制变换的参数。

我正在转换的视图有一些子视图:

带有子视图的视图

结果是这样的:

3D 变换在行动

我的下一个任务是防止子视图在主视图被转换时被转换,或者应用逆变换以使子视图不受影响。

我的目标是让每个子视图垂直于父视图,给人一种它们是“站立”的印象。

我用于转换的代码:

我尝试了以下代码,试图通过围绕 Y 轴对子视图应用 90 度透视旋转来反转变换:

但是所有这一切都成功地使子视图消失了。如果我尝试使用图层中的现有变换[sublayer transform]并对其应用 3d 旋转,则子视图会闪烁,但不会旋转。

我对矩阵数学的了解不是很好,所以我不知道这是否是正确的方法。

如何使子视图垂直于超级视图?

0 投票
1 回答
925 浏览

java - OpenNni:颜色坐标到深度坐标

我想知道如何将我从全分辨率彩色图像中获取的坐标转换为深度流中的坐标。

例如,我从全分辨率颜色中得到 (763,234),我想知道深度图像中的 (x,y,z) 是什么?(顺便说一句,我在 java 中这样做,但 c++ 中的答案可能很容易翻译)

提前谢谢

0 投票
1 回答
2751 浏览

image-processing - 定位算法如何用于校准投影仪和相机

我正在尝试将我的 kinect 校准到投影仪。我从微软研究中阅读了几篇关于他们如何做到这一点的论文。

四个点必须被深度相机正确识别并位于投影仪图像中,之后我们使用POSIT算法[6]来找到投影仪的位置和方向。这个过程需要投影仪的焦距和投影中心。

(这将给出投影仪的位置)

但我真的不熟悉 posit 算法,当然也不熟悉它在这里的使用方式。Posit 算法的结果是一个平移向量和一个旋转矩阵。现在我的问题是如何将其用于交互。

例如,如果我用 kinect 跟踪一只手,我会得到一些坐标 (x,y)。如何使用所述平移和旋转矩阵在投影中找到相应的 (x,y) 坐标?

0 投票
1 回答
1829 浏览

computer-vision - 齐次矩阵有八个独立比例的矩阵元素?

我正在阅读一些关于计算机视觉的论文。这似乎是一个简单的事实,但我无法理解。它是关于用于平面投影变换的齐次 [3x3] 矩阵。并且据说有八种独立比例的矩阵元素。不知道比例是多少,独立的八个比例是多少?请帮我解决这个问题。

谢谢你。

0 投票
2 回答
18185 浏览

matrix - 为什么二维变换需要 3x3 矩阵?

我想做一些 2D 绘图,因此想实现一些矩阵转换。凭借我的浅数学背景,我试图了解如何在 C# 中做到这一点(任何其他 oop 语言显然都会这样做)。

我所读到的只是解释我们需要使用 3x3 矩阵才能应对翻译。因为你不能用乘法进行翻译。但这是我们创建转换的矩阵的乘法。所以我们使用类似的东西:

我理解第三列的意思,但为什么我们需要第三行?在单位矩阵以及旋转、缩放或旋转中,最后一行是相同的。是否有我尚未达到的需要它的操作?是因为某些语言(Java)在“平方维度”数组中表现更好吗?如果是这样,我可以在 C# 中使用 3 列和 2 行(因为锯齿状数组也可以正常工作或更好)。

例如,对于旋转+平移,我有一个这样的矩阵

不需要最后一行。

0 投票
0 回答
353 浏览

html - 具有 3x3 矩阵的 html5 非仿射图像转换

是否有任何直接的方法可以在不使用 3d 变换的情况下使用 canvas/css/svg 对图像进行非仿射变换?通过非仿射变换,我的意思是在图像上应用一个 3x3 齐次矩阵,你知道,做“透视”变换。

0 投票
1 回答
5443 浏览

3d - Convert a vector of 3D point to homogeneous representation in Eigen

I have a buffer containing N 3D points stored as [XYZXYZXYZ ... XYZ].

This buffer can be directly mapped to a Eigen::Matrix<float, 3, N> using Eigen::Map. Since I will transform the points using affine transformations (i.e Eigen::Matrix4f matrices) I would like to map the same buffer to an eigen structure that allows me to consider the buffer as a Eigen::Matrix<float, 4, N> matrix where the last row only contains 1s, i.e. each single point is represented by the homogeneous vector [X Y Z 1].

Is there a convenient way to do this without copying the original buffer or applying the transformation on each single point?