数据处理流程

1、从路径中读取图片

从路径中读取图片

CurvatureFlow实现了一个曲率驱动的图像去噪算法。灰度输入图像中的等亮度轮廓被视为一个水平集。然后使用基于曲率的速度函数进化水平集

将图片转化为一个数组 在将矩阵进行转置,图片的形式 slice 长 宽 通道 转化为 slice 通道 长 宽

def sitk_reader(path):  
    image_nii = sitk.ReadImage(str(path), sitk.sitkFloat32)
    if not 'mask' in str(path) and not 'seg' in str(path) : # only for volumes / scalar images
        image_nii = sitk.CurvatureFlow(image1 = image_nii, timeStep = 0.125, numberOfIterations = 3)
        #实现了一个曲率驱动的图像去噪算法。灰度输入图像中的等亮度轮廓被视为一个水平集。然后使用基于曲率的速度函数进化水平集:
    vol = sitk.GetArrayFromImage(image_nii).transpose(2,1,0)
    return vol, None
vol=tio.ScalarImage(path,reader=sitk_reader)
2、将图片转ScalarImage类  LabelMap类

ScalarImage 类可以存储多种信息

vol=tio.ScalarImage(path,reader=sitk_reader)
mask = tio.LabelMap(mask_path,reader=sitk_reader)
3、封装subject 图像对象
subjects=[]
subject_dict = {
        'vol' : vol,
        'mask' : mask, 
        'other_info':"....." 
        }
subject = tio.Subject(subject_dict)
4、subjectDataSet 对象 构建loader
subjects.append(subject)
ds = tio.SubjectsDataset(subjects, transform = get_transform({"unisotropic_sampling":True,"resizedEvaluation":True}))
dl=DataLoader(ds, batch_size=1)
5、transform 操作

##在transform过程中 调整图像大小

#基于单张图像的直方图均衡化操作,允许设置原直方图数值区间(如:(-1000, 1000))或者在不清楚数值情况下的百分比区间(如:(0.5,99.5)),并指定输出强度区间(如:(0.0,1.0))

# 重采样图像 重采样,改变图像像素的物理尺度,需要指定各个维度的像素长度。

#CropOrPad:给定目标维度,如果原图大则裁剪,若小则填充,需要注意这一操作在拆分batch之前进行以同一维度,允许指定pad方法。

#允许通过mask指定裁剪的中心位置(若不指定,则crop操作从各维度中心向外计算,若指定mask,则crop操作会从mask的各维度非0中心向外计算)

## compose 中的图像是从最后一个定义的操作顺序进行到第一个操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值