matlab griddata插值太慢,非常慢的插值使用`scipy.interpolate.griddata`

matlab griddata插值太慢,非常慢的插值使用`scipy.interpolate.griddata`在长期忍受scipy.interpolate.griddata极其缓慢的性能之后,我决定放弃{所以对于上面的例子,上面问题中的那个,你可以得到输入文件here,这是一段需要1.1ms的代码,而在上面的例子中,692ms需要重新划分。在importcv2new_data=data.T[::-1]#calculatethepixelcoordinatesofthe#computat…

在长期忍受scipy.interpolate.griddata极其缓慢的性能之后,我决定放弃{

所以对于上面的例子,上面问题中的那个,你可以得到输入文件here,这是一段需要1.1ms的代码,而在上面的例子中,692ms需要重新划分。在import cv2

new_data = data.T[::-1]

# calculate the pixel coordinates of the

# computational domain corners in the data array

w,e,s,n = map_extent

dx = float(e-w)/new_data.shape[1]

dy = float(n-s)/new_data.shape[0]

x = (lon.ravel()-w)/dx

y = (n-lat.ravel())/dy

computational_domain_corners = np.float32(zip(x,y))

data_array_corners = np.float32([[0,new_data.shape[0]],

[0,0],

[new_data.shape[1],new_data.shape[0]],

[new_data.shape[1],0]])

# Compute the transformation matrix which places

# the corners of the data array at the corners of

# the computational domain in data array pixel coordinates

tranformation_matrix = cv2.getPerspectiveTransform(data_array_corners,

computational_domain_corners)

# Make the transformation making the final array the same shape

# as the data array, cubic interpolate the data placing NaN’s

# outside the new array geometry

mapped_data = cv2.warpPerspective(new_data,tranformation_matrix,

(new_data.shape[1],new_data.shape[0]),

flags=2,

borderMode=0,

borderValue=np.nan)

我看到这个解决方案的唯一缺点是在数据中有一点偏移,如所附图像中不重叠的轮廓所示。重新划分的数据轮廓(可能更精确)为黑色,翘曲透视数据轮廓为“jet”色阶。在

目前,我很好地接受了性能优势的差异,我希望这个解决方案也能帮助其他人。在

应该有人(而不是我……)来改进griddata的性能:)

享受吧!在

5b6f52a8e012f0b7d2bed0d73e9d764d.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35899.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注