滤波反投影程序设计报告
滤波反投影重建算法(FBP)程序及结果分析

汇报人:李婷婷 时间:2020.10.29
目录
A FBP算法原理 B FBP算法过程 C 滤波器和内插函数 D MATLAB实现
01.滤波反投影重建算法原理 FBP算法原理
人为设计一种一维滤波函数,利用卷积的方法,先对获得的投影函数进行修正,然 后把修正过的投影函数反投影来重建图像。滤波反投影算法可一定程度上消除星状 伪影。
图4:输入全部投影数据用iradon函数得到的投影图
04.MATLAB实现
图1:头部模型图像
图2:(左)投影图, (右)滤波后投影图
图3:1°、45°、90°、 135°反向投影叠加效果
图6:步长为10反向投影叠加效果
图5:步长为15反向投影叠加效果
谢谢聆听!
内插函数:常见的有最近邻插值法和线性插值法,在 iradon中默认选择linear。
04.MATLAB实现
图1:原始ct投影
图2:R-L滤波后投影
04.MATLAB实现
叠加后的反投影图像
04.MATLAB实现
图1:取步长为30的反投影叠加 图2:取步长为15的反投影叠加
图3:取步长为10的反投影叠加
02.FBP算法过程
1
将原始投影进行一次傅里叶变换
2
设计合适的滤波器,得到滤波后的投影
将滤波后的投影进行反投影
3
4
所有反投影进行叠加,得到重建后的投影
03.滤波器和内插函数
滤波器选择:常见的滤波器有R-S滤波函数和S-L滤波 函数。R-L滤波函数计算简单,避免了大量正余弦计算, 得到的采样序列是分段现行的,并没有降低图像质量, 所以常见轮廓清楚,空间分辨率高。
投影数据采集与滤波反投影重建实验报告

实验一投影数据采集与滤波反投影重建一、实验目的及要求:用程序模拟X射线的投影,获得Shepp-Logan模型的投影数据。
对获得的投影数据进行滤波反投影重建,获得Shepp-Logan模型的重建图像。
二、实验基本原理:X射线穿过人体时,人体的各种组织对X射线有不同程度的衰减,即不同的组织有不同的线性衰减系数μ。
假设强度为I0的X射线穿过均匀分布衰减系数为μ的物体,行进了x的距离,强度变为I,按Beer定理有或①若物体时分段均匀的,系数分别是μ1、μ2、μ3、...,相应的长度为x1,x2,x3,...,则下式成立:②更一般的可用下面的积分式表示:③由于只是模拟X射线的投影过程,我们简化了问题。
假设断面的结构如图1.1(Shepp-Logan)所示(各图元均为椭圆),各个椭圆表示了人体的不同的组织(内部是均匀的),分别有不同的线性衰减系数μ。
那么,就可利用公式②来求某条X射线投影值。
各个椭圆(组织)的线性衰减系数μ(Shepp-Logan图的各椭圆的位置、大小和线性衰减系数参见表1.1)是已知的,问题就是球X射线穿过椭圆时的行进距离。
设椭圆的长短轴为a,b;X射线与b的夹角为Φ;椭圆中心到X射线的距离为d。
如图1.2所示。
这样可由④⑤求得X射线穿过椭圆时的行进距离。
再乘上各个椭圆的线性衰减系数μ后累加起来就可得到X射线的投影值。
④⑤图1.1 图1.2表1.1Shepp-Logan头部模型表1.1 r的单位是角度,μ为负值时表示削弱原有椭圆的衰减系数利用滤波反投影重建算法,实现对Shep-Logan头模型的重建。
要用到的原理有:傅立叶切片定理、快速傅立叶变换FF T以及滤波函数的设计。
三、主要仪器设备及实验耗材:具有XP或2000系统,并装有MATLAB系统的PC机。
四、实验内容或步骤:%1.用MATLAB图像处理工具箱的phantom生成Shep-Logan头模型;P=phantom(256);imshow(P)%2.用MATLAB中的radon函数获得Shepp-Logan模型的投影数据;theta1=0:10:170;[R1,xp]=radon(P,theta1); %计算Shep-Logen头模型18个角度theta2=0:5:175;[R2,xp]=radon(P,theta2); % 36个角度theta3=0:2:178;[R3,xp]=radon(P,theta3); % 90个角度的投影%显示投影数据:%18个角度figure,imagesc(theta1,xp,R1);xlabel('\theta');ylabel('x\prime');% 36个角度figure,imagesc(theta2,xp,R2);xlabel('\theta');ylabel('x\prime');% 90个角度figure,imagesc(theta3,xp,R3);xlabel('\theta');ylabel('x\prime');%3.用MATLAB中的iradon函数对获得的投影数据进行滤波反投影重建,获得Shepp-Logan 模型的重建图像。
滤波反投影法

