【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真
1.軟件版本
MATLAB2021a
2.本算法理論知識
1.輸入:T(x,y,z)
使用stl讀取函數完成T的導入工作
2.做Radon變換,得投影圖:P
正常Radon變換即可。
3.對P:應用斜坡濾波器,截斷負數 p+(i)
?
該式為打印成型原理,核心是CT算法,I為閾值函數,α吸光率,Ω旋轉速率,Dc為成型閾值,暫不考慮這些參數。f(r,z)即是模型的幾何形狀。
則對于一個橫截面z,有:
有 f(r)= [g](r),? f(r)即截面圖形狀,是指數型反向radon變換,[g](r)是光線投影的線積分(即檢測到的投影強度)。
現在我們的算法是逆過來的,即已知模型幾何形狀f(r),去求所需的投影強度g的過程,由下式給出:
此式為傅里葉中心切片定理,F-1為傅里葉逆變換,其中
為f()函數的二維傅里葉變換。
,是一斜坡濾波器,同時去除頻域中頻率k在閾值α以下的部分。
由投影強度圖g(r,z),通過反向radon變換(即反向投影)可以得到幾何圖形。由于這一理論值存在負數,實際的投影強度卻只能為正,這里采用Otsu()方法迭代優化:
算法的優化部分見補充材料S12,S13,
具體的流程圖(見補充材料figure.s6)如下:
1.對輸入的截面信息做radon變換
2.濾波+截斷(傅里葉頻域)
3.反radon變換
4.迭代優化Otsu()部分
5.輸出投影所用圖像
3.核心代碼
clc; clear close all; warning off; addpath 'func\'%DLP theta = 1;%設置1~180之間load R3.mat%這里,根據各截面投影圖;然后反投影得到物體幾何結構,非常消耗內存,我這里進行間隔抽樣,降低計算機資源消耗 %如果電腦配置高,則直接設置1即可 Skip = 2;V=ones(512/Skip,512/Skip,520/Skip);idx=0; for k = 1:Skip:520idx=idx+1;tmps = imresize(Pnew{k},1/Skip);[X,Y]= find(tmps==0);for j = 1:length(X)v(X(j),Y(j),idx) = NaN;end end[x,y,z]=meshgrid(1:Skip:512,1:Skip:512,520:-Skip:1); figure; slice(x,y,z,v,[1:Skip:512],[1:Skip:512],[520:-Skip:1]) shading interp colorbar set(gca,'zdir','reverse'); grid on box on colormap(bone); axis equal view([135,15]); camlight('infinite');for i = SETSE = P0{i};F = P{i};for j = 1:length(E(:,theta))E2(521-i,j)= [E(end+1-j,theta)];F2(521-i,j)= [F(end+1-j,theta)]; end endC=[2,1000]; figure; subplot(121) imagesc(E2,C);title('E'); colormap('hot');subplot(122) imagesc(F2,C);title('F'); colormap('hot'); function level=func_ostu(I); I = im2uint8(I(:)); num_bins = 256; counts = imhist(I,num_bins); num_bins = numel(counts); counts = double( counts(:) ); p = counts / sum(counts); omega = cumsum(p); mu = cumsum(p .* (1:num_bins)'); mu_t = mu(end);sigma_b_squared = (mu_t * omega - mu).^2 ./ (omega .* (1 - omega));maxval = max(sigma_b_squared); isfinite_maxval = isfinite(maxval);if isfinite_maxvalidx = mean(find(sigma_b_squared == maxval));level = (idx - 1) / (num_bins - 1); elselevel = 0; endend4.操作步驟與仿真結論
?
?
5.參考文獻
?
A19-26
6.完整源碼獲得方式
方式1:微信或者QQ聯系博主
方式2:訂閱MATLAB/FPGA教程,免費獲得教程案例以及任意2份完整源碼
總結
以上是生活随笔為你收集整理的【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ASIC设计】ASIC设计流程
- 下一篇: 【MASHIII调制器】MASHIII调