问题标签 [transformation-matrix]

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 投票
0 回答
46 浏览

opengl - 3D Cube OpenGL - 当相机移动时立方体边如何显示?

我正在关注 YouTube 上的一个教程,它结合了 3 个矩阵:projectionMatrix * viewMatrix * transformationMatrix. 这些允许 3D 立方体与控制场景的相机一起渲染。我的问题是,当立方体因相机移动而偏离中心时, 这些矩阵/矩阵如何显示下面立方体的侧面?相机向左平移

相机向左平移

当相机在 X 轴上移动时,哪些矩阵负责显示立方体的左侧?是不是因为顶点(在z轴上)越远,受运动的影响越小,所以前面的顶点移动而露出后面的顶点;像下面? 在此处输入图像描述

我知道投影矩阵可能与立方体的侧面在更远的顶点上较小有关。另外,我不认为立方体在旋转,因为前四边形没有变形。我的理论是,变换矩阵使顶点更远地落后,从而被揭示出来。

0 投票
1 回答
982 浏览

lua - 如何使用 3D 中的变换矩阵围绕 Z 轴旋转?

在 Lua 中,我设置了一个单位矩阵:

然后将其更新为包含 x=100、y=0、z=0 处的点:

然后我将我的旋转值定义为 90 度的弧度:

由此我创建了一个 Z 轴旋转矩阵:

从这里使用矩阵乘法将 Z 轴旋转矩阵应用于 {100,0,0} 点:

矩阵乘法取自 RosettaCode.org:https://rosettacode.org/wiki/Matrix_multiplication#Lua

我期望rotated矩阵输出与以下内容相同:

或者,给定左手 (?) 计算,Y 值可能是 -100。我最终得到的是:

谁能告诉我我做错了什么并纠正我的代码,好吗?

0 投票
1 回答
1283 浏览

c++ - QVector2D - 旋转

我正在将我的代码从 Python 3 移植到 Qt 5.7.

在 Python 中,为了更好地理解,我手动完成了所有数学运算。现在我将我的算法移植到 Qt C++ 中,我希望 Qt 至少提供基本的东西(除了交叉和点积之外),当涉及到矢量时,例如旋转矢量的能力,翻译它等。从我所看到的东西缺乏......很多。

有些QMatrix4x4似乎已被弃用(我只能在 Qt 4.8 的文档中找到一些东西)。我在旋转中发现的唯一东西是QTransform::rotate(...)。但是,这是用于旋转坐标系。虽然在数学上我可以使我的算法适应这种做事方式,但我仍然更愿意遵循关于围绕任意点旋转的约定,该点被转换为原点旋转并最终反转平移

我是否遗漏了某些东西,或者这真的不可用QVector2D(我也检查QVector3D过,因为可以轻松地将 2D 转换为 3D 向量(如果您想使用该函数进行叉积:D,那么顺便说一句是必要的))?

注意:这里不能选择使用 QML。一切都只需要 C++。

0 投票
1 回答
199 浏览

arkit - ARKit 变换整个场景

我有这个非常好的 SCNScene,它包含一些 nSCNNodes……现在我想在 ARSCNView 中显示这个场景。但是,我的整个场景都是用 x,y,z >= 0 构建的,如果我只是设置屏幕,我的整个场景就会在相机后面。

在我拥有 currentFrame 之后,我也无法在视图中渲染我的场景,因为节点太多并且卡住了......

所以:我正在寻找一种方法来以某种方式改变我的 SCNScene,这样它就不会改变自己,而是在相机前面找到一个合适的位置(即 0,0,0),并且可能会缩小一点.

这甚至可能吗?如果是这样,我必须对哪些对象进行哪些转换?

谢谢阅读 :)

0 投票
1 回答
1283 浏览

python - SimpleITK:应用逆变换

我最近开始使用 SimpleITK 进行图像配准。对于我当前的项目,我需要配准 X 射线图像和 CT 图像,然后将逆矩阵应用于跟踪 X 射线图像的 ROI 掩模。

我得到了这条线的逆矩阵:

如何将转换应用于 ROI 蒙版?

