You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SimpleITK仿射配准中用黑色(0值)填充图像边缘

SimpleITK仿射配准:边缘填充改黑色及尺寸问题解决

一、将边缘填充改为黑色(像素值0)

你的代码中,ResampleImageFilter的SetDefaultPixelValue参数控制着变换后图像边缘的填充值,当前设置为100,这就是边缘显示灰色的原因。只需将该值改为0即可实现黑色填充:

# Resampling
resampler = sitk.ResampleImageFilter()
resampler.SetReferenceImage(fixed)
resampler.SetInterpolator(sitk.sitkLinear)
resampler.SetDefaultPixelValue(0)  # 修改此处为0
resampler.SetTransform(outTx)

后续的sitk.RescaleIntensity会将图像像素值映射到0-255范围,0值会被直接转为黑色,完全符合你的需求。

二、解决变换后图像尺寸小于原图像的问题

你提到变换后的移动图像尺寸小于原图像,这是因为当前代码将fixed图像设为参考图像(resampler.SetReferenceImage(fixed)),输出图像的尺寸、间距、原点都会和fixed保持一致。如果fixed的尺寸本身小于原moving图像,就会出现输出尺寸缩小的情况。

根据需求,有两种调整方式:

  1. 保持配准到fixed空间(尺寸与fixed一致):如果这是你的预期配准目标,当前的尺寸设置是合理的,无需额外修改。
  2. 保持原moving图像的尺寸:如果希望配准后的图像和原移动图像尺寸相同,需要将参考图像改为moving,同时使用变换的逆变换(outTx是将moving映射到fixed空间的变换,逆变换可将配准结果映射回moving的空间):
# Resampling(修改为保持原moving尺寸)
resampler = sitk.ResampleImageFilter()
resampler.SetReferenceImage(moving)  # 用原移动图像作为参考,保留原尺寸
resampler.SetInterpolator(sitk.sitkLinear)
resampler.SetDefaultPixelValue(0)
resampler.SetTransform(outTx.GetInverse())  # 使用逆变换

修改后的完整配准后处理代码

# Resampling(此处以保持fixed空间为例,若要原尺寸则替换为上述第二种代码)
resampler = sitk.ResampleImageFilter()
resampler.SetReferenceImage(fixed)
resampler.SetInterpolator(sitk.sitkLinear)
resampler.SetDefaultPixelValue(0)
resampler.SetTransform(outTx)

# Transform
out = resampler.Execute(moving)
simg1 = sitk.Cast(sitk.RescaleIntensity(fixed), sitk.sitkUInt8)
simg2 = sitk.Cast(sitk.RescaleIntensity(out), sitk.sitkUInt8)
cimg = sitk.Compose(simg1, simg2, simg1 // 2.0 + simg2 // 2.0)

# Save moved and diff image
moved_path = '{}/image/moved/{}/moved_{}.png'.format(DATA_DIR, METHOD, pair_name)
sitk.WriteImage(cimg, '{}/image/diff/{}/diff_{}.png'.format(DATA_DIR, METHOD, pair_name), imageIO='PNGImageIO')
sitk.WriteImage(simg2, moved_path, imageIO='PNGImageIO')

内容的提问来源于stack exchange,提问作者Chaoye Jin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:25:17