加速复杂的Numpy矩阵乘法(点云)

时间:2015-06-20 08:25:37

标签: numpy

我有大约200个3D点,我需要将它们乘以一个相当复杂的2D投影矩阵。我目前正在使用numpy和for循环,基本上迭代3D点云,应用矩阵变换并获取我的数据。

这似乎很慢。有什么办法可以对它进行矢量化,或使用某种加速技术(地图,游泳池等)。

    F = matrix([
        [735.4809,  0.,         388.9476,   0.],
        [0.,        733.6047,   292.0895,   0.],
        [0.,        0.,         1.0000,     0.]
    ])
    VehicleRPY = self.GetRT(Roll=Roll, Pitch=Pitch, Yaw=0., X=IMUX, Y=IMUY, Z=IMUZ);
    SonarToCamera = self.GetRT(Roll=RTRoll, Pitch=RTPitch, Yaw=RTYaw, X=RTX, Y=RTY, Z=RTZ);
    SpaceMatrix = matrix([
        [(sqrt(R**2 - (Y/(cosd(Roll)*cosd(Pitch)))**2)*sind(Theta))],
        [(Y/(cosd(Roll)*cosd(Pitch)))],
        [(sqrt(R**2 - (Y/(cosd(Roll)*cosd(Pitch)))**2)*cosd(Theta))],
        [1]
    ])
    FinalMatrix = F*VehicleRPY*SonarToCamera*SpaceMatrix;
    UVMatrix = matrix([
        [FinalMatrix.item(0)/FinalMatrix.item(2)],
        [FinalMatrix.item(1)/FinalMatrix.item(2)],
    ])

像上面这样的东西。我需要在每帧200个点重复这个3 * 3/4 * 4乘法

0 个答案:

没有答案