【发布时间】:2015-06-12 04:47:56
【问题描述】:
我有一个大小为 64x64x64 的二进制数组,其中 40x40x40 的体积设置为“1”,其余为“0”。我一直在尝试使用skimage.transform.rotate 和 Opencv 围绕 z 轴的中心旋转这个立方体:
def rotateImage(image, angle):
row, col = image.shape
center = tuple(np.array([row, col]) / 2)
rot_mat = cv2.getRotationMatrix2D(center, angle, 1.0)
new_image = cv2.warpAffine(image, rot_mat, (col, row))
return new_image
在 openCV 的情况下,我尝试对立方体中的每个单独切片进行 2D 旋转(Cube[:,:,n=1,2,3...p])。
旋转后,数组中值的总和发生变化。这可能是由旋转期间的插值引起的。如何在不向数组中添加任何内容的情况下旋转这种 3D 数组?
【问题讨论】:
-
您可以使用用于[重新排列元素][docs.scipy.org/doc/numpy/reference/…的
numpy函数 -
感谢 Kasra,但其目的是能够旋转,例如 22、45、90、135 等度数。我只能将重新排列元素用于 90,180,270... 角度。这是一个示例,但问题在于这些值是通过插值重新采样的。 stackoverflow.com/questions/4765341/how-can-i-rotate-a-3d-array
-
我更新了我的帖子,但你能告诉我 imagej 旋转是否适用于所有角度以保持总和吗?不得不说imagej已经相当成熟了,他们在图像处理方面做得非常出色。
标签: python multidimensional-array rotation