计算机系统应用教程网站

网站首页 > 技术文章 正文

「三十四」MATLAB图像变换之Fan-Bean变换——扇形投影重建图像

btikc 2024-10-31 12:32:21 技术文章 5 ℃ 0 评论

Fan-Beam变换也是一种投影变换。与我的上一篇文章中介绍的Radon投影类似,Fan-Beam投影也是指图像沿着指定方向上的投影,区别在于Radon投影是平行光速,而Fan-Beam投影则是点光束,发散成一个扇形,因此称之为扇形射线。一个二元函数的投影是其一组线性积分,fanbeam()函数可以沿着一个光束发散路径(形成扇形)进行线积分。如下图为指定旋转角度的一个Fan-Beam投影。

Fan-Beam投影的几何示意图

在MATLAB图像处理工具箱中,提供了实现Fan-Beam变换和Fan-Beam逆变换算法的函数,分别为fanbeam()函数和ifanbeam()函数,分别实现Fan-Beam投影和图像重建。

在MATLAB中提供了fanbeam()函数,用于计算Fan-Beam变换,该函数的调用格式如下:

  • F = fanbeam(I,D):I为需要变换的图像;D表示光源到图像中心像素点的距离;

  • F = fanbeam(..., param1, val1, param1, val2,...):'param1, val1, param1, val2'表示输入的一些参数,如下图所示:

fanbeam()函数的控制参数

从上图可以看到,参数'FanSensorGeometry'可以指定探测器的类型,即'are'或'line',分别表示圆弧型探测器和直线型探测器,如下图所示:

圆弧型探测器几何示意图

直线型探测器几何示意图

  • [F,fan_sensor_positions,fan_rotation_angles]=fanbeam(...):参数'fan_sensor_positions'和'fan_rotation_angles'分别返回探测器和扇形旋转角度信息。

在MATLAB中提供了ifanbeam()函数,用于计算Fan-Beam逆变换,从而重构图像,该函数的调用格式如下:

  • I = ifanbeam(F,D):F为Fan-Beam变换矩阵,每列数据对应一个旋转角度的Fan-Beam变换的投影数据,投影中心点为ceil(size(F,1)/2);

  • I = ifanbeam(...,param1,val1,param2,val2,...):'param1,val1,param2,val2'表示输入的一些参数,如下图所示:

ifanbeam()函数的控制参数

  • [I,H] = ifanbeam(...):H为返回滤波器的频率响应。

下面通过具体实例来说明Radon变换的含义和操作方法:

代码:

Demo1

Demo2_1

Demo2_2

Demo2_3

显示效果:

Demo1_figure1

Demo1_figure2

从Fan-Beam变换生成的图像可以看出,经过圆心(即图像中心)的光线投影值最大,远离圆心投影值逐渐减小,这是因为过圆心与圆相交的线段(即直径)最长。

Demo1_figure3

Demo2_figure1

Demo2_figure2

从上面两幅图可以看出,在投影面上的光线间距越小,重构图像失真越小,这符合我们所想。

Demo2_figure3

Demo2_figure4

从上面两幅图可以看出,在光线角度越小,重构图像失真越小,这也符合我们所想。其实光线间的角度间隔和投影面上光线距离对重构图像的影响是一致的。

「十」MATLAB语言之程序性能优化

「三十二」MATLAB图像变换之Hough变换——寻找图像中的直线段

「二十三」MATLAB数字图像运算之一

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表