对滤波反投影重建算法的研究以phantom图进行matlab仿真,构建滤波器,重建图像

1.算法描述

CT重建算法大致分为解析重建算法和迭代重建算法,随着CT技术的发展,重建算法也变得多种多样,各有各的有特点。本文使用目前应用最广泛的重建算法——滤波反投影算法(FBP)作为模型的基础算法。FBP算法是在傅立叶变换理论基础之上的一种空域处理技术。它的特点是在反投影前将每一个采集投影角度下的投影进行卷积处理,从而改善点扩散函数引起的形状伪影,重建的图像质量较好。


上图应可以清晰的描述傅立叶中心切片定理的过程:对投影的一维傅立叶变换等效于对原图像进行二维的傅立叶变换。傅立叶切片定理的意义在于,通过投影上执行傅立叶变换,可以从每个投影中得到二维傅立叶变换。从而投影图像重建的问题,可以按以下方法进行求解:采集不同时间下足够多的投影(一般为180次采集),求解各个投影的一维傅立叶变换,将上述切片汇集成图像的二维傅立叶变换,再利用傅立叶反变换求得重建图像。


投影重建的过程是,先把投影由线阵探测器上获得的投影数据进行一次一维傅立叶变换,再与滤波器函数进行卷积运算,得到各个方向卷积滤波后的投影数据;然后把它们沿各个方向进行反投影,即按其原路径平均分配到每一矩阵单元上,进行重叠后得到每一矩阵单元的CT值;再经过适当处理后得到被扫描物体的断层图像

算法步骤如下:

1. 将原始投影进行一次一维傅立叶变换

2. 设计合适的滤波器,在φ_i的角度下将得到原始投影p(x_r,φ_i)进行卷积滤波,得到滤波后的投影。

3. 将滤波后的投影进行反投影,得到满足x_r=r cos⁡((θ - φ_i))方向上的原图像的密度。

4. 将所有反投影进行叠加,得到重建后的投影。


2.仿真效果预览

matlab2013B仿真结果如下:


3.MATLAB部分代码预览

coordinateSource=[];

projMatrix=[];

detector=[];

proj=load(char('projection.mat'));

phyRatoDig=proj.phyRatoDig;

projMatrix=proj.projection;

yDetector=proj.yDetector;

nDetectors=proj.nDetectors;


figure(2)

showimge(projMatrix,360,512,0,max(max(projMatrix)));



D_dig=proj.focalDistance_dig;

sourceToDetector_dig=proj.focalDistance_dig+proj.detecDistance_dig;

s=[];

s=D_dig/sourceToDetector_dig*yDetector(1,:)*phyRatoDig;

Detector=yDetector(1,:)*phyRatoDig;

%

pe=[];

M=D_dig./sqrt(D_dig.^2+s.^2);

nViews=proj.nViews;

%

for i=1:nViews

pe(i,:)=projMatrix(i,:).*M;


end

figure(3);

showimge(pe,360,512,0,max(max(pe)));




disp('Filtering')

filternum=128;

filter_ramp=zeros(filternum,1);

for j=1:filternum   % 16 point ramp filter

i=j-1-filternum/2;

if(i==0)

filter_ramp(j,1)=1/(8.0);

elseif (mod(i,2)==0)

filter_ramp(j,1)=0;

elseif (mod(i,2)==1)

filter_ramp(j,1)=-0.5/(i*i*pi*pi);

end

end

m=1;

figure(4);


plot(filter_ramp);



pfilter=[];

length_conv=filternum+nDetectors-1;

pPro=zeros(length_conv,1);

temp_pro=zeros(nDetectors,1);

h_filter=filternum/2;

ii=length_conv-h_filter-nDetectors;

for s=1:nViews % sample-loop

% for  pp=1:h_filter

pro_left =(pe(s,1)+pe(s,2))/2.0;

pro_right=(pe(s,nDetectors)+pe(s,nDetectors-1))/2.0;


for pp=1:h_filter;               %left part

pPro(pp,1)=pro_left;        

end

%    

for pp=1:nDetectors                      %middle part

pPro(h_filter+pp,1)=pe(s,pp);

end

%    

for pp=h_filter+nDetectors+1:length_conv

pPro(pp)=pro_right;

end

%   result_conv    

for n=1:nDetectors

result_conv=0;

    for jj=1:filternum

pPmove=pPro(n+jj-1,1);

result_conv=result_conv+pPmove*filter_ramp(jj,1);

end

pfilter(s,n)=result_conv;

end



end

figure(5);

showimge(pfilter,360,512,min(min(pfilter)),max(max(pfilter)));


% %%%%%%%%%%%%%%%%%%%%%%reArrange%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %%%%%%%%%%%%%%%%%%%%%%Back projection%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

disp('BackProjection')

detecLength=proj.detecLength;

unitDis=detecLength/(nDetectors-1);

unitDis_dig=unitDis*phyRatoDig;

deltaBeta=2*pi/nViews;

M=proj.M;

N=proj.N;

fReconstruct=[];

for i=1:M

x=i-(M+1)/2;

for j=1:N

y=(N+1)/2-j;

r=sqrt(x^2+y^2);

theta=atan2(y,x);

%     

result=0;

for s=1:nViews

beta= (s-1)*deltaBeta;

s1=D_dig*r*cos(beta-theta)/(D_dig+r*sin(beta-theta));

U=(D_dig+r*sin(beta-theta))/D_dig;

p1=sourceToDetector_dig/D_dig*s1;

if(p1>Detector(1,1)&&p1<Detector(1,512))

num=(p1-Detector(1,1)+unitDis_dig)/unitDis_dig;        

numlow=floor(num);

result=result+((num-numlow)*pfilter(s,numlow)+(1-num+numlow)*pfilter(s,numlow+1))/U/U*deltaBeta;

end

end

fReconstruct(i,j)=result;

if( fReconstruct(i,j)<0)

fReconstruct(i,j)=0;

end


end

end

%

figure(6)

%

final=zeros(M,N);

for i=1:M

final(i,:)=fReconstruct(:,257-i);

end

A_022

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,000评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,745评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,561评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,782评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,798评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,394评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,952评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,852评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,409评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,483评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,615评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,303评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,979评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,470评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,571评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,041评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,630评论 2 359

推荐阅读更多精彩内容