为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2021-11-17 15:45:13
我有一个与仿射变换(<affine>标签之间)相关的问题。我正在使用AffineTransform3D函数从使用 Java 创建的 BigDataViewer Fiji 插件创建的 xml 文件(此处为完整 xml 文件)中提取以下两个仿射转换:<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 中导入两个仿射变换,使用buildAffine()R 包 {RNiftyReg} 中的函数,然后使用composeTransforms(){RNiftyReg}计算它们的组成。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()需要将平移、比例、倾斜和角度的值作为输入参数。我想知道哪个值对应什么。
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我主要是 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) 的向量以获得输出:

//img1.sycdn.imooc.com//6194b3250001976a06290088.jpg

查看完整回答
反对 回复 2021-11-17
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信