我需要从两个2D图像重建3D真实空间中的个体。目前我可以给matlab提供一系列帧对(左和右)。然后它执行以下操作:
1:找到黑色像素: 2:计算每个黑色像素的矢量 3:搜索向量之间的交叉点 4:为每个交叉点创建数据点
由于鸟不是一个像素的大小,因此它们在3D空间中被重建为平面正方形。 X为宽度Y高度,Z距离摄像机。
我现在需要一种方法将这些磁盘减少到集中的单点,取其意思。为了做到这一点,我首先需要对它们进行聚类。
这三个人被安排在一个完美的正方形的角落所以:X = pdist(A)Y =联动(X)Z = clust(Y)不起作用,因为你将失去广场的一角。我使用下面的代码生成131个矩阵。每个矩阵告诉您哪个点属于另一个点。例如,M {1} {1}告诉您属于同一组的所有点与第一点(距离为0.2)
群集的所有信息都在这些矩阵中,但我需要做以下操作,我不知道如何。我需要Matlab来:
生成te矩阵的代码如下所示。个人的大小为.2,中心的坐标为[30,30,300] [30,30,600] [60,30,600] [X,Y,Z]
[X,Y,Z] data:
[X] 29.8000
29.9000
30.0000
30.1000
30.2000
59.8000
59.9000
60.0000
60.1000
60.2000
29.8000
29.9000
30.0000
30.1000
30.2000
[Y]29.8000
29.8000
29.8000
29.8000
29.8000
29.8000
29.8000
29.8000
29.8000
29.8000
29.9000
29.9000
29.9000
29.9000
29.9000
[Z]599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
599.7336
dCell在这种情况下是1。
for k=1:length(dCell)
A{k}=[X{k},Y{k},Z{k}]; As{k}=sortrows(A{k});
end
for m=1:length(As{k}(:,1))
B{k}{m}=As{k}(m)-As{k}(:,1);
C{k}{m}=As{k}(m,2)-As{k}(:,2);
E{k}{m}=As{k}(m,3)-As{k}(:,3);
M{k}{m}=[B{k}{m},C{k}{m},E{k}{m}];
end
数据需要在单元阵列中,因为整个过程中会出现尺寸不匹配。