CT图像预处理之重采样

CT图像的预处理操作一般包括以下几步:

step1: spacing interpolation
step2: window transform
step3: get mask effective range
step4: generate subimage

配套代码
各步骤意义:

step1: spacing interpolation。

用插值(interpolation)一词可能不太准确,较准确的叫法是重采样(resampling),另外取决于不同的工具包(下文会展开)还有zoom, resize两个称呼。
因为CT图像中,不同扫描面的像素尺寸、粗细粒度是不同的。这不利于进行CNN任务,所以需要使用同构采样。

step2: window transform

窗宽窗位的变换,主要是为了视觉上的清晰,具体可参见此篇博文。有人会用cut off,即HU值截断来代替此步,我一直用的window transform,因为无需分析整个数据集或许cut off所必须的截断值。
PS.我在此步顺便做了归一化操作,这一步也是必不可少的。归一化和零值中心化的操作主要是为了后续训练网络,零值中心化是网络收敛的关键。至于具体的归一化操作,也有很多变种,可自行Google.

step3: get mask effective range

获取Slices的有效范围,即去除整个序列中前后几张没有任何器官的Slices。

step4: generate subimage

获取小patch,即根据手头的GPU可以接受的大小,用滑窗法从原始图像中获得小patch。

本文主要讲述重采样操作。

重采样可分为两种方案,具体操作步骤并无太大差异:
在这里插入图片描述
可用的工具包:

PIL-按目标大小缩放

from PIL import Image
img=Image.open(jpgfile)   
new_img=img.resize((width,height),Image.BILINEAR)   
new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))

CV2-按目标大小缩放

import cv2
pic = cv2.imread(jpgfile)
pic = cv2.resize(pic, (width,height), interpolation=cv2.INTER_CUBIC)
#cv.INTER_NEAREST;cv.INTER_LINEAR;cv.INTER_CUBIC;cv.INTER_AREA
# 通常,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。
# 默认情况下,所有的放缩都使用cv.INTER_LINEAR。

缺点:PIL,CV2一般针对2D图像做处理,比如普通的自然图像,或者ct三维图像中的某一层。所以,并不适用于3D的医学图像处理。

sci

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值