在医学图像分析中使用ICP算法进行点云配准
moboyou 2025-05-11 17:31 34 浏览
作者:天啦噜
来源:公众号@3D视觉工坊
论文标题:3D Registration of the Point Cloud Data Using ICP Algorithm in Medical Image Analysis
论文地址:在公众号「3D视觉工坊」,后台回复「点云配准」,即可直接下载。
1.摘要
在本文中,我们结合了ICP算法(一种基于3D尺度不变特征变换的方法),对3D自由形式闭合的曲面(人类头骨的3D模型)进行配准。不同于点和表面的配准,我们提出的基于ICP算法的方法可以更好地捕获数据的整体性质,例如骨骼厚度。文中提出的ICP算法主要分为3个步骤:3D特征提取、欧氏距离的整体一致性比对以及ICP增强。整个系统的输入是生物医学数据(CT,MRI)。我们提出的方法首先进行图像分割,然后对人类的头骨进行三维重建。此外,点云的3D 模型也被创建。最后,3D模型点云之间的差异也是可视化的。我们对比了3中不同的算法,包括它们的精度以及鲁棒性。和传统医学图像领域中的重建和配准算法相比,文中提出的方法更快、精度更高。我们将算法应用于研究颅骨畸形,骷髅模型的实验证明了这种方法的有效性和鲁棒性。
2.背景知识
配准是解决计算机视觉以及计算机图形学中各种问题的关键。总体目标是找到两个对象之间或者同一对象的几个实例之间的最佳对齐方式,以便把形状数据引入到同一参考系统下。为了解决3D配准问题(位姿估计,对齐和运动估)计),我们决定使用一种著名的方法来配准2个点集(在2D或3D中),是由Bssl和Mskay提出的迭代最近邻算法(ICP)。它一直以来都被用于计算机视觉的诸多实际应用中,比如3D扫描,3D映射以及3D定位中。因为其概念上的简单性及其在实践中表现的优越性 ,ICP是最受欢迎的配准算法之一,
3.本文的工作
3.1 3D特征检测
SIFT算法对于局部失真和特征检测中的错误很鲁棒,被认为是当前可用的最有效的描述子。对于每个识别到的特征,都会创建局部标记。SIFT 3D描述符的特点是以检出的特征点为中心选16x16x16的区域作为local patch,这个区域又可以均分为4x4x4个子区域,每个子区域中各个像素的梯度都可以分到8个bin里面,这样就得到了4x4x4x8=512维的特征向量。3D SIFT结构的示例如图1所示。
图1.3D SIFT描述子的构造
3D SIFT描述子覆盖了16x16x16的体素区域(该区域分为4×4×4个子区域)。
3.2 多模型配准
多模型配准的目标是对齐在多种视野中的同一个目标,该目标可能来源于不同类型的图像采集系统。在我们的实验中,采用3D SIFT描述子的迭代最近邻算法ICP将被用来配准输入的医学图像数据。
1)ICP配准
ICP是一种3D几何模型对齐的方法,被广泛用于配准3D扫描的输出。本文的基本思路是通过重定义以下步骤改善这种方法和最小化误差:
- 减少每个点云上的点数(增加处理速度);
- 确定对应点对(计算最近的点)
- 最小化点对之间的距离;
- 计算点集之间的均方差;
图2.ICP算法配准模型的框图结构
首先,ICP算法是基于寻找点集之间的最近点对;其次,创建一个优化的刚体变换来对齐两组数据;最后,将变换应用于实际场景的数据点中。重复该过程,直到收敛。
ICP输入:两个n维的点集
- 模型设置:
- 数据设置:
ICP输出:
- 将D映射到M的旋转矩阵R和平移矩阵t
- 当成一个优化问题解决=> 最小化映射矩阵E中的误差
在ICP处理过程中,搜索半径会影响到计算时间,每次迭代都会使用特定的搜索半径。最佳搜索半径取决于点云密度和初始位置估计。最近邻比对是根据欧式距离定义的:
尽管ICP已被成功应用于许多配准问题,但是还有很多难题亟待解决。特别是ICP在以下假设满足的情况下运行得很好:
- 两个视图必须彼此都很接近,如果不是的话,ICP算法可能会陷入局部最小值;
- 两个视图必须完全重叠,或者显示的D数据能作为模型视图M的子集。
ICP计算的速度和精度非常依赖于相关的处理过程,当ICP算法用来配准2个点云文件,Delaunay三角剖分算法用来加速点的搜索(速度以及改善配准效率),四个点构成一个点集。
2) ICP 配准k-D树
k-D树(k维树)是每个节点都为k维点的二叉树,所有非叶子节点可以视作用一个超平面把空间分割成两个半空间。在两个半空间中搜索到的点是两个节点子单元,生成的k-D树能被用于有效地搜索P点的最近邻域。
- 首先,通过从树的根部以对数时间开始递归进行初始估计(选择一个围绕P所在的半空间的子树直到到达叶子的节点);
- 然后,递归过程中使用前一阶段的估计值(包含一个比第一次估计低的距离为P的点)。
最近点的搜索算法是迭代的,点和分割平面是相对的,这决定了搜索路径的机制。
4. 实验结果
在这部分,我们将评估所提出算法的性能。文中提出的配准算法是基于迭代最近邻(ICP)和3D SIFT算法,所有的测试方法均通过MATLAB编程语言验证。ICP算法的输入是原始点云和目标点云,具体如图3所示。
图3. 基于ICP的配准算法
首先,得到固定点云和移动点云。然后,做点云配准。这些处理流程都可以在图4中点云配准的工作流中看到。第一步是清除两幅点云中的异常值和噪声,下一步是做下采样,这是关键一步。因为配准是否成功依赖于配准的点云中点的个数。我们用pcddownsample函数执行下采样,这个函数用了三种不同的下采样方法。第一种,随机标记,随机划分点云而不需要替换点。使用这种方法的时候,只有输入百分比和期望点的输出个数需要设置。第二种方法称为“gridAverage”,它使用标有“ gridStep”的类似于网格滤波的方式做下采样,我们使用这种方法来减少点云中的点。另外通过实验,我们确定了网格滤波的理想步长是5。
图4.模型配准的流程
完成以上这些过程后,就可以用ICP算法做刚体变换,通过循环的方式迭代执行以下几步:
- 匹配移动和固定点云
- 通过过滤异常值来消除不正确的匹配
- 恢复平移和旋转(最小化误差)。
实验对比如下:
5.总结
本文提出了(ICP+SIFT)算法进行高精度的配准,只处理迭代转换计算。在医学图像配准和重建领域,通过对比三种不同算法的精度和鲁棒性,ICP,ICP+k-d 树,以及文中所提的算法,本问题提出的算法是快速且精度更高的。
参考文献:
[1] P. J. Besl and N.D. Mckay, “A method for registration of 3-D shapes,” IEEE Transactions on Pattern Analysis and Machine Intelligence[online]. 1992, 14(2), 239-256. DOI: 10.1109/34.121791. ISSN 0162-8828.
[2] Y. Chen and G. Medioni, “Object modelling by registration of multiple range images,” Image and vision computing, 1992, 10.3: 145-155.
[3] S. Rusinkiewicz and M. Levoy, “Efficient variants of the ICP algorithm,” In: 3-D Digital Imaging and Modeling, 2001. Proceedings.Third International Conference on. IEEE, 2001. p. 145-152.
[4] D. Chetverikov, D. Stepanov and P. Krsek, “Robust Euclidean alignment of 3D point sets: the trimmed iterative closest point algorithm,” Image and Vision Computing, 2005, 23.3: 299-309.
[5] P. Markelj, “A review of 3D/2D registration methods for image-guided interventions,” Medical image analysis, 2012, 16.3: 642-661.
[6] J. Santamaría, O. Cordón and S. Damas, “A comparative study of stateof-the-art evolutionary image registration methods for 3D modeling,”Computer Vision and Image Understanding, 2011, 115.9: 1340-1354.
[7] J. Yang, H. Li and Y. Jia, “Go-ICP: Solving 3d registration efficiently and globally optimally,” In: Proceedings of the IEEE International Conference on Computer Vision. 2013. p. 1457-1464.
[8] Y. Sahillioglu and L. Kavan, “Skuller: A volumetric shape registration algorithm for modeling skull deformities,” Medical image analysis,2015, 23.1: 15-27.
[9] P. Scovanner, S. Ali, and M. Shah, “A 3-dimensional sift descriptor and its application to action recognition,” In Proceedings of the 15th International Conference on Multimedia (ACM ’07), pp. 357–360, New York, NY, USA, September 2007.
[10] B. Lee and D.D. Lee, “Learning anisotropic ICP (LA-ICP) for robust and efficient 3D registration,” In: Robotics and Automation (ICRA),2016 IEEE International Conference on. IEEE, 2016, p. 5040-5045.
[11] A. Nuchter, K. Lingemann and J. Hertzberg, “Cached k-d tree search for ICP algorithms,” Sixth International Conference
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
相关推荐
- NodeJs(一)我对NodeJs的认知
-
欢迎来到我的NodeJs专题系列,更多精彩内容持续更新中,敬请关注!写在前面前面我已经分享了100+篇前端相关的技术文章,都是自己平时工作中遇到的一些问题的问题,还有是我平时自学的内容。但是那些前端文...
- 「Django框架」-Django初识
-
Django介绍Django是一个由Python编写的Web应用框架。它源自一个在线新闻Web站点。Django作为一个从新闻系统生成环境中诞生的框架,是直接面向企业级开发的。Django是一个全功能...
- 什么是PHP?APP开发可以选择PHP编程语言吗?
-
在开发一款APP的过程当中,一支专业的APP开发团队需要UI设计师、前端开发人员、后端开发人员以及测试等等。而熟练掌握PHP编程语言的人才就相当于APP开发团队中的后端开发人员。一般在APP开发中后端...
- php可以做前端吗
-
php可以做前端吗?php不可以做前端,因为php是在服务器端执行的脚本语言,也就是后端语言,主要适用于Web后端开发领域。php简介:PHP(全称:PHP:HypertextPreprocesso...
- PHP多久能学会?比java,python难还是简单呢?
-
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。利于学习...
- java哪有这细糠啊,PHP是世界上最好的语言!
-
要不说我们要多了解一下其他技术呢,java哪有这好玩应啊。今天分享个php开发的辅助工具:phpenv(当然,php是世界上最好的语言,毋庸置疑)phpenv就是一个开发者工具箱神器,只有拥有了他,你...
- Java和Php的对比
-
(1)开发速度Java是一种面向对象和结构化的语言,开发速度较慢,比如代码更多,耗费较多时间。而PHP是一种解释型语言,开发速度快,代码量少,耗费的时间较少。(2)安全性Java基于字节码形式进行...
- php宝塔搭建实战多端壁纸小程序源码一(wordpress后台安装篇)
-
大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的多端壁纸类型的小程序源码,后台是使用wordpress集成的,前端是使用uniapp开发的。今天先给大家分享后台怎么在宝塔里部署...
- PHP中的IMAP扩展简单入门
-
对于邮件处理来说,大家比较熟悉的应该是POP3、SMTP这类的协议,而今天我们介绍的IMAP其实也是非常常用的一种邮件处理协议。它和POP3比较类似,都是以接收处理邮件为主。不过相对于...
- 【推荐】一款免费、全能型的数据库管理神器,效率提升利器
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍HeidiSQL是一款免费的数据库管理工具,适用于与数据库打交道的开发人员和数据库管理员。它支持多种数据...
- Php+Vue.js实现的项目管理系统
-
一个基于Vue.js实现的项目管理系统目前已实现的主要功能项目管理任务管理账号管理文件管理团队管理权限管理多组织管理技术栈PHPVueMySQLRedis相关界面前端源码地址:https://git...
- 让PHP和Node.js同框共舞:解密php-node的革命性玩法!
-
你有没有想过,PHP和Node.js有朝一日能在一个进程里握手言和?不是“后端服务调用后端服务”,也不是“前端请求后端接口”,而是——直接共享内存、互传变量、同步执行逻辑。听起来像是幻想,但今天...
- 8个增强PHP程序安全的函数
-
安全是编程非常重要的一个方面。在任何一种编程语言中,都提供了许多的函数或者模块来确保程序的安全性。在现代网站应用中,经常要获取来自世界各地用户的输入,但是,我们都知道“永远不能相信那些用户输入的数据”...
- Peachpie —— .NET 的 PHP 编译器
-
Peachpie是一款.NET平台的PHP编译器,主要特性:物联网:可以使用PHP开发WindowsIoT设备应用,至少节省30%的开发支出安全:可以在最安全的平台上运行PH...
- PHP的垃圾回收机制-PHP高级面试题+详解
-
ps:本篇内容包括精选面试题与知识篇。PHP面试题关于PHP的垃圾回收机制,PHP的垃圾回收机制引用计数(referencecounting)GC机制,PHP可以自动进行内存管理,清除不需要的...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- c语言编程小知识大全 (17)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)
- github好玩的php项目 (18)