【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;
endend
4.操作步骤与仿真结论
5.参考文献
A19-26
6.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真相关推荐
- ct系统与matlab成像,基于MATLAB的CT系统参数标定及成像研究
92|电子制作2017年12月 实验研究 CT(Computed Tomography),即电子计算机断层扫描, 它是利用精确准直的X射线.超声波等,与灵敏度极高的 探测器一同围绕人体的某一部位作一个 ...
- matlab的多变量dmc源程序,基于MATLAB多变量DMC算法的仿真技术研究
基于MATLAB多变量DMC算法的仿真技术研究 基于MATLAB多变量DMC算法的仿真技术研究 作者:李凤霞 于佐军 来源:<科技创新导报>2011年第17期 摘 要:利用MATLAB开发 ...
- 基于matlab和FFT算法实现信号频谱分析
系列文章目录 数字信号处理(DSP:Digital Signal Process)是电子通信领域非常重要的研究方向,博主汇总了数字信号处理(DSP)中常用的经典案例分析,主要基于算法分析.MATLAB ...
- 基于MATLAB的数字水印算法研究实现
基于MATLAB的数字水印算法研究实现 一.课题背景 随着图像.音频.视频等多媒体信息以及Internet的迅速发展,多媒体信息在互联 网上的广泛传播变得及其便利,数据的交换和传输过程变得相对简单.多 ...
- ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性
ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...
- 基于MATLAB的Dijkstra算法实现及案例分析
摘要:为研究两地点之间距离(或耗时)最短路线规划,采用MATLAB编程的方法来实现,并利用Floyd算法记录距离(或耗时)最短路线.在不考虑各种影响因素的情况下,以随机小样本数据为例进行演示,求得由起 ...
- matlab切割肿瘤算法,ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性...
ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...
- 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...
- 基于matlab的数字图像边缘检测算法研究,基于MATLAB数字图像边缘检测算法的研究与对比分析...
·161· 居 舍 研究探讨 2017年10月(中) 1 绪论 图像边缘中通常包含着重要的边界信息,这些边界信息便于分析和研究图像.另外,边缘检测可以大大降低图像处 理的工作量,将提高图像分析的效率. ...
- matlab 电化学程序,基于MATLAB的电化学滴定曲线导数变换的实现
冶金分析 ,2010 ,30(10) :1619Metallurgical Analysis ,2010 ,30(10) :16219文章编号 :1000 - 7571(2010) 10 - 0016 ...
最新文章
- python数据分析面试_python数据分析面试
- 对计算机科学技术的看法
- 如何检查变量是否是JavaScript中的数组? [重复]
- Ubuntu 安装VMware Tools 报Read-only file system问题解决
- iOS开发:Objective-C优雅的语法
- mysql中的函数有哪些?(2.控制流函数)
- java 同步的方法_关于Java中的同步方法
- 09-排序1 排序 (25 分)
- inotify用法简介及结合rsync实现主机间的文件实时同步
- JAVA中PO,BO,VO,DTO,POJO,Entity
- python提取数据库nosql_用 Python 写一个 NoSQL 数据库
- rhel-server-7.2-x86_64无法联网(VMware环境)
- 胡学纲数据结构c语言PDF,数据结构精品课程参考书目
- CSS Hack(兼容ie8一下的浏览器)
- C++练习 简易翻译器
- 云服务器初始化失败怎么办,提示交互式登录进程初始化失败是什么原因?解决方法步骤教程...
- yarn : 无法加载文件 D:\nodejs\node_global\yarn.ps1,因为在此系统上禁止运行脚本。
- 网络报表学习体会心得!
- 我的世界服务器货币充值系统,《我的世界》中国版正式开启了充值功能
- TypeError: __init__() takes exactly 2 arguments (3 given)