在过去的两天里,我一直在尝试实际使用python计算图片堆栈的梯度。
Numpy.gradient()给我值,但它们不足以进行边缘检测,因此我还写了我自己的内核,用灰色值(请称其为堆栈)乘以Array中的每个值。
因此numpy.gradients()确实非常快,但还不够好,我的梯度计算需要很多时间(大约45分钟)。借助OpenCV和CV矩阵在C ++中实现相同功能,一切都变得更快(大约3分钟),但是我无法在python和c ++之间建立包装。
是否有一种方法可以获取形状为NxMxK的numpy float32数组,并以某种方式在GPU上计算x,y,z方向上的梯度?我尝试了cudamat,但是只有基本的矩阵运算,并且tensorflow或pytorch似乎很复杂:(