关于单投影向量逆Radon变换中iradon结果除以2的疑问
单投影向量逆Radon变换中iradon结果是否需要除以2?
在对单投影向量执行逆Radon变换时,Matlab官方示例中对结果做了除以2的操作,但我对此存在疑问,具体情况如下:
官方示例说明
官方文档中的“检查单角度反投影”示例步骤如下:
- 创建测试图像:
P = phantom(128);
- 执行Radon变换并提取45度角的投影向量:
R = radon(P,0:179); r45 = R(:,46);
- 由于
iradon不支持直接传入标量角度(标量会被视为角度增量),官方通过传入两份相同的投影向量和角度,再将结果除以2来实现单角度逆变换:
I = iradon([r45 r45], [45 45])/2; % 疑问点:此处为何要除以2? imshow(I, []) title('Backprojection from 45 degrees')
我的实验验证
查看iradon.m源码后发现,函数内部存在归一化处理,结果应与输入的角度数量无关。为验证这一点,我进行了以下实验:
P = phantom(128); R = radon(P,0:179); I1 = iradon([R(:,46) R(:,46)],[45 45]); I2 = iradon([R(:,46) R(:,46) R(:,46)],[45 45 45]); D1 = max(I1, [], 'all')-max(I2, [], 'all'); I3 = iradon([R(:,46) R(:,46)],[45 45])/2; I4 = iradon([R(:,46) R(:,46) R(:,46)],[45 45 45])/3; D2 = max(I3, [], 'all')-max(I4, [], 'all');
实验结果显示:
D1=0,说明I1与I2完全相同,证明iradon的输出结果确实和输入的角度数量无关;D2=0.804,说明对结果除以角度数量后,不同次数的输入得到的结果并不一致。
按照这个实验结果,如果官方示例的写法正确,D2应该为0,但实际并非如此。因此我认为单角度逆Radon变换应直接写成I1 = iradon([R(:,46) R(:,46)],[45 45]);,而非官方示例中的除以2的写法。请问我的理解是否有误?
内容的提问来源于stack exchange,提问作者En Lu
相关产品推荐
相关产品推荐

