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)
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")
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)
def _convert_itk_vector_to_numpy(self, v): return itk.GetArrayFromVnlVector(v.GetVnlVector())
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)