**
Canny 边界提取(三维、二维都可)
**
import os
import numpy as np
import SimpleITK as sitk
data_dir = r'6 (1)_label.nii.gz'
data_nii = sitk.ReadImage(data_dir)
origin = data_nii.GetOrigin()
spacing = data_nii.GetSpacing()
direction = data_nii.GetDirection()
# change data type before edge detection
data_float_nii = sitk.Cast(data_nii, sitk.sitkFloat32)
canny_op = sitk.CannyEdgeDetectionImageFilter()
canny_op.SetLowerThreshold(100)
canny_op.SetUpperThreshold(200)
canny_op.SetVariance(1)
canny_op.SetMaximumError(0.5)
canny_sitk = canny_op.Execute(data_float_nii)
canny_sitk = sitk.Cast(canny_sitk, sitk.sitkInt16)
canny_sitk.SetOrigin(origin)
canny_sitk.SetSpacing(spacing)
canny_sitk.SetDirection(direction)
sitk.WriteImage(canny_sitk, 'canny_edge.nii.gz')
**
Sobel 边界提取(三维、二维都可)
**
import os
import numpy as np
import SimpleITK as sitk
data_dir = r'6 (1)_label.nii.gz'
data_nii = sitk.ReadImage(data_dir)
origin = data_nii.GetOrigin()
spacing = data_nii.GetSpacing()
direction = data_nii.GetDirection()
# change data type before edge detection
data_float_nii = sitk.Cast(data_nii, sitk.sitkFloat32)
sobel_op = sitk.SobelEdgeDetectionImageFilter()
sobel_sitk = sobel_op.Execute(data_float_nii)
sobel_sitk = sitk.Cast(sobel_sitk, sitk.sitkInt16)
sobel_sitk.SetOrigin(origin)
sobel_sitk.SetSpacing(spacing)
sobel_sitk.SetDirection(direction)
sitk.WriteImage(sobel_sitk, 'sobel_edge.nii.gz')