三维医学图像深度学习,数据增强方法(monai):RandHistogramShiftD, Flipd, Rotate90d
#coding:utf-8 import torch from monai.transforms import Compose, RandHistogramShiftD, Flipd, Rotate90d import matplotlib.pyplot as plt import SimpleITK as sitk # start a chain of transforms KEYS = ("image", "label") class aug(): def __init__(self): self.random_rotated = Compose([ Rotate90d(KEYS, k=1, spatial_axes=(2,3),allow_missing_keys=True), Flipd(KEYS, spatial_axis=(1,2,3),allow_missing_keys=True), RandHistogramShiftD(KEYS, prob=1, num_control_points=30, allow_missing_keys=True), # ToTensorD(KEYS), ]) def forward(self,x): x = self.random_rotated(x) return x # start a dataset def save(before_x, after_x, new_path,new_name=""): after_x = after_x[0, 0,...] if new_name=="image": ct = sitk.ReadImage(before_x, sitk.sitkInt16) else: ct = sitk.ReadImage(before_x, sitk.sitkUInt8) predict_seg = sitk.GetImageFromArray(after_x) predict_seg.SetDirection(ct.GetDirection()) predict_seg.SetOrigin(ct.GetOrigin()) predict_seg.SetSpacing(ct.GetSpacing()) sitk.WriteImage(predict_seg,new_path) if __name__ == "__main__": image = r"D:\MyData\3Dircadb1_fusion_date\image_2.nii" # 原图 label = r"D:\MyData\3Dircadb1_fusion_date\liver_2.nii" #标签 new_path = r"D:\MyData\3Dircadb1_fusion_date\image_0.nii" #增强后的原图 new_path1 = r"D:\MyData\3Dircadb1_fusion_date\liver_1.nii" #增强后的标签 ct = sitk.ReadImage(image) ct1 = sitk.GetArrayFromImage(ct) seg = sitk.ReadImage(label) seg1 = sitk.GetArrayFromImage(seg) ct = ct1[None, None,...] seg = seg1[None, None,...] ct = torch.from_numpy(ct) seg = torch.from_numpy(seg) m = {"image": ct, "label":seg} augs = aug() print(m["image"].shape) data_dict= augs.forward(m) save(image, data_dict["image"], new_path, "image") save(label, data_dict["label"], new_path1, "label") print(data_dict["image"].shape) plt.subplots(1, 3) plt.subplot(1, 3, 1); plt.imshow(ct1[66,...]) plt.subplot(1, 3, 2); plt.imshow(data_dict["image"][0,0, 66,...]) plt.subplot(1, 3, 3); plt.imshow(data_dict["label"][0,0, 66,...]) plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)