1、-1-昆明理工大学信息工程与自动化学院学生实验报告( 20092010 学年 第 一 学期 )课程名称:医学成像系统与放射治疗装置 开课实验室: 3208 2008 年 12 月 24 日年级、专业、班 学号 姓名 成绩实验项目名称 CT图像重建 指导教师 刘利军教师评语教师签名:年 月 日一、实验目的与意义医学成像技术是生物医学工程专业的一门重要的专业课程,课程主要涉及 X光仪器,CT 仪器,MRI仪器和核医学仪器的工作原理及成像方法。其中 CT算法的出现又为后来数字化医学成像技术的发展提供了基础。该门课程为生物医学工程专业的专业基础课。CT技术是医学成像系统中的一种重要手段。它通过特定的算
2、法,利用计算机的高速运算功能,可以在短时间内快速呈现人体断层图像。让学生练习 CT图像的重建有助于学生理解 CT算法的内容,熟悉数字图像重建的过程。同时也能培养学生的团队精神和解决实际问题的能力。二、实验算法原理1、MATLAB 处理数字图像的基本函数;2、X-CT 三维图像重建的基本算法。CT图象重建有四种基本的算法:矩阵法,迭代法,傅立叶算法,反投影算法.我们采用的方法为卷积反投影. 卷积反投影有:平行光束投影的卷积反投影算法, 等角扇形光来投影的重建算法 .1).平行光束投影的卷积反投影算法从投影重建三维物体的图像,就是重建一个个横断面。这样三堆图像的重建就归结为二维图象的重建。二维图像
3、的重建问题可以从数学上描述如下。假定 表示一个二维的未知函数,通过 的直线称为光钱(见图21)。沿光线),(yxg ),yxg的积分称作光线积分。沿相同方向的一组光线积分,就构成一个投影。图21中垂直于直线,(与X轴夹角为 )的光线所形成。C-2-图2.1 在 方向的投影),(yxg)(tP的投影 ,称之为 在 方向的投影。光线积分和投影在数学上可以定义如下:)(tP),(yxg在图2.1中直线AB的方程为:(2.1)1sincotYX其中 是AB到原点的距离, 沿AB的积分为:1t ),(yxg(2.2)dxytyxdstPAB )sinco(),)( 11 对于给定的 , 在 方向的投影
4、是t的函数。如果 在各个方向的投影已知,,yxgP,(g就可以唯一确定。下面就讨论卷积反投影重建算法。),(yxg假定投影方向 ,如图2.2 ,将坐标 旋转 角(逆时针方向)形成坐标系 。 在),(yx ),(st),(yxg坐标系中为 。),(st),(stg-3-图2.2 傅立叶切片定理示意图坐标系 与 之间的关系为:),(st,yx(2.3)xcosin显然(2.4)dtgtP),(令 为 的傅立叶变换则)(wSttwjt)2exp()((2.5)dssg,将上式变换到 坐标系中,注意到变换的可比行列式),(yx(2.6)1cosinystx从而得到:dxyyxjgwS )sin(2ep
5、),()( (2.7)vuyx)其中(2.8)sincovu-4-若令 的傅立叶变换为 ,由(2.8)可知),(yxg),(vuG(2.9),)(S若 的傅立叶变换为 的极坐标表示。这说明 在 方向的投影),(yx),v),(yxg)(tP傅立叶变换 等于 在与u轴成 角的直线上的值。 这就是著名的傅立叶投影切片定理。可见(w(在整个 平面 可以利用各个方向的投影来得到,从而 也可以通过求 的傅立),vu),vG),(yx),(vuG叶反交换的办法求得:(2.10)duvyxjvuyxg)(2ep),(),( 变换到极坐标中, sincovu得到(2.11) dyxjGyxg )sinco(2
6、ep),(),(20 经推导得(2.12)0 )()(),( dtjS其中sincoyxt若令(2.13) dtjStQ)2exp()()(则(2.14)0)sinco(),(yyxg(2.13)式右端是两频谱函数 和 的乘积的傅立叶反变换。 是投影wS(H)(wS)(tP傅立叶变换。若 的傅立叶反变换为 ,则根据卷积定理有:)(H)th(2.15)dPtQ()或)(tht其中(2.16)dtjth)2exp()(当图像的频谱是有限带宽时,则上式变为-5-(2.17)dtjth)2exp()(0由于图象及其频谱都是离散采样的, 假定图象采样间隔为 , 则根据采样定理 。为了进行2/10数学处理
7、,只需知道h (t)在有限带宽上的离散采样点的值这样我们有(2.18)22/10)4/()(nh其中n为正负整数。(2.18)的离散形式为(2.19)mnhPnQ )()(假定 在 之外的值为0,则上式变为)(P1,0N(2.20)0)()(mnhn或(2.21)1)( )()(NmPQ其中 从而可见为确定 的N个采样点上的 的值,需要使用 的,210nt )(nQ)(nh2N 1个点上的值,从n=一(N 1)到(N 1)。为求得 ,利用傅立叶变换计算卷积是比较快的方法,为清除循环卷积的周期交叠效应,实)(际上 取2N个点, 补0,使之有(2N1)个元素,则 在N个采样点上就避免了交叠,如nh
8、)(mP)(tP果使用以2为基的FFT(快速傅立叶变换)算法, 和 都必需朴0至(2N一1)个元素,(2N一1)(mnh为大于等于2Nl的最小的2的整数幂。计算 的过程可以写为Q(2.22))(0)()( FTnPFTnQ其中FFT和IFFT分别表示快速傅立叶变换和反变换, 光滑窗是在滤波过程中加入的光滑因子,例如引用汉明窗 ,有时可以改进重建效果。对于各个 方向的投影, 得到 之后就可以由(2.22)来计算)(nQ。重建步骤可以归纳为:),(yxg第一步:卷积,也称滤波,由(222)对每个 方向计算 。)(第二步。反投影,由(214)的近似形式 Mi iiiyxQyxg1)snco(),((
9、2.23)-6-来计算 的近似值 。M为投影个数 为投影方向角,他们均匀的分布在 0 的范围内。),(yxg),(yxgi当计算 时, ,不一定在 的整离散点上,这就需要插sincoiQi iiytsnco)(nQ值求得,预先将 插值加密,即最靠近的点,可以提高计算速度。)(2).等角扇形光来投影的重建算法几乎所有的快遗CT设备都是用的扇形光束。这里叙述的是等角度光束投影,如图2.3,测量投影数据的探测器等间距地分布在 弧上,弧的半径为2D, D为光源到图像中心的距离。在下文中,1D2图象在极坐标中的表示。 表示在方向角为 的投影中位量角为 的光线产生的投影数据。),(rf )(R通过中心的光
10、线其 为0。L表示从光源到像素 的距离。),(r图2.3 等扇形束投影重建算法中的变量(2.24))sin(2),( DrL表示在方向角为 的投影中通过像素 的光线的位置角,r(2.25))sin(cotata),(11 ESP图像 和扇形投影 有下述关系,rf )(R(2.26) dhrDLf )()sin(21cos1),( 20 其中 和 是投影中光线的最大位置角,从而可以得到这种重建算法的执行步骤:r-7-第一步:投影的修改,假定投影的抽样间隔为 ,抽样数据 通过下式进行修改,)(nR(2.27)nDRncos)()(1第二步:卷积(滤波)将第一步修改了的投影与响应函数 进行卷积)(g
11、(2.28))(sin(2)2 hg(2.29) dmgRQ其离散形式为:(2.30) )()(1 nnMm这里也和上节一样可以加进一光滑窗,改进重建效应。第三步:反投影,就是执行(2.30)的积分(2.31)dQLrf )(,(),(20近似的有:(2.32))(,(1),(2myxfMi其 是图象 的近似图像, , , M是投影数,假定投影均匀地分布,f,f cosrxsinry在0 内。为求得滤波后的投影 ,对象素 的贡献,首先由(2.24)和(2.25)计算出2Q),(和 所有 对 的贡献加起来再乘以 就得 。L),(yx/2),(yxf四、实验程序代码原图象代码:p=phantom(
12、256);imshow(p)卷积反投影法代码:H=0 0 0.92 0.69 90*pi/180 1;. 0 -0.0184 0.874 0.6624 90*pi/180 -0.98;. 0.22 0 0.31 0.11 72*pi/180 -0.2;. -0.22 0 0.41 0.16 108*pi/180 -0.2;. 0 0.35 0.25 0.21 90*pi/180 0.1;. 0 0.1 0.046 0.046 0 0.2;. 0 -0.1 0.046 0.046 0 0.2;. -0.08 -0.605 0.046 0.023 0 0.1;. 0 -0.605 0.023 0.
13、023 0 0.1;. 0.06 -0.605 0.046 0.023 90*pi/180 0.1; -8-angle=1; N=100; vstep=2/N; ax=N/2+1; for k=1:(180/angle+1) theta=(k-1)*angle*pi/180; for i=1:10 x0=H(i,1);y0=H(i,2);A=H(i,3);B=H(i,4);alpha=H(i,5);rho=H(i,6); R=0; forw=ax; back=ax; MM=sqrt(A2*cos(theta-alpha)2+B2*sin(theta-alpha)2-(R-x0*cos(thet
14、a)-y0*sin(theta)2); NN=A2*cos(theta-alpha)2+B2*sin(theta-alpha)2; g(i,ax)=rho*2*A*B*MM/NN; for j=1:N/2 R=R+vstep; forw=forw+1; MM=sqrt(A2*cos(theta-alpha)2+B2*sin(theta-alpha)2-(R-x0*cos(theta)-y0*sin(theta)2); NN=A2*cos(theta-alpha)2+B2*sin(theta-alpha)2; g(i,forw)=rho*2*A*B*MM/NN; R=-R; back=back-
15、1; MM=sqrt(A2*cos(theta-alpha)2+B2*sin(theta-alpha)2-(R-x0*cos(theta)-y0*sin(theta)2); NN=A2*cos(theta-alpha)2+B2*sin(theta-alpha)2; g(i,back)=rho*2*A*B*MM/NN; R=-R; end end radon0(k,:)=real(sum(g); end %generate R-L function% radon1=zeros(k,N),radon0; ax=N+1; RL(ax)=1/(4*vstep2); forw=ax+1; back=ax
16、-1; for k=1:N/2 n=2*k-1; RL(forw)=-1/(n*pi*vstep)2; RL(back)=RL(forw); RL(forw+1)=0; RL(back-1)=0; forw=forw+2; back=back-2; end for k=1:(180/angle+1) -9-radon2(k,:)=conv(radon1(k,:),RL); end radonf=radon2(:,2*N:3*N); %generate S-L function% radon1=zeros(k,N),radon0; for v=1:(2*N+1) n=v-N-1; SL(v)=-
17、2/(pi2*vstep2*(4*n2-1); end for k=1:(180/angle+1) radon2(k,:)=conv(radon1(k,:),SL); end radonf=radon2(:,2*N:3*N); figure(1) subplot(321) plot(1:(2*N+1),radon1(1,:) title(投影函数(已补零)) subplot(323) plot(1:(2*N+1),SL) title(S-L卷积函数) subplot(325) plot(1:(4*N+1),radon2(1,:) title(卷积结果) Xradon1=fft(radon1(1
18、,:); subplot(322) plot(1:(2*N+1),abs(Xradon1) title(频谱) XRL=fft(SL); subplot(324) plot(1:(2*N+1),abs(XRL) Xradon2=fft(radon2(1,:); subplot(326) plot(1:(4*N+1),abs(Xradon2) %iradon% for k=1:(180/angle+1) theta=(k-1)*angle*pi/180; C=N/2-(N-1)*(cos(theta)+sin(theta)/2; for i=1:N R=(i-1)*cos(theta)+C; n0=floor(R); if n00 I(i,j,k)=(1-dot)*radonf(k,n0)+dot*radonf(k,n0+1); else I(i,j,k)=nan; end end end end Ifinal=sum(I,3); Gfinal=mat2gray(Ifinal); Gfinal=imrotate(Gfinal,90); figure(2) imshow(Gfinal)五、实验结果与分析反投影一般步骤为:原像取投影反投影重建重建后图像程序流程: