切片3D阵列与投影

Link to array file

我是图像处理和尝试理解投影的新手。因此,当我们拥有3D图像时,它只是3D numpy数组,我通过将2D数组从3D数组中切出来查看它。为了进行正交投影,我简单地沿一个轴求和阵列。这是我这样做的代码:

import numpy as np
import matplotlib.pyplot as plt

#shape of the 'image' array is (256,256,176) so i am assuming there are 256 slices and row and column of each slice is 256x176
image = np.load('brain_ct.npy')

#when i sum along axis 0 or axis 1,the image shows up as blank with some warnings
#(Warning: converting a masked element to nan)
#only summing up along axis 2 works (not sure why is that)
collapsed = np.sum(image,axis=2)

plt.imshow(collapsed,cmap='gray')

我不确定为什么沿轴0和1求和不起作用。另外,我不确定2号轴(顶部/底部/侧面)在给我什么?最后,如果沿一个轴求和给出正交投影,我该如何进行倾斜和透视投影。我必须将图像坐标乘以任何变换矩阵吗?

谢谢大家。

wei77316 回答:切片3D阵列与投影

该错误似乎表明您正在加载numpy.ma.MaskedArray而不是NumPy数组。但是,我不明白为什么沿轴= 2不会出现错误,因为沿每个尺寸都会投影任何被遮罩的点。可能是您遮住了整个平面,然后沿0求和只会给您一系列nans。我不确定,但是可能是np.sum无法正确处理掩码数组,而您应该使用image.sum(),后者可能会更好地处理掩码。如果您共享.npy文件,我们可以提供更具个性化的答复。

通常,求和是一种投影方式,但是您也可以执行max(),这是体积投影的最常见形式。

关于倾斜投影,这远远超出了SO答案中可以简洁概括的范围,但是通常是的,您需要先变换图像然后进行投影。您可以查看scipy.ndimage模块以获取更多信息。

本文链接:https://www.f2er.com/3155920.html

大家都在问