X光由于其强大的穿透力而被广泛地应用于医疗、安检、考古、生物、工业检测等场景的透射成像。
然而,X光的辐射作用对人体是有害的,受试者与测试者都会受到暴露于X光下的影响。
为了减少X光对人体的伤害,约翰霍普金斯大学、香港科技大学(广州)、上海交通大学的研究人员提出了稀疏视角下的X光三维重建任务——新视角生成,即只拍摄少数几张X光片,剩下视角的X光片通过渲染得到,用以帮助医生进行诊断分析。
论文链接:https://arxiv.org/abs/2403.04116
代码链接:https://github.com/caiyuanhao1998/X-Gaussian
视频链接:https://www.youtube.com/watch?v=v6FESb3SkJg&t=28s
文中提出了首个能够渲染X光的3D Gaussian Splatting框架以用于X光的新视角合成(Novel View Synthesis, NVS)。
值得一提的是,该方法无需计算耗时的Structure-from-Motion(SfM)算法来进行初始化。
图1 高斯点云分布在模型训练中的变化过程
目前所有的代码、数据、高斯点云模型、训练日志均已开源,欢迎大家来使用或是提交issue。
NeRF类重建方法由于需要密集地采集射线,并在射线上采样多个3D点,计算后通过再通过volume rendering渲染得到2D projection。这一过程非常消耗时间。
当前正火的3D Gaussian Splatting (3DGS)因为其高度平行化的渲染方法——Rasterization而有着比NeRF更快的渲染速度。然而3DGS是针对自然光成像设计的。
直接将3DGS用于X光成像会遇到两个问题:
(1)首先,如图2所示,自然光成像主要依靠于光线在物体表面的反射,这使得从不同角度看,物体表面的颜色会有差异。为了拟合这一各向异性的特点,3DGS采用球谐函数(Spherical Harmonics,SH)来模拟自然光的分布。然而在X光成像中,X光穿透物体并衰减,然后落在探测器上成像。X光无论从各个角度穿透同一物质点,其衰减都是一样的。直接使用SH很难拟合X光成像的这一各向同性的特点。
(2)其次,3DGS的初始化需要通过计算Structure-from-Motion(SfM)算法来得到各个视角的相机内外参数以及一个稀疏点云作为起始。这个算法十分耗时,增加了患者和医生的等待时间。
图2 3DGS 自然光成像与 X-Gaussian 进行 X 光成像对比
本文针对上述这些问题展开研究,做出了以下四点贡献:
针对X光新视角合成任务,本文提出首个基于3D Gaussian Splatting的技术框架——X-Gaussian;
设计了一个全新的辐射高斯点云模型(Radiative Gaussian Point Cloud Model),基于该模型,又设计了一个可微的辐射光栅化渲染方法(Differentiable Radiative Rasterization);
针对高斯点云模型,提出了一种初始化方法——Angle-pose Cuboid Uniform Initialization(ACUI),这种初始化方法能够通过X光扫描仪的设备参数和旋转角直接计算出相机内外参数和初始稀疏点云,这使得新方法免于计算 SfM,从而大幅提升训练速度。
X-Gaussian在性能上超过当前最好NeRF方法6.5dB的情况下,推理速度还达到了73倍。同时在传统算法上也验证了,通过新方法合成的新视角X光片能够提升CT重建的图像质量。
在圆形扫描轨迹锥形X光束扫描(circular cone-beam X-ray scanning)场景下研究三维重建问题。空间坐标系的变换关系如图3所示。被扫描物体的中心O为世界坐标系的原点。
扫描仪的中心S为相机坐标系的中心。探测器D的左上角为图像坐标系的原点。整个空间坐标系的变换遵循OpenCV三维视觉的标准。
图3 空间坐标系转换关系示意图
图4 X-Gaussian 算法框架流程图
算法的流程图如图4所示,首先通过图4(a)中的Angle-pose Cuboid Uniform Initialization(ACUI)来计算出X光源(Source)在对应旋转角????下的相机内外参矩阵并计算出初始稀疏点云。然后,针对X光各向同性的成像特点设计了辐射高斯点云模型(Radiative Gaussian Point Cloud Model),如图4(b)所示。
针对这一点云模型,团队设计了一个可微的辐射光栅化(Differentiable Radiative Rasterization,DRR)渲染方法,用于三维高斯点云的泼溅渲染,如图4(c)所示。本节先介绍辐射高斯点云模型,然后是可微的辐射光栅化,最后介绍ACUI初始化方法。
本小节首先回顾一下3DGS的基本知识。3DGS将一个物体或场景用????????个高斯点云表示如下:
其中的????????表示第????个高斯点云,????????,Σ????,????????分别表示高斯点云的中心位置,协方差,和不透明度。
协方差控制高斯点云椭球的三轴大小,即控制点云的形状。3DGS对每一个高斯点云采用球谐函数来拟合其颜色如下:
其中,????表示颜色,????=(????,????)表示观测视角,????????????表示球谐函数系数,????????????表示球谐函数,将球面上的点映射成一个实数值。然而,如前面的分析,球谐函数并不适合用来模拟各向同性的X光成像。
为此,团队设计了一个辐射强度响应函数(Radiation Intensity Response Function,RIRF)来替代球谐函数。
具体而言,让每一个高斯点云学一个特征向量????其固有的辐射属性,如辐射密度等。然后该点云的辐射强度????便可以被表示为:
其中????表示一组常数。
因此,辐射高斯点云模型????????可以被表示为:
其中????????为可学习参数,表示分配给第????个高斯点云的特征向量。
基于提出的这个高斯点云模型,团队还设计了一个可微的辐射光栅化方法(Differentiable Radiative Rasterization,DRR)。
整DRR的过程????????????????总结如下:
其中????表示被渲染的图像,????????????????和????????????????分别表示内外参矩阵。接着介绍????????????????的细节。
首先,计算第????个高斯分布上的3D点????的概率如下:
接着,将3D高斯点云从世界坐标系中投影到相机坐标系,进而再投影到图像坐标系上:
其中的????????=(????????,????????,????????)表示相机坐标,????????表示图像坐标。三维的协方差矩阵????????也被对应地投影到相机坐标系上:
其中????????是投影变换(projective transformation)的仿射近似的雅克比矩阵。
????????是viewing transformation。
其中的????????????表示X光扫描仪中X光源(source)和探测器(detector)之间的距离,????表示X光源的旋转角。
然后在图像坐标系下的二维协方差矩阵是直接取????????′的前两行前两列。
将2D projection分割成互补重叠的titles。每一个三维高斯点云都按照其对应投影所落在的位置分配到对应的tiles上。这些3D高斯点云按照与二维探测器平面的距离进行排序。
那么,在2D projection上像素点????上的辐射强度便是混合????个与????重叠的排好序的3D点得到的,如下公式所示:
其中的????????表示落在像素????上的X射线与高斯点云之间的交点,????????表示????????的辐射强度。
模型训练的监督函数是一范数损失与SSIM损失之间的加权和:
其中的????是加权稀疏,可调的超参。
常规的3DGS使用SfM算法来计算每一个视角的相机内外参数以及初始的稀疏点云。
SfM算法的原理是检测不同视角投影之间的特征匹配点。对于X光片这种低对比度的图像来说,SfM的检测精度会降低。
同时运行SfM非常耗时,对几十张图像计算SfM可能需要耗费几个小时。这大大延长了病人和医生的等待时间。
为此,团队设计了角度位姿立方体均匀初始化(Angle-pose Cuboid Uniform Initialization,ACUI)算法。
ACUI首先直接使用X光扫描仪的参数来计算相机的内外参矩阵:
其中的????????????????表示外参矩阵,????????????表示X光源与物体之间的距离。????????????????表示相机内参,????,????表示渲染图像的宽度和高度。
然后设置一个尺寸为????1×????2×????3(????????)的立方块使其能够完全包裹被扫描的物体,并将其分割成一个????1×????2×????3(voxel)的网格。
最后,按照间隔????来采样得到初始的稀疏点云:
表1 新视角生成任务对比
图5 新视角生成视觉对比图
在新视角生成任务上,新方法与之前方法的定量与定性对比分别如表1和图5所示。
新方法在比当前最好的NeRF类算法要高出6.5dB的情况下,还达到了73倍的渲染速度,并且可以渲染更多的结构细节。
图6 3DGS与X-Gaussian训练过程的视觉分析
团队做了视觉分析,将3DGS与X-Gaussian训练的各个iteration的高斯点云进行可视化。
如图6所示,X-Gaussian收敛得更快,噪声更少,更加贴合被扫描物体(脚趾)的形状。
采用X-Gaussian为传统方法在稀疏视角下渲染更多X光片视图以进行CT重建,定量对比如表2所示
表2 稀疏视角下CT重建的数值对比
图7 使用不同NVS算法为传统方法SART合成新视角以进行CT重建视觉对比
新的方法能够更好地辅助不同传统方法进行稀疏视角的CT重建,PSNR性能上的涨幅都超过了10dB。
本文提出了首个能渲染X光的3DGS方法——X-Gaussian。
具体而言,团队重新设计了一个辐射高斯点云模型,并基于该模型设计了一个可微的辐射光栅化渲染方法,能够在GPU上高效地并行计算。同时为求出不同视角下的相机内外参矩阵和初始稀疏点云,还设计了ACUI初始化方法。
最终,X-Gaussian在比当前最好NeRF方法要高出6.5dB的情况下速度还达到了73倍速。同时还在稀疏视角CT重建任务上验证了新方法的实用价值。
本文使用的数据来自团队CVPR 2024的工作SAX-NeRF,能够同时做X光新视角合成和CT重建的Instant-NGP。
文章来源于“新智元”,作者“新智元”
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI