将 Java 中的 3D 仿射变换构建导入到 R

Import of 3D affine transformation build in Java to R

我有一个与仿射变换相关的问题(在 <affine> 标签之间)。我正在从 xml 文件中提取以下两个仿射变换(full xml file here) created with the BigDataViewer Fiji plugin created with Java, using the AffineTransform3D 函数:

<ViewRegistrations>
<ViewRegistration timepoint="0" setup="0">
  <ViewTransform type="affine">
    <Name>Fast 3d geometric hashing (rotation invariant), AffineModel3D on [beads (c=0)]</Name>
    <affine>1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0</affine>
  </ViewTransform>
  <ViewTransform type="affine">
    <Name>calibration</Name>
    <affine>1.9998662296836334 0.0 0.0 0.0 0.0 1.9998662296836334 0.0 0.0 0.0 0.0 1.9998662296836334 0.0</affine>
  </ViewTransform>
</ViewRegistration>

我想在 R 中导入两个仿射变换,使用 R 包 {RNiftyReg} 中的 buildAffine() 函数,然后使用 {RNiftyReg} 中的 composeTransforms() 计算它们的合成。

buildAffine(translation = c(0, 0, 0), scales = c(1, 1, 1), skews = c(0, 0,0),
  angles = c(0, 0, 0), source = NULL, target = NULL,
  anchor = c("none", "origin", "centre", "center"))

我的问题:
上面的仿射变换存储在一个包含 12 个索引的向量中。 buildAffine() 需要平移、比例、倾斜和角度的值作为输入参数。
我想知道哪个值对应什么。

我主要是 R 用户,但这里有:hte Java 调用中变量的名称是:

 dat <- scan (text="double xx, double yx, double zx, double tx, double xy, double yy, double zy, double ty, double xz, double yz, double zz, double tz", what="")
dat <- dat[dat != "double"]
matrix(dat,4)
      [,1]  [,2]  [,3] 
[1,] "xx," "xy," "xz,"
[2,] "yx," "yy," "yz,"
[3,] "zx," "zy," "zz,"
[4,] "tx," "ty," "tz" 

此页面记录了如何对仿射变换进行编码,唯一的区别是转置了 4x3 矩阵:https://o7planning.org/en/11157/javafx-transformations-tutorial

 t( matrix(dat,4) )
     [,1]  [,2]  [,3]  [,4] 
[1,] "xx," "yx," "zx," "tx,"
[2,] "xy," "yy," "zy," "ty,"
[3,] "xz," "yz," "zz," "tz" 

因此矩阵将应用于 c(x,y,z,1) 的向量以获得输出: