截断伪影

您所在的位置:网站首页 截断效应产生的原因是什么 截断伪影

截断伪影

2024-06-04 10:07| 来源: 网络整理| 查看: 265

截断伪影 (Truncated artifact) 1. 伪影的表现形式

如图1 所示,截断伪影表现为图像边缘异常发亮,严重时无法观察边缘重建区域。

Fig 1. 腹部截断伪影 2. 伪影的产生原因 截断伪影主要由于被扫描物体超出探测器视野而产生,根据其超出长度会产生不同严重程度的光亮,进而影响图像边缘部分成像。 截断在正弦图 (哪里有正弦图?) 上表现为超出图像宽度的弦波,这正是截断伪影光亮的产生原因。因为在 FBP 中,对正弦图的卷积会在边缘部分产生大幅度变化,使得重建图像边界不均匀。 3. 矫正方案 对正弦图左右两侧做 padding 操作 (mode='symmetric' 或 'reflect' 皆可),使得超出边界的正弦图均匀下降至0即可。由于超出图像边界的部分并不在探测器视野 (FOV) 中, 所以我们并不关心 padding 的值是否严格正确。

Fig 2. padding结果, 用 cos 使正弦图截断处均匀下降至0

建议

padding 单侧长度一般为正弦图宽度的 10% (RTK)。

对 padding 后的正弦图进行重建,并根据探测器成像几何,裁剪出原来探测器视野FOV即可。

Fig 3. padding后重建,并裁剪 FOV 4. 代码实现 截断伪影矫正关键代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24# 1. combine all raw image under the directory and convert to sinogram h, w = 237, 324 projs = [imreadRaw(file, h, w) for file in listDirectory(proj_folder, style='fullpath')] sgm = projectionsToSinograms(projs) # 2. padding all sinogram and save pad_sgm = [] for slice in range(sgm.shape[0]): pad_sgm.append(padSinogram(sgm[slice], padding=20, smootherDecay=True)) imwriteRaw(pad_sgm, sgm_pad_path) # 3. image reconstruction # Use your own recon tool. # 4. calculate radius reference and plot rec_img = np.fromfile(rec_img_path, dtype=np.float32).reshape(60, 512, 512) r_reference = fovCropRadius(SOD=750, SDD=1250, detWidth=399.168, reconPixSize=0.5) x, y = drawCircle(rec_img[0], radius=r_reference) plt.imshow(rec_img[0], cmap='gray') plt.plot(x, y, 'b-.'), plt.legend(['crop reference']), plt.show() # 5. crop and save crop_rec_img = fovCrop(rec_img, r_reference - 2) imwriteTiff(crop_rec_img, './rec/crop_f_abdomen.tif')

完整实现 在这里

[注]:以上图片来自 ICRP 110 数字体模投影,模拟投影以及小动物 CT,仅供学习参考



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3