TLDR:
在2d numpy数组中找到2个点后,如何在0数组中在它们之间插值一条1行?在
上下文:
目前我正在尝试从二值化的医学图像数据(0和1)对一个3d数组执行2d操作。最终目标是在填充体素/像素(即第一个和最后一个实例)的起点和终点之间添加一条1s的线。在
为此,我使用SimpleITK分割一行,然后将其转换为numpy数组。在其他示例之后,我编写了返回一组数组的函数,这些数组显示填充(1)个像素和空(0)个像素。在
从最早和最后一个实例中,我通过在所有点上加1来“填充”中间的点,然后用1替换2。我要做的是将这条线添加回2d数组,最终,添加回3d数组。在
我知道我有一个通过scipy.ndimage.map_坐标(np.转置(z) ,但我不知道如何将其应用于原始数组。在
在我看来,我可以简单地看到创建一个由0组成的2d数组,然后将其简单地添加到原来的2d数组中。尽管如此,我还是不知道如何将直线插值到二维数组中,然后再插值到三维数组中。想要先在二维环境下工作是因为这些阵列可以非常大。任何帮助都将不胜感激。在import numpy as np
import scipy
import matplotlib.pyplot as plt
import simpleITK as sitk
from timeit import default_timer as timer
#Functions used are shown below
#Read in a CT scan using SimpleITK
ctscan = sitk.ReadImage("example.mhd")
#Extract a slice along the Z axis (Simple ITK uses x, y, z indexing)
z = ctscan[:,:,150:151]
#Convert the slice to a numpy array, which is then z, y, x indexing
z = sitk.GetArrayFromImage(z)
#Drop the 3rd dimension to view in matplotlib
z = z[0, :, :]
plt.imshow(z)
#Get the