首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Java中构建的3D仿射变换导入R

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

Stack Overflow用户
提问于 2018-10-15 02:53:59
回答 1查看 42关注 0票数 1

我有一个关于仿射变换的问题(在<affine>标签之间)。我从一个xml文件(full xml file here)中提取以下两个仿射转换,该文件是用BigDataViewer创建的斐济插件创建的,使用AffineTransform3D函数:

代码语言:javascript
复制
<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包{RNiftyReg}中的buildAffine()函数导入R中的两个仿射变换,然后使用{RNiftyReg}中的composeTransforms()计算它们的合成。

代码语言:javascript
复制
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()要求将平移、比例、倾斜和角度的值作为输入参数。

我想知道哪个值对应于什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-15 07:11:12

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

代码语言:javascript
复制
 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

代码语言:javascript
复制
 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)的向量,得到的输出为:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档