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变换的三维建模仿真相关推荐

  1. ct系统与matlab成像,基于MATLAB的CT系统参数标定及成像研究

    92|电子制作2017年12月 实验研究 CT(Computed Tomography),即电子计算机断层扫描, 它是利用精确准直的X射线.超声波等,与灵敏度极高的 探测器一同围绕人体的某一部位作一个 ...

  2. matlab的多变量dmc源程序,基于MATLAB多变量DMC算法的仿真技术研究

    基于MATLAB多变量DMC算法的仿真技术研究 基于MATLAB多变量DMC算法的仿真技术研究 作者:李凤霞 于佐军 来源:<科技创新导报>2011年第17期 摘 要:利用MATLAB开发 ...

  3. 基于matlab和FFT算法实现信号频谱分析

    系列文章目录 数字信号处理(DSP:Digital Signal Process)是电子通信领域非常重要的研究方向,博主汇总了数字信号处理(DSP)中常用的经典案例分析,主要基于算法分析.MATLAB ...

  4. 基于MATLAB的数字水印算法研究实现

    基于MATLAB的数字水印算法研究实现 一.课题背景 随着图像.音频.视频等多媒体信息以及Internet的迅速发展,多媒体信息在互联 网上的广泛传播变得及其便利,数据的交换和传输过程变得相对简单.多 ...

  5. ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  6. 基于MATLAB的Dijkstra算法实现及案例分析

    摘要:为研究两地点之间距离(或耗时)最短路线规划,采用MATLAB编程的方法来实现,并利用Floyd算法记录距离(或耗时)最短路线.在不考虑各种影响因素的情况下,以随机小样本数据为例进行演示,求得由起 ...

  7. matlab切割肿瘤算法,ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性...

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  8. 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...

  9. 基于matlab的数字图像边缘检测算法研究,基于MATLAB数字图像边缘检测算法的研究与对比分析...

    ·161· 居 舍 研究探讨 2017年10月(中) 1 绪论 图像边缘中通常包含着重要的边界信息,这些边界信息便于分析和研究图像.另外,边缘检测可以大大降低图像处 理的工作量,将提高图像分析的效率. ...

  10. matlab 电化学程序,基于MATLAB的电化学滴定曲线导数变换的实现

    冶金分析 ,2010 ,30(10) :1619Metallurgical Analysis ,2010 ,30(10) :16219文章编号 :1000 - 7571(2010) 10 - 0016 ...

最新文章

  1. python数据分析面试_python数据分析面试
  2. 对计算机科学技术的看法
  3. 如何检查变量是否是JavaScript中的数组? [重复]
  4. Ubuntu 安装VMware Tools 报Read-only file system问题解决
  5. iOS开发:Objective-C优雅的语法
  6. mysql中的函数有哪些?(2.控制流函数)
  7. java 同步的方法_关于Java中的同步方法
  8. 09-排序1 排序 (25 分)
  9. inotify用法简介及结合rsync实现主机间的文件实时同步
  10. JAVA中PO,BO,VO,DTO,POJO,Entity
  11. python提取数据库nosql_用 Python 写一个 NoSQL 数据库
  12. rhel-server-7.2-x86_64无法联网(VMware环境)
  13. 胡学纲数据结构c语言PDF,数据结构精品课程参考书目
  14. CSS Hack(兼容ie8一下的浏览器)
  15. C++练习 简易翻译器
  16. 云服务器初始化失败怎么办,提示交互式登录进程初始化失败是什么原因?解决方法步骤教程...
  17. yarn : 无法加载文件 D:\nodejs\node_global\yarn.ps1,因为在此系统上禁止运行脚本。
  18. 网络报表学习体会心得!
  19. 我的世界服务器货币充值系统,《我的世界》中国版正式开启了充值功能
  20. TypeError: __init__() takes exactly 2 arguments (3 given)

热门文章

  1. MyEclipse + Maven开发Web工程的详细配置过程
  2. sqlite创建表联合主键的sql写法、执行sql文件、不支持右连接、获取年份、case when 的使用
  3. Python 列表和元组
  4. C# List 嵌套学习总结
  5. PE文件到内存的映射学习总结
  6. boost使用学习总结
  7. SQLAlchemy_定义(一对一/一对多/多对多)关系
  8. 单源最短路——dijkstra算法
  9. Nginx负载均衡监控节点状态
  10. 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验