【发布时间】:2018-10-12 05:34:31
【问题描述】:
我有一个函数可以计算 3-D 体积的平均深度。有没有办法让代码在执行时间方面更有效率。体积的形状如下。
volume = np.zeros((100, 240, 180))
体积可以在不同体素处包含数字 1,目标是使用体积中所有占用单元的加权平均值来找到平均深度(平均 Z 坐标)。
def calc_mean_depth(volume):
'''
Calculate the mean depth of the volume. Only voxels which contain a value are considered for the mean depth
Parameters:
-----------
volume: (100x240x180) numpy array
Input 3-D volume which may contain value of 1 in its voxels
Return:
-------
mean_depth :<float>
mean depth calculated
'''
depth_weight = 0
tot = 0
for z in range(volume.shape[0]):
vol_slice = volume[z, :, :] # take one x-y plane
weight = vol_slice[vol_slice>0].size # get number of values greater than zero
tot += weight # This counter is used to serve as the denominator
depth_weight += weight * z # the depth plane into number of cells in it greater than 0.
if tot==0:
return 0
else:
mean_depth = depth_weight/tot
return mean_depth
【问题讨论】:
标签: python-3.x numpy computer-vision