0 投票
0 回答
75 浏览

ios - 在 iOS 上检查人脸边缘角度

我正在尝试在 iOS 上开发一个系统,以确保显示面部的所有角度。基本上,复制与创建人脸 ID 相同的向导苹果。我今天开始玩并遵循一些关于 ARKit 的教程,实现 ARSCNViewDelegate.didUpdate 委托方法并检查 ARFaceAnchor.transform,尽管我很难理解 4x4 矩阵。

这是正确的方向吗?我错过了什么吗?谢谢!

0 投票
0 回答
173 浏览

matlab - 将几何变换矩阵应用于坐标

我想将几何变换矩阵应用于坐标列表:

例如,我有两个图像:A 和 B。我使用 MATLAB 应用程序“Registration estimator”将 A(运动图像)注册到 B(固定图像),得到一个变换矩阵 T。

现在我有一个图像 A 上的坐标列表,我想获得已注册图像上的转换坐标。我应该怎么办?直接将坐标与变换矩阵相乘似乎不起作用。

比如我图片A是200*300像素,图片B是210*290像素。如果我直接将变换矩阵乘以图像A中的坐标,则计算出的坐标也对应于A的坐标系而不是B的坐标系。我想要的是B的坐标系下的坐标。

0 投票
1 回答
406 浏览

javascript - 在控制台中获取转换矩阵值

背景

用户单击面具并在面具上上传自己的图像。

上传图像后,编辑文本将显示在图像上。

一旦用户单击编辑文本,我们将显示弹出框。

显示缩放旋转按钮。用户也可以拖动上传的图像....

在此处输入图像描述

要求

一旦我们缩放、旋转或拖动图像,我想在控制台中动态显示相关的变换矩阵值......

我在代码片段中使用这些函数:

代码片段

这是Jsfiddle & Codepen, Pastebin 中的完整代码

0 投票
1 回答
167 浏览

image - 图像配准中变换矩阵与图像尺度的关系

我目前正在使用“注册估计器”应用程序进行图像注册。

基本上,该应用程序允许用户使用多种方法注册两个图像,并且输出包括变换矩阵。

问题是,现在我要注册两张大图,两张图的大小分别是63744*36064和64704*35072。直接注册两个图像几乎是不可能的,因为它们太大了。

我使用的方法是首先获得用于配准的缩放图像并导出变换矩阵并将该矩阵应用于原始图像。

但是,我发现即使是同一张图片,在不同的层次上也会得到不同的变换矩阵。

例如,大小为 3984(63744/16)*2254(36064/16) 和 4022*2192 的图像的变换矩阵不同于 1992*1127 (1/32) 和 2022*1096 (1/32)。

在那种情况下,我对大小和转换矩阵之间的关系感到困惑。谁能给我一个提示,以便我可以根据我对较低级别(较小尺寸)图像的转换矩阵精确注册两个原始图像?

0 投票
0 回答
156 浏览

machine-learning - 具有动态批量大小的批量矩阵乘法

我正在使用批量矩阵乘法编写程序,可能不在通用设置下。我正在考虑以下输入:

所需的输出是:

它实际上在 pytorch 中非常方便,只需一行!

在这里,我想改进这个程序。请注意,我使用A[idx]为每个点复制一个矩阵 A_i,因此我可以在此处使用 torch.bmm() 函数(1 个点 <-> 1 个矩阵)。Afaik,它将需要为A[idx]的中间表示分配内存。一般来说,如果我的数据批次中有 BN 对象,则 A[idx] = (B1+...+BN)*3*3 的大小可能非常大。

因此,我想知道是否可以避免矩阵 A_i 的复制。

我发现了有关 Batch Mat 的大多数先前被问到的问题。多。只假设固定的批量大小。这里问了和我一样的问题,并提供了 tensorflow 中的解决方案。但是,该解决方案是使用 tf.tile() 实现的,它也是复制矩阵。


总而言之,我的问题是关于批量矩阵乘法,同时实现:

我在这里使用 pytorch,但我也接受其他实现。如果可以提高内存效率,我也接受在其他结构中表示输入(例如要相乘的矩阵,A)。