滤波反投影法:
滤波反投影法根据附件三所给接收信息,采用先修正、后投影重建图像的做法,可得到原始图像的吸收率信息。
其原理为:在得到某一角度下的投影函数(一维函数)后,对此函数做滤波处理,得一修正后的滤波函数,再对修正后的滤波函数做反投影运算,得待检测介质吸收率在正方形托盘中的每一点的分布密度函数。
图1给出了滤波反投影法重建原始图像的流程图。
图1滤波反投影法流程图
反投影法重建原始图像的步骤:
(1)在对应于投影函数的角度下对投影函数做一维Fourier变换;
(2)对(1)得到的变换结果乘以权重因子;
(3)对(2)加权后得到的结果做一维傅立叶;
(4)对(3)所得函数做直接反投影;
(5)改变投影角度,得到180个不同的投影角度,对每一角度,重复上述步骤(1)~(4)。
R-L(Ram-Lak)滤波函数:
此函数的基本条件是二维图像函数的频率是有界的,显然,此题所得附件五的所有数据满足此条件。
故频域中的滤波函数可表示为:
其函数图像如图1.
图1R-L滤波函数图像
连续的R-L卷积函数所得结果为:
离散的R-L卷积函数所得结果为:
根据上述滤波原理,在本题中,对附件五中数据的具体滤波过程可用Matlab内置的Ram-Lak命令实现。
考虑实际投影成像平面位置的扇束滤波反投影(FFBP)算法

ICT 技术 Industrial Computed Tomography 作为一种融合了射线光电子学 精密机械 和计算机科学的新型非接触式测试技术 以其射线扫描 重建得到的被检工件切片衰减系数 分布映射图像 可对该切片内的结构 密度 特征尺寸 成分变化等物理 化学性质进行判 读和计量[1-2]
21
J
=
∂x′′ / ∂t′′ ∂φ / ∂t′′
∂x′′ / ∂β = ∂φ / ∂β
DD′2 (D′2 + t′′2 )3
(17)
式(17)带入式(16)有
∫ f
(r,θ
)
=
2π 0
1 U2
P%′e
(t1
,
β
)d
β
18
其中
P%′e (t, β ) = P′e (t, β ) ∗ g(s) 19
P′e (t, β ) = P f (t, β )
3
D
P%e (s, β ) = Pe (s, β ) ∗ g(s)
4
Pe (s, β ) = P f (s, β ) D
5
D2 + s2
g(s) = 1 h(s)
6
2
So
γ′ γ xr
D
xr′
D′
V
V′
s′′ s1 φ
θ
(r,θ)
E
β
t1
o
t′
x
β P
基于2017数学建模的滤波反投影算法应用

