点击查看代码
import numpy as np
import SimpleITK as sitk
def resample_image(itk_image, out_spacing=[1.0, 1.0, 1.0], is_label=True):
'''
gz_path = 'PANCREAS_0015.nii.gz'
print('测试文件名为:', gz_path)
# 使用sitk读取对应的数据
Original_img = sitk.ReadImage(gz_path)
print('原始图像的Spacing:', Original_img.GetSpacing())
print('原始图像的Size:', Original_img.GetSize())
# 对数据进行重采样
Resample_img = resample_image(Original_img)
print('经过resample之后图像的Spacing是:', Resample_img.GetSpacing())
print('经过resample之后图像的Size是:', Resample_img.GetSize())
sitk.WriteImage(Resample_img,gz_path)
'''
original_spacing = itk_image.GetSpacing()
original_size = itk_image.GetSize()
out_size = [
int(np.round(original_size[0] * (original_spacing[0] / out_spacing[0]))),
int(np.round(original_size[1] * (original_spacing[1] / out_spacing[1]))),
int(np.round(original_size[2] * (original_spacing[2] / out_spacing[2])))
]
resample = sitk.ResampleImageFilter()
resample.SetOutputSpacing(out_spacing)
resample.SetSize(out_size)
resample.SetOutputDirection(itk_image.GetDirection())
resample.SetOutputOrigin(itk_image.GetOrigin())
resample.SetTransform(sitk.Transform())
resample.SetDefaultPixelValue(itk_image.GetPixelIDValue())
if is_label:
resample.SetInterpolator(sitk.sitkNearestNeighbor)
else:
resample.SetInterpolator(sitk.sitkBSpline)
return resample.Execute(itk_image)
def get_bbox_from_mask(mask, outside_value=0):
"""
file_path=path
old_img = sitk.ReadImage(file_path)
img_arr = sitk.GetArrayFromImage(old_img)
bbox = get_bbox_from_mask(img_arr)
"""
mask_voxel_coords = np.where(mask != outside_value)
minzidx = int(np.min(mask_voxel_coords[0]))
maxzidx = int(np.max(mask_voxel_coords[0])) + 1
minxidx = int(np.min(mask_voxel_coords[1]))
maxxidx = int(np.max(mask_voxel_coords[1])) + 1
minyidx = int(np.min(mask_voxel_coords[2]))
maxyidx = int(np.max(mask_voxel_coords[2])) + 1
return [[minzidx, maxzidx], [minxidx, maxxidx], [minyidx, maxyidx]]
def crop_to_bbox(image, bbox):
"""
# file=path1
# out_file=path2
# old_img = sitk.ReadImage(file)
# img_arr = sitk.GetArrayFromImage(old_img)
# print(img_arr.shape)
# bbox=[[minzidx, maxzidx], [minxidx, maxxidx], [minyidx, maxyidx]]
# img_arr = crop_to_bbox(img_arr, bbox)
# print("new shape: ", img_arr.shape)
# img = sitk.GetImageFromArray(img_arr)
# img.SetOrigin(old_img.GetOrigin())
# img.SetDirection(old_img.GetDirection())
# img.SetSpacing(old_img.GetSpacing())
# sitk.WriteImage(img,out_file)
# print(bbox)
"""
assert len(image.shape) == 3, "only supports 3d images"
resizer = (slice(bbox[0][0], bbox[0][1]), slice(bbox[1][0], bbox[1][1]), slice(bbox[2][0], bbox[2][1]))
return image[resizer]
"""
image = sitk.ReadImage(path1)
resacleFilter = sitk.RescaleIntensityImageFilter()
resacleFilter.SetOutputMaximum(1) #此处0,1设置成0,255就代表将图像的灰度值归一化到0-255
resacleFilter.SetOutputMinimum(0)
image = resacleFilter.Execute(image)
sitk.WriteImage(image, path2)
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