使用iradon处理(168,400)Radon图像后尺寸变为(168,168)的问题咨询
问题原因与解决方案
核心原因
scikit-image的iradon函数默认会根据输入投影的长度(你的输入中是168),重建出正方形图像——这是因为它默认假设原始图像是正方形,且投影覆盖的是正方形的外接区域。你的输入radon_image形状为(168,400),其中168是每条投影的采样长度,400是角度数量;iradon默认以这个采样长度作为正方形边长,所以输出(168,168)。
另外,大概率你在生成Radon投影时,使用了默认的circle=True参数(skimage.transform.radon的默认值),这个参数会自动把原始矩形图像裁剪成正方形再做变换,导致投影长度仅对应正方形的边长,而非原始矩形的对角线长度,进一步限制了iradon的重建范围。
解决步骤
修正Radon变换参数(若可重新生成投影)
如果原始图像是(168,400)的矩形,生成Radon投影时要关闭自动裁剪:from skimage.transform import radon import numpy as np # 角度设置需与后续iradon调用一致,这里用400个0-180度的角度 angles = np.linspace(0, 180, 400, endpoint=False) radon_image = radon(original_image, circle=False, angles=angles)此时
radon_image的形状会变为(≈434, 400)(434是原始矩形的对角线长度,确保投影覆盖整个矩形区域)。指定iradon的输出尺寸
在调用iradon时,显式设置output_size为目标尺寸,同时匹配生成投影时的角度参数:from skimage.transform import iradon # 角度参数必须和生成radon_image时完全一致 reconstructed_image = iradon(radon_image, filter_name=None, output_size=(168, 400), angles=angles)
注意事项
- 如果无法重新生成Radon投影(只有现有(168,400)的投影数据),直接指定
output_size=(168,400)会导致重建图像拉伸变形——因为现有投影的长度仅覆盖了正方形区域,无法完整还原矩形的全部信息,这种情况下只能接受变形或重新生成正确投影。 output_size支持二元组是scikit-image较新版本的特性,若你的版本较旧,需要先升级库。
内容的提问来源于stack exchange,提问作者tahereh zare
相关产品推荐
相关产品推荐

