由于我的问题的性质,我想在 Matlab 中评估 Radon 变换的数值实现(即不同的插值方法给出不同的数值)。
在尝试编写自己的氡气并将其与 Matlab 的输出进行比较时,我发现我的氡气投影尺寸与 Matlab 的不同。
因此,如果需要氡样品,我对如何计算数量有一点直觉。让我们做2D案例。
这个想法是最大尺寸将是当对角线(至少是矩形)部分在氡变换中被投影时,所以diago=sqrt(size(I,1),size(I,2))
. 因为我们什么都不想,n_r=ceil(diago)
。n_r
应该是氡变换的离散样本的数量,应该确保没有数据被遗漏。
我注意到 Matlab 的radon
输出总是均匀的,这是有道理的,因为你总是想要一条“射线”穿过旋转中心。而且我注意到在所有情况下,数组的端点都有 2 个零。
所以在那种情况下,n_r=ceil(diago)+mod(ceil(diago)+1,2)+2;
但是,我似乎与 Matlab 有一些小的差异。
一个 MWE:
% Try: 255,256
pixels=256;
I=phantom('Modified Shepp-Logan',pixels);
rd=radon(I,pi/4);
size(rd,1)
s=size(I);
diagsize=sqrt(sum(s.^2));
n_r=ceil(diagsize)+mod(ceil(diagsize)+1,2)+2
rd=
367
n_r =
365
由于 Matlab 的 Radon 变换是我无法研究的函数,我想知道为什么会出现这种差异。