我要做的是获取一个表示 3D 图像数据的 numpy 数组并计算每个体素的粗麻布矩阵。我的输入是一个形状矩阵 (Z,X,Y),我可以轻松地沿 z 进行切片并检索单个原始图像。
gx, gy, gz = np.gradient(imgs)
gxx, gxy, gxz = np.gradient(gx)
gyx, gyy, gyz = np.gradient(gy)
gzx, gzy, gzz = np.gradient(gz)
我可以按如下方式访问单个体素的粗麻布:
x = 100
y = 100
z = 63
H = [[gxx[z][x][y], gxy[z][x][y], gxz[z][x][y]],
[gyx[z][x][y], gyy[z][x][y], gyz[z][x][y]],
[gzx[z][x][y], gzy[z][x][y], gzz[z][x][y]]]
但这很麻烦,我不能轻易地对数据进行切片。
我尝试使用 reshape 如下
H = H.reshape(Z, X, Y, 3, 3)
但是当我通过检索特定体素的粗麻布来测试这一点时,从重新整形的数组返回的值与原始数组完全不同。
我想我可以以某种方式使用 zip 但我只能找到用于制作元组列表的方法。
- 奖励:如果有更快的方法来完成这个,请告诉我,我基本上需要为 3D 数据集中的每个体素计算 hessian 矩阵的三个特征值。计算粗麻布值非常快,但找到单个 2D 图像切片的特征值大约需要 20 秒。是否有任何用于图像处理的 GPU 或张量流加速库?