Image & Multimedia Technology •图像与多媒体技术Electronic Technology & Software Engineering 电子技术与软件工程• 91【关键词】CT 重构 randon 变换 滤波反投影1 CT图像重建原理的知识背景CT 系统基本过程是:平行入射的X 射线垂直于探测器平面发射,形成一个发射-接收CT 系统,每个探测器单元都看做是一个接收点,且间隔距离相等。
计算机断层成像图像重建的过程是按照一定的算法将已经检测到的投影数据进行数学运算,最终得到断层图像。
Radon 变换及其逆变换:物体断层被射线扫描后需要用重建算法计算才能得到CT 图像,图像重建的基础是Radon 变换及其逆变换。
假设每条射线相互平行,对于一个二维平面进行射线检测可得到一条投影数据,该投影数据称为二维平面的一个Radon 变换;如果检测中该平面旋转180度,同时将对应的投影数据进行组合,则得到类似正弦分布形式的图像,从正弦图获取二维平面图像的变换称为Radon 反演。
用公式可分别描述为:,由于matlab 中封装有radon 函数,使用时直接调用函数:R=radon (I ,theta )。
2 滤波反投影算法radon 函数使用的算法是滤波反投影法,反投影算法因为引入“星”状伪影而导致重建的图像失真,为了消除这个伪影,在进行反投影重建之前将数据修正,最后对修正后的投影数据进行反投影,这样就获得没有伪影的重建图像。
该方法是在空间域中把投影的数据直接反向投射到需要重建的图像中,然后将逐个的反投影图像累加起来。
滤波反投影法基本实现步骤:对数据作一维傅里叶变换→滤波函数:R-L 函数→对滤波后的数据作傅里叶逆变换→反投影求图像函数。
本文简要介绍推导傅里叶变换的过程:令为f 的二维傅里叶变换.单变量函G φ(ω)F(ω cosφ,ω sin φ )为通过φ角的F 切片,并记g φ (p)基于2017数学建模的滤波反投影算法应用文/李春梅为由合成方程 确定的函数,则 (Ff φV )(ω)=F(ω cos φ,ω sin φ),其中F 是单变量傅里叶变换算子,它建立了Radon 变换和傅里叶变换的联系.然后采用极坐标u=ω cos φ,v=ω sin φ表示傅里叶合成公式得将这个积分分解成两个积分式,通过变换、合并,最后使用投影切片定律重写这个积分形式为:f(x,y)= d ω d φ由此得到合成方程。
滤波反投影法

