跳转至

医学影像中的重采样

图片分辨率

通常所说的“图片分辨率”(image resolution)是指像素个数,通常表达为横向多少个像素纵向多少像素。比如200300,通常表示 横向200个像素、纵向300个像素的图片

像素间距/体素间距

“像素间距”(Pixel Spacing)是指两个像素之间的距离,定义了图像像素的物理大小。比如定义像素间距1mm,也就意味着图片中的两个像素 的实际物理间距是1mm,这样有了像素个数就可以计算出实际物体的尺寸。对应的,当图像从2D拓展到3D,普通自然图像拓展为医学图像时,“像素” 对应的拓展为“体素”,而“像素间距”(Pexel Spacing)会对应拓展成“体素间距”(Voxel Spacing)。知道了体素数和体素间距,也就可以计算出 一个医学图像对应的实际物理尺寸了。

重采样

与自然图像不同的是,在医学图像中,扫描部位的真实大小(成像大小)是非常重要的信息,因此在医学图像中体素个数(resolution)和体素间距(spacing) 是两个非常重要的指标。

成像大小 = spacing * resolution
需要注意的是,由于扫描设备的不同,扫描出来的医学图像通常具有不同的体素间距,而对于CNN无法理解体素间距,因此在处理医学图像的时候我们需要将所有数据 的spacing重采样到一致,这样resolution就可以反映成像大小了。
#对图像重采样到spacing=1.5mm×1.5mm×5.0m
spacing = Spacingd(keys=["image", "label"], pixdim=(1.5, 1.5, 5.0), mode=("bilinear", "nearest"))
将spacing重采样到一致之后,图像中体素的个数(即图像的分辨率)却不一定相同。而对于神经网络是需要输入固定大小分辨率的数据,所以通常在训练的时候 是用一个固定大小的patch从图像中裁剪采样。至于如何裁剪,随机裁剪、滑动窗口遍历等都可以
#patch的size为(192×192×16)
RandCropByPosNegLabeld(keys, label_key=keys[1], spatial_size=(192, 192, 16), num_samples=3),
需要注意的是,重采样时增大spacing,采样间隔变大会导致resolution变小,即一个patch中的细节信息会减小,好处是视野更大可以获取更多的上下文信息。 减小spacing则会反过来,因此针对不同的数据和任务要对spacing进行权衡。

评论