大型meshgrid Python的高效距离计算

时间:2018-03-11 10:19:46

标签: python numpy

我正在寻求帮助来加速我的代码,代码的目的是根据传感器和图片中像素之间的距离和角度,从传感器数据生成高分辨率图像。我在这些传感器的200多个不同位置有100个传感器的数据(它们在图片中移动)。 对于我的电脑,此时在一个位置仅需50个传感器就需要约90秒 - 这200个位置需要很长时间...... 请提出如何改进的建议(如果我采取了一种奇怪的方法)。

import numpy as np

xstart=-200
xstop=20
xstep=0.05
ystart=-1500
ystop=-1300
ystep=0.05

deg_limit = 10
rad_limit=np.radians(deg_limit)

Xrange=np.arange(xstart,xstop,xstep)
Yrange=np.arange(ystart,ystop,ystep)

sensor1=np.zeros((3))
sensor1[0]=-100
sensor1[1]=-1400
sensor1[2]=4
sensor2=sensor1.copy()+[1,0,0]
sensor3=sensor1.copy()+[0,1,0]
sensor4=sensor1.copy()+[2,0,0]
sensor5=sensor1.copy()+[0,2,0]
sensor6=sensor1.copy()+[3,0,0]
sensor7=sensor1.copy()+[0,3,0]
sensor8=sensor1.copy()+[0,4,0]
sensor9=sensor1.copy()+[4,0,0]
sensor10=sensor1.copy()+[0,5,0]

sensors=[sensor1,sensor2,sensor3,sensor4,sensor5,sensor6,sensor7,sensor8,sensor9,sensor10]
vector=np.zeros((3))
image=np.zeros((len(Yrange),len(Xrange)))
distanceimage=image.copy()
angleimage=image.copy()
testvector=[1/2,1/3,-1/10]#np.cross((sensor2-sensor1),(sensor3-sensor1))

testvector=testvector/np.sqrt(testvector[0]**2+testvector[1]**2+testvector[2]**2)
for _ in range(0,5):
    #outer loop for reading the sensorpositions and sampled values
    #inner loop for looping through the sensprs
    for sensor in sensors:
        xdist=Xrange-sensor[0]
        ydist=(Yrange-sensor[1])
        zdist=0-sensor[2]
        #Here should be a requirement that checks for the angle from
        #the point to the pixel and only adds to the image if the angle
        #within a certain range

        distanceimage=np.sqrt((xdist*xdist)+(ydist*ydist)[:,np.newaxis]+zdist*zdist)

        angleimage=(np.arccos((testvector[0]*xdist+testvector[1]*ydist[:,np.newaxis])/(distanceimage)))
        image[np.abs(angleimage)<rad_limit]+=distanceimage[np.abs(angleimage)<rad_limit]
        #Here I would like to use this "imagedistance" in different algoritms, i.e. selecting
        #the sampled values from each sensor

0 个答案:

没有答案