滤波反投影法:
滤波反投影法根据附件三所给接收信息,采用先修正、后投影重建图像的做法,可得到原始图像的吸收率信息。
其原理为:在得到某一角度下的投影函数(一维函数)后,对此函数做滤波处理,得一修正后的滤波函数,再对修正后的滤波函数做反投影运算,得待检测介质吸收率在正方形托盘中的每一点的分布密度函数f(x,y)。
图1给出了滤波反投影法重建原始图像的流程图。
图1滤波反投影法流程图
反投影法重建原始图像的步骤:
(1) 在对应于投影函数的角度下对投影函数做一维Fourier 变换;
(2) 对(1)得到的变换结果乘以权重因子|ρ|;
(3) 对(2)加权后得到的结果做一维傅立叶;
(4) 对(3)所得函数做直接反投影;
(5) 改变投影角度,得到180个不同的投影角度,对每一角度,重复上述步骤(1)
~(4)。
R-L (Ram-Lak )滤波函数:
此函数的基本条件是二维图像函数的频率是有界的,显然,此题所得附件五的所有数据满足此条件。
故频域中的滤波函数可表示为:
G (ρ)={|ρ|, |ρ|≤ρ0 0, 其它
其函数图像如图1.
图1R-L 滤波函数图像
连续的R-L 卷积函数所得结果为:
g (R )=ρ02[2sin c (2ρ0R )−sin c 2(ρ0R )]
离散的R-L 卷积函数所得结果为:
g (nT )={ 14T 2 , n =0 0 , n 为偶数−1n 2π2T 2,n 为奇数
根据上述滤波原理,在本题中,对附件五中数据的具体滤波过程可用Matlab 内置的Ram-Lak 命令实现。
偏折层析的滤波反投影算法及误差分析

第26 卷第11 期2006 年11 月光学学报ACTA OP TICA SIN ICAVo l. 26 ,No. 11November , 2006文章编号: 025322239 (2006) 112165729偏折层析的滤波反投影算法及误差分析宋张斌贺安之(南京理工大学信息物理与工程系, 南京210094)摘要: 对偏折层析投影转换为相位层析投影的转换关系迚行了分析,给出明晰的数学关系,幵针对偏折层析的滤波反投影算法重建的结果迚行误差分析。
分析结果表明投影噪声对重建场的作用体现在与由偏折层析滤波反投影算法的滤波器有关的倾斜函数上。
因此提出了改迚的偏折层析滤波反投影算法,数值模拟表明,改迚算法在有效抑制倾斜现象的同时,对重建结果不会造成明显的失真。
在此基础上改迚的算法被用于真实火箭燃气射流密度场的三维重建中。
关键词: 信息光学; 偏折层析; 重建算法; 误差分析中图分类号: O438 文献标识码: AFil t e red B ac k2P r oject i o n Al gori t h m of Def lect i on To m og r ap h ya n d Er r or A n al ys isSong Y a ng Zhang Bin He Anzhi( Dep a r t me n t of I nf or m a t i on Physics & Engi neeri ng Na n ji ng U n iversit y of Scie nce & Tech nology , Na n ji ng 210094)Abs t r act : The conversion f rom deflection tomography p rojection to phase tomograp hy p rojection is analyzed , and an explicit exp ression correspondin g to the conversion is p r esented. An er ror analysis is made to the reconst r ucted fields by f iltered back2p rojection ( DFB P ) algorithm of deflection tomography. Results show that the effect of p rojection noise on the reconst ructed fields is rep resented by a slope f unction related to the filter used in deflection tomograp hic f iltered back2p rojection algorithm. So the deflection tomographic f ilter ed back2p rojection algorithm is modified. Numerical simulation shows that the modified algorithm dep resses the slope ph enomena efficiently , while no obvious distortion is int roduced to the reconst r uction. Based on the modified algor ithm , the three2dimensional reconst ruction for den sity field of the real rocket exhausted plumes is carried out .Key w or ds : information optics ; deflection tomograp hy ; reconst ruction algorithm ; error analysis1 引言光学层析技术( Optical Comp uterized Tomograp hy ,O CT)是以光波为载体, 由加载了被测场信息的多方向投影数据重建待测场物理量分布的技术。
滤波反投影

平行束滤波反投影1100500121 赵伟伦 准备知识:一维Fourier 变换:dt et f f f F t i ⎰+∞∞--⋅==πωω2)()(~)( 一维逆Fourier 变换: ωωπωd e f f F x f t i ⎰+∞∞--⋅==21)(~)~()( 且有:)~(~),(11f F F f f F F f --⋅=⋅=重要的性质:(卷积特性))(~)(~)*(ωωgf g f F ⋅=; )(~)(~)(ωωgf g f F *=⋅ 二维Fourier 变换: dX e x x f f f F x x i R ),(),(22121221212),(),(~)(⋅-⎰==ωωπωω; 逆二维Fourier 变换: Ω==⋅-⎰d e f f F x x f x x i R ),(),(221122121212),(~)~(),(ωωπωω; 中心切片定理:),)(ˆ()(2ϕωωfF f F r =Φ, 其中),(ˆϕr f 是),(21x x f 的Radon 变换: 解释:一个二元函数的Radon 变换关于r 的一维Fourier 变换与这个二元函数的二维Fourier 变换形式相等。
滤波反投影:思路:)(),(121f F F x x f ⋅=-()()[][]ϕϕωωϕωϕωϕωωϕωϕωϕωωωϕωωϕωϕωωϕωϕωωωϕωωωππωωππωωππωωππωωπd r f F r d fF F d d e fF x x r d d e fF d d e f F d d e f d d e f F X r x x r r r r i r x x i r x x i rx x i x x i R Φ⋅=-Φ⋅=-∞+∞-⋅∞+∞-⋅∞+⋅∞+⋅*⇔=⋅⇔⇔Φ⋅=Φ=⇔⇔⇔⇔⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰⎰)(H ),(ˆfourier fourier ),()(H ),)(ˆ(]),)(ˆ([),),(),(),(),)(ˆ(),)(ˆ()(~)(1),(1202121),(),(20),(),(2200),(),(2200221),(),(222121212121212121212变化变化等于函数点乘后的个函数的卷积的并根据卷积的性质:两设旋转角为为坐标映射到探测器上,设为用极坐标方式表示出来(把,可知),(由于中心切片定理)(),(~),(r H r f r G *=ϕϕ)(r H 是滤波器总结:ϕϕϕωωϕωππωπd r H r fd def F X f X r X r r i r Φ⋅=Φ⋅=+∞∞-⎰⎰⎰=⎥⎦⎤⎢⎣⎡⋅=)(*),(ˆ),)(ˆ()(020 解释为:投影数据),(ˆϕr f 先进行滤波)(*),(ˆr H r f ϕ 在对滤波数据进行投影ϕϕπd r H r f X r Φ⋅=⎰)(*),(ˆ0简单例子:(大圆与小圆)通过已得到的正投影‘round.dat’经过滤波后,反投影后的图像。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《滤波反投影程序设计报告》课程名称:生物医学图像处理2院系:生物医学工程姓名:学号:完成日期:2017年4月23日一、设计目的用Matlab实现平行束滤波反投影算法,比较不同滤波函数的效果。
二、实验原理(一)图像重建模型——shepp Logan头模型是图像重建标准体模,由10个位置、大小、方向、密度各异的椭圆组成,代表一个脑部断层。
(二)重建理论推导中心切片定理是从投影图像重建图像的理论基础,表述为:某断层图像f(x,y)在视角为θ时得到的平行投影的一维傅里叶变换等于f(x,y)二维傅里叶变换F(w1,w2)过原点的一个垂直切片,且切片与轴w1相交成θ角。
如下图所示。
公式表述为:F (wcos θ,wsin θ)=P(w,θ) ① 将在ω1-ω2坐标系中表达的F (w 1,w 2)引入新的极坐标系ω−θ中,新坐标系与原坐标系原点重合,有w1=wcos θ,w2=wsin θ. 面元换算为dw1dw2=wdwd θ.有 f(x,y)= ∫∫F (wcosθ,wsinθ)e j2πw(xcosθ+ysinθ)wdwdθ∞02π0 =∫∫P(w,θ)e j2πw(xcosθ+ysinθ)wdwdθ∞02π0 =∫∫P(w,θ)e j2πw(xcosθ+ysinθ)wdwdθ∞0π0 +∫∫P(w,θ+π)e −j2πw(xcosθ+ysinθ)wdwdθ∞0π0 ② 注意到在θ与θ+π两个角度下的平行束射线投影的投影存在如下关系:p (t,θ)=p (−t,θ+π)其傅里叶变换存在如下关系:P(w,θ+π)=P(−w,θ)将上式代入②式,有 f(x,y)= ∫∫P (w,θ)|w|e j2πw(xcosθ+ysinθ)dwdθ∞−∞π0 ③ 令③式内积分等于g(xcos θ+ysin θ),则有g(xcos θ+ysin θ)=∫|w |P (w,θ)e j2πwt |+∞−∞t= xcosθ+ysinθdw实际上,g(xcos θ+ysin θ)就是投射角度为θ时的滤波投影,在t-s 坐标系中表达时,转化为g (t,θ)=h(t)*p(t,θ),h(t)是传递函数H (w )=|w|的傅里叶逆变换,p(t, θ)是P (w, θ)的傅里叶逆变换。
所以③式可写成f(x,y)= ∫g(x π0cosθ+ysinθ)d θ ④ 在图3.5中注意到Xr=rcos(θ−φ)=xcos θ+ysinθ是从原点出发的通过点(r,θ)的射线方程,④式可写为:f(x,y)= ∫g[rcos (θ−φ),φ]π0dφ ⑤ ④⑤两式表明:f(x,y)在(x,y )处的重建,等于通过该点的所有角度下滤波投影的累加所得到的像素值,而Xr=rcos(θ−φ)=xcos θ+ysinθ的变化代表了所有平行投影射线。
(三)Radon 变换一个无限薄的切片内相对线性衰减系数的分布是由它的所有线积分的集合唯一决定,揭示了函数和投影之间的关系,若函数为f(x,y),则不同角度下的投影可写为P(t,θ)=∬f (x,y )δ(xcosθ+ysinθ−t )dxdy +∞−∞ ⑥(四)滤波函数由于直接反投影法把取自有限空间的投影均匀回抹到了射线所及的无限空间的各个像素上,使得原来像素值为0的点不为0,从而产生星状伪迹,滤波反投影算法用人为设计的一维滤波函数对所得投影数据进行卷积,而后进行反投影和累加时,由于正负抵消,可一定程度上消除星状伪迹。
现在常用的滤波函数有R-L、S-L、Hanning、Hamming、Parzen、Sigwin窗函数,本次设计比较了R-L、S-L和Parzen 滤波函数的效果,发现Parzen滤波效果最好。
1.R-L滤波函数R-L滤波函数频率响应为:R-L滤波函数滤波计算简单,避免了大量的正弦、余弦计算,所重建图像轮廓清楚,空间分辨率高,但有Gibbs现象,表现为明显的振荡响应,特别是工件的边缘和衰减系数变化剧烈(即密度变化)时,尤为明显。
S-L滤波器对投影中的高频成分具有抑制作用,进而使重建图像的振荡响应减小,对含噪声的投影数据,重建质量较用RL的好,但在低频段不及R-l滤波函数好,这是由于H(w)在低频段也偏离了|w|的缘故3.Parzen滤波函数三、程序实现程序包含FBP_GUI.m和dps.m两个m文件,其中投影、滤波和反投影过程均为自己编写,没有使用Matlab自带函数,附录中对过程有详细注释,程序大致流程为:四、运行结果(1)sheep Logan256*256图像重建(2)自定义灰度图像重建(3)自定义RGB图像重建(滤波函数进行滤波处理。
五、总结本次程序设计完成了设计目的,投影和反投影过程没有使用自带函数,但是在处理像素比较大的图像时程运行时间比较长,是一个缺点,图像也存在一定误差,效果不是特别完美,不过也算是锻炼了自己的能力,对图像重建中对滤波反投影算法有了深刻的了解,增加了对这门课程的兴趣,期待在以后的学习中能进一步完善程序,缩短运行时间,减小图像误差。
六、附录——程序代码①dps.m文件代码如下:function [a]=dps(P)tic;%P=phantom(256);%P=imread('gray1.jpg');%P=rgb2gray(P);[N,N]=size(P);subplot(2,3,2);imshow(P);title([int2str(N),'*',int2str(N),'原始图像']);%先进行自定义radon变换------------------------------------------------------------thm=45; %45度时会出现最大尺寸pre = imrotate(P,thm);[mmax,nmax] = size(pre);s=1;%创建一个180*nmax的空白图片,用以存储投影后的线状图片Final = zeros(180/s,nmax);%这里180代表180角度,每个角度投影成为一条线t = 1;for theta = 1:s:179Protate = imrotate(P,theta); %对原图旋转一个角度,求和(线积分)Pf = sum(Protate,1);[mreal,nreal]=size(Pf); %计算实际尺寸%确定起始点if (nmax - nreal)/2-floor((nmax - nreal)/2) == 0From = floor((nmax - nreal)/2 + 1);%总点数为偶数时elseFrom = floor((nmax - nreal)/2) + 1;%总点数为奇数时end%确定结束点End = floor((nmax-nreal)/2) + nreal;%将一个角度Radon变换后的线状图存入结果图像的某一行Final(180/s-t,From:End) = Pf; %从最底下一行开始存起%上移一行t = t + 1;end%再逆时针旋转R=imrotate(Final,90);subplot(2,3,3);imshow(R,[]);title('自定义投影后图像');z=2*ceil(norm(size(P)-floor((size(P)-1)/2)-1))+3;% radon变换默认平移点数/角度e=floor((z-N)/2)+2;R1=R(e:(N+e-1),:);[mm,nn]=size(R1);subplot(2,3,4);imagesc(R1);title([int2str(mm),'*',int2str(nn),'正弦图']);colormap(gray);colorbar;%滤波函数构造------------------------------------------------------------g=1-N:N-1;% d=1;% R-L滤波函数% for i=1:2*N-1% if g(i)==0% h(i)=1/(4*(d^2));% else if mod(g(i),2)==0% h(i)=0;% else% h(i)=(-1)/(pi^2*d^2*(g(i)^2));% end% end% end%S-L滤波函数% d=1;% for i=1:2*N-1% h(i)=2/(pi^2*d^2*(1-4*g(i)^2));% end%Parzen滤波函数for i=1:2*N-1h(i)=(24*pi*g(i)*cos(pi*g(i))-96*sin(pi*g(i))-48*pi*g(i)*cos(pi*g(i)/2)+384*sin(pi*g(i)/2)-2*(pi^3)*(g(i)^3)-72*pi*g(i))/(4*(pi^5)*(g(i)^5));endh(N)=0.0435;%将投影与滤波函数卷积----------------------------------------------------G=zeros(N,180);for m=1:180for i=1:Nb=0;for n=1:Nb=b+h(N+n-i)*R1(n,m);G(i,m)=b;endendend%投影滤波后线性内插进行图像重建----------------------------------------------a=zeros(N); %重建图像初始化,每个像素点像素值为0ns=(N+1)/2;for m=1:180 %遍历每个投影角度r=pi/180; %将角度换为弧度for i=1:Nfor j=1:N %遍历原图的每一个像素点Xrm=(i-ns)*cos(m*r)+(j-ns)*sin(m*r)+ns-1; %坐标转换if Xrm<1n=1; %内插运算整数值t=abs(Xrm)-floor(abs(Xrm)); %内插运算小数值elsen=floor(Xrm);t=Xrm-floor(Xrm);endif n>N-1n=N-1;endc=(1-t)*G(n,m)+t*G(n+1,m); %内插后的滤波投影值a(N+1-j,i)=a(N+1-j,i)+c; %像素值的叠加endendend%将P、a的像素值变换到0-1之间P=double(P);P=P-min(min(P));kk=max(max(P));for i=1:Nfor j=1:NP(i,j)=P(i,j)/kk;endenda=double(a);a=a-min(min(a));kkk=max(max(a));for i=1:Nfor j=1:Na(i,j)=a(i,j)/kkk;endendsubplot(2,3,5);imshow(a,[]); %重建图形的显示title('滤波反投影重建图像');%重建图像质量评价--------------------------------------------------------%计算归一化均方距离判据d;ave=0;for x=1:Nfor y=1:Nave=ave+P(x,y);endendave=ave/(N*N);x1=0;x2=0;for x=1:Nfor y=1:Nx1=x1+(P(x,y)-a(x,y))^2;x2=x2+(P(x,y)-ave)^2;endendevaluate_d=sqrt(double(x1/x2));%计算归一化平均绝对距离判据r;x3=0;x4=0;for x=1:Nfor y=1:Nx3=x3+abs(P(x,y)-a(x,y));x4=x4+abs(P(x,y));endendevaluate_r=x3/x4;%计算最坏情况距离判据ens=floor(N/2)-1;g=zeros(ns);for x=1:nsfor y=1:nsT=(P(2*x,2*y)+P(2*x+1,2*y)+P(2*x,2*y+1)+P(2*x+1,2*y+1))/4;R=(a(2*x,2*y)+a(2*x+1,2*y)+a(2*x,2*y+1)+a(2*x+1,2*y+1))/4;g(x,y)=abs(T-R);endendevaluate_e=max(max(g));%结果文本显示------------------------------------------------------------o=ones(500,1000);subplot(2,3,6);imshow(o,[]);s_title=['图像重建精度判据如下:'];text(0,0,s_title,'Fontsize',14);s=num2str(toc);s_one=['run time = ' s ' s;'];text(0,100,s_one,'FontSize',10);s=num2str(evaluate_d);s_two=['归一化均方距离判据d=' s ';'];text(0,200,s_two,'Fontsize',10);s=num2str(evaluate_r);s_three=['归一化平均绝对距离判据r=' s ';'];text(0,300,s_three,'Fontsize',10);s=num2str(evaluate_e);s_four=['最坏情况距离判据e=' s ';'];text(0,400,s_four,'Fontsize',10);toc②FBP_GUI.m文件代码如下:function varargout = FBP_GUI(varargin)% FBP_GUI MATLAB code for FBP_GUI.fig% FBP_GUI, by itself, creates a new FBP_GUI or raises the existing% singleton*.%% H = FBP_GUI returns the handle to a new FBP_GUI or the handle to% the existing singleton*.%% FBP_GUI('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in FBP_GUI.M with the given input arguments. %% FBP_GUI('Property','Value',...) creates a new FBP_GUI or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before FBP_GUI_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to FBP_GUI_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help FBP_GUI% Last Modified by GUIDE v2.5 15-Apr-2017 14:24:03% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @FBP_GUI_OpeningFcn, ...'gui_OutputFcn', @FBP_GUI_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before FBP_GUI is made visible.function FBP_GUI_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to FBP_GUI (see VARARGIN)% Choose default command line output for FBP_GUIhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes FBP_GUI wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = FBP_GUI_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)I=phantom(256);[A]=dps(I);% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [fn,pn,fi]=uigetfile('*.*','选择图片');lujing=[pn fn];%得到待重建图像存储路径I=imread(lujing);[A]=dps(I);% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [fn,pn,fi]=uigetfile('*.*','选择图片');lujing=[pn fn];%得到待重建图像存储路径I=imread(lujing);I=rgb2gray(I);[A]=dps(I);% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close all。