-1

我有一个包含 13 个摄像头的数据集,每个摄像头位置被重建 5 次。我已将测量值汇总为与相机位置相关的 6 个变量 [X、Y、Z、Omega、Phi、Kappa] 的平均值和标准偏差。我想根据 XYZ 平均值绘制相机的位置,然后根据每个 XYZ 值的标准偏差值为每个位置创建一个椭球。(就像一个误差线,这也是可以接受的,但我的第一个目标是创建显示最大方差或误差方向的彩色椭圆体......对于这个例子,我使用标准偏差值。)

rgl用来绘制每个摄像机的平均位置,但我不确定如何通过另一个向量或列的值来改变每个绘制点的形状。

位置数据在这里汇总为平均值

pos.mean

PhotoID           X           Y        Z
DSC_7120 -269.697307 -359.608029 2390.520
DSC_7121 -323.537075 -312.080524 2388.374
DSC_7122 -381.084880 -259.807930 2386.175
DSC_7123 -434.500687 -212.438305 2384.080
DSC_7707 -297.275547  -12.954589 2352.626
DSC_7708 -238.105775  -61.327624 2353.830
DSC_7709 -178.910977 -110.464992 2354.912
DSC_7710 -124.471751 -155.745775 2356.300
DSC_7711  -65.107734 -205.164167 2358.239
DSC_7794   -2.828331    9.167357 2308.687
DSC_7795  -61.841640   56.621020 2307.068
DSC_7796 -118.768896  104.237722 2306.107
DSC_7797 -176.829418  150.560971 2304.887

标准差值为:

pos.sd

PhotoID         X         Y            Z
DSC_7120 0.1507733 0.3651178 0.0018517456
DSC_7121 0.1508845 0.3633876 0.0005815413
DSC_7122 0.1512489 0.3671259 0.0021316858
DSC_7123 0.1498382 0.3667440 0.0050629647
DSC_7707 0.1495099 0.3600409 0.0016483624
DSC_7708 0.1470677 0.3583582 0.0014911045
DSC_7709 0.1458569 0.3596208 0.0021194229
DSC_7710 0.1396953 0.3604535 0.0033336396
DSC_7711 0.1414401 0.3620422 0.0047287867
DSC_7794 0.1442061 0.3691425 0.0056096078
DSC_7795 0.1516369 0.3688717 0.0016928413
DSC_7796 0.1565440 0.3672701 0.0038089509
DSC_7797 0.1547617 0.3726132 0.0079183205

目前基本的3D情节可以这样看

library(rgl)
with(smry.mean, 
     plot3d(X, Y, Z,
            type="s"))

有没有办法将点更改为彩色椭圆体,其中椭圆体的尺寸和颜色是根据每个点的标准偏差值构建的?

谢谢

4

1 回答 1

0

您可以使用该ellipse3d函数来完成,但您必须一次绘制一个椭圆体。例如,

for (id in pos.mean$PhotoID) 
  ellipse3d(diag(pos.sd[id, c("X", "Y", "Z")])^2, centre = pos.mean[id, c("X", "Y", "Z")], col = "red", t = 10)

您需要使用该t参数来适当地设置比例:与均值范围相比,您的 SD 值非常小,因此t = 10可能只会给出不可见的小椭球。如果是这样,请尝试更大的值。

另一件事:如果您只知道 SD 值,您将不会得到“最大方差或误差的方向”。这可能需要一个完整的协方差矩阵,而不是我构建的对角矩阵。

于 2017-07-18T00:58:21.997 回答