示例#1
0
def compareImageHeaders(img1, img2, tolerance=0.00001):
    print("Comparing headers")
    sp1 = itk.GetArrayFromVnlVector(itk.spacing(img1).GetVnlVector())
    sp2 = itk.GetArrayFromVnlVector(itk.spacing(img2).GetVnlVector())
    spVar = np.sum(np.abs(sp2 - sp1))

    if (spVar > tolerance):
        return (False)

    or1 = itk.GetArrayFromVnlVector(itk.origin(img1).GetVnlVector())
    or2 = itk.GetArrayFromVnlVector(itk.origin(img2).GetVnlVector())
    orVar = np.sum(np.abs(or2 - or1))

    if (orVar > tolerance):
        return (False)

    return (True)
示例#2
0
 def SetSegmentation(self, segmentation):
     if self.ValidateInput(segmentation):
         self.segmentation = segmentation
         self.segmentationRegions = np.unique(
             itk.array_view_from_image(self.segmentation))
         if 0 in self.segmentationRegions:
             self.segmentationRegions = np.delete(self.segmentationRegions,
                                                  0)
         if self.verbose:
             self.log.info("Segmentation regions: " +
                           str(self.segmentationRegions))
         self.voxvol = np.prod(
             itk.GetArrayFromVnlVector(
                 segmentation.GetSpacing().GetVnlVector()))
     else:
         self.log.error("Validation failed for segmentation image")
示例#3
0
assert arr.shape[0] == 2
assert arr.shape[1] == 3
assert arr[1, 1] == 5
arr = arr.copy()
image = itk.image_from_array(arr)
image2 = type(image).New()
image2.Graft(image)
del image  # Delete image but pixel data should be kept in img2
image = itk.image_from_array(arr + 1)  # Fill former memory if wrongly released
assert np.array_equal(arr, itk.GetArrayViewFromImage(image2))
image2.SetPixel([0] * image2.GetImageDimension(),
                3)  # For mem check in dynamic analysis
# VNL Vectors
v1 = itk.vnl_vector.D(2)
v1.fill(1)
v_np = itk.GetArrayFromVnlVector(v1)
assert v1.get(0) == v_np[0]
v_np[0] = 0
assert v1.get(0) != v_np[0]
view = itk.GetArrayViewFromVnlVector(v1)
assert v1.get(0) == view[0]
view[0] = 0
assert v1.get(0) == view[0]
# VNL Matrices
m1 = itk.vnl_matrix.D(2, 2)
m1.fill(1)
m_np = itk.GetArrayFromVnlMatrix(m1)
assert m1.get(0, 0) == m_np[0, 0]
m_np[0, 0] = 0
assert m1.get(0, 0) != m_np[0, 0]
view = itk.GetArrayViewFromVnlMatrix(m1)
示例#4
0
 def _convert_itk_vector_to_numpy(self, v):
     return itk.GetArrayFromVnlVector(v.GetVnlVector())
示例#5
0
np_copy = itk.GetArrayFromImage(itk_image)

#do numpy stuff

#convert back to itk, view only, data is not copied
itk_np_view = itk.GetImageViewFromArray(np_copy)

#convert back to itk, data is not copied
itk_np_copy = itk.GetImageFromArray(np_copy)

# Save result
itk.imwrite(itk_np_view, output_filename)

# Vnl matrix[View] from array
arr = np.zeros([3, 3], np.uint8)
matrix_view = itk.GetVnlMatrixViewFromArray(arr)
matrix = itk.GetVnlMatrixFromArray(arr)

# Array[View] from Vnl matrix
arr_view = itk.GetArrayViewFromVnlMatrix(matrix)
arr = itk.GetArrayFromVnlMatrix(matrix)

# Vnl vector[View] from array
vec = np.zeros([3], np.uint8)
vnl_vector_view = itk.GetVnlVectorViewFromArray(vec)
vnl_vector = itk.GetVnlVectorFromArray(vec)

# Array[View] from Vnl vector
vec_view = itk.GetArrayViewFromVnlVector(vnl_vector)
vec = itk.GetArrayFromVnlVector(vnl_vector)