本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

radon

Radon 变换

说明

R = radon(I) 返回二维灰度图像 I 的 Radon 变换 R,角度范围为 [0, 179] 度。Radon 变换是图像强度沿特定角度的径向线的投影。

您可以选择使用 GPU(需要 Parallel Computing Toolbox™)计算 Radon 变换。

示例

R = radon(I,theta) 返回基于 theta 所指定角度的 Radon 变换。

[R,xp] = radon(___) 返回向量 xp,其中包含与图像的每行对应的径向坐标。

示例

全部折叠

对于此图像,将坐标区刻度设为可见。

iptsetpref('ImshowAxesVisible','on')

创建示例图像。

I = zeros(100,100);
I(25:75, 25:75) = 1;

计算 Radon 变换。

theta = 0:180;
[R,xp] = radon(I,theta);

显示该变换。

imshow(R,[],'Xdata',theta,'Ydata',xp,'InitialMagnification','fit')
xlabel('\theta (degrees)')
ylabel('x''')
colormap(gca,hot), colorbar

将坐标区刻度设为不可见。

iptsetpref('ImshowAxesVisible','off')

输入参数

全部折叠

灰度图像,指定为二维数值矩阵。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

投影角度(以度为单位),指定为数值标量或数值向量。

数据类型: double

输出参数

全部折叠

图像 I 的 Radon 变换,返回为下列项之一。

  • 如果 theta 是标量,则 R 是数值列向量,其中包含基于 theta 度的 Radon 变换。

  • 如果 theta 是向量,则 R 是矩阵,其中每列是基于 theta 中某一角度的 Radon 变换。

对应于 R 的每行的径向坐标,以数值向量形式返回。径向坐标是沿 x' 轴的值,该值与 x 轴呈逆时针方向 theta 度角。两个轴的原点均为图像的中心像素,定义为

floor((size(I)+1)/2)
例如,在 20×30 图像中,中心像素是 (10,15)。

算法

图像的 Radon 变换是其中每个像素的 Radon 变换的总和。

算法首先将图像中的每个像素分成四个子像素,并单独对每个子像素投影,如下图所示。

根据投影位置和 bin 中心之间的距离,每个子像素的贡献按比例拆分到两个最近的 bin。如果子像素投影到 bin 的中心点,则轴上的 bin 将获得子像素的完整值,即像素值的四分之一。如果子像素投影到两个 bin 之间的边界,则子像素值在这两个 bin 之间均匀拆分。

参考

[1] Bracewell, Ronald N., Two-Dimensional Imaging, Englewood Cliffs, NJ, Prentice Hall, 1995, pp. 505-537.

[2] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 42-45.

扩展功能

在 R2006a 之前推出