對濾波反投影重建算法的研究以phantom圖進行matlab仿真,構建濾波器税稼,重建圖像

1.算法描述

CT重建算法大致分為解析重建算法和迭代重建算法烦秩,隨著CT技術的發(fā)展,重建算法也變得多種多樣郎仆,各有各的有特點只祠。本文使用目前應用最廣泛的重建算法——濾波反投影算法(FBP)作為模型的基礎算法。FBP算法是在傅立葉變換理論基礎之上的一種空域處理技術扰肌。它的特點是在反投影前將每一個采集投影角度下的投影進行卷積處理抛寝,從而改善點擴散函數(shù)引起的形狀偽影,重建的圖像質量較好曙旭。


上圖應可以清晰的描述傅立葉中心切片定理的過程:對投影的一維傅立葉變換等效于對原圖像進行二維的傅立葉變換盗舰。傅立葉切片定理的意義在于,通過投影上執(zhí)行傅立葉變換桂躏,可以從每個投影中得到二維傅立葉變換钻趋。從而投影圖像重建的問題,可以按以下方法進行求解:采集不同時間下足夠多的投影(一般為180次采集)剂习,求解各個投影的一維傅立葉變換蛮位,將上述切片匯集成圖像的二維傅立葉變換,再利用傅立葉反變換求得重建圖像鳞绕。


投影重建的過程是失仁,先把投影由線陣探測器上獲得的投影數(shù)據(jù)進行一次一維傅立葉變換,再與濾波器函數(shù)進行卷積運算们何,得到各個方向卷積濾波后的投影數(shù)據(jù)萄焦;然后把它們沿各個方向進行反投影,即按其原路徑平均分配到每一矩陣單元上冤竹,進行重疊后得到每一矩陣單元的CT值拂封;再經(jīng)過適當處理后得到被掃描物體的斷層圖像

算法步驟如下:

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末档悠,一起剝皮案震驚了整個濱河市廊鸥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辖所,老刑警劉巖惰说,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缘回,居然都是意外死亡吆视,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門酥宴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啦吧,“玉大人,你說我怎么就攤上這事拙寡∈谧遥” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵肆糕,是天一觀的道長般堆。 經(jīng)常有香客問我,道長诚啃,這世上最難降的妖魔是什么淮摔? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮始赎,結果婚禮上噩咪,老公的妹妹穿的比我還像新娘。我一直安慰自己极阅,他們只是感情好胃碾,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筋搏,像睡著了一般仆百。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奔脐,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天俄周,我揣著相機與錄音,去河邊找鬼髓迎。 笑死峦朗,一個胖子當著我的面吹牛,可吹牛的內容都是我干的排龄。 我是一名探鬼主播波势,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尺铣?” 一聲冷哼從身側響起拴曲,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凛忿,沒想到半個月后澈灼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡店溢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年叁熔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片床牧。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡者疤,死狀恐怖,靈堂內的尸體忽然破棺而出叠赦,到底是詐尸還是另有隱情驹马,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布除秀,位于F島的核電站糯累,受9級特大地震影響,放射性物質發(fā)生泄漏册踩。R本人自食惡果不足惜泳姐,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暂吉。 院中可真熱鬧胖秒,春花似錦、人聲如沸慕的。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肮街。三九已至风题,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫉父,已是汗流浹背沛硅。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绕辖,地道東北人摇肌。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像仪际,于是被迫代替她去往敵國和親围小。 傳聞我的和親對象是個殘疾皇子昵骤,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容