【论文粗读|arXiv】GaSpCT: Gaussian Splatting for Novel CT Projection View Synthesis

Abstract

本文提出了一种新颖的视图合成和3D场景表示方法,用于为计算机断层扫描(CT)生成新的投影视图。
方法采用了Gaussian Splatting 框架,基于有限的2D图像投影集,无需运动结构(SfM)方法,在CT中实现新颖视图合成。因此,我们减少了总扫描持续时间和患者在扫描期间接受的辐射剂量。
我们调整了损失函数来适应我们的任务,即通过使用两个稀疏性促进正则化项来鼓励更强的背景和前景区分(beta loss 和 TV loss)。最后,我们使用均匀的先验分布来初始化3D空间中的高斯位置,这个先验分布表示大脑的位置在视野内可能的位置。模型性能评估使用了脑部CT数据集,并证明了渲染的新视图和模拟扫描的原始投影视图密切匹配,并且比其他隐式3D场景表示方法表现更好。此外,和基于神经网络的稀疏视图CT图像重建相比,实验观察到训练时间减少了。最后,和等效的体素网格图像表示相比,高斯splatting的表示所需的内存减少了17%。

Contributions

  1. 引入了GaSpCT,一种隐式(译者注:是不是说错了,3DGS是显式表达)3D场景表示和新颖的视图合成模型,允许从有限的投影数据集渲染新颖的CT大脑投影,该模型占用的内存较小,而且渲染新视图的计算成本较低。
  2. 在CT成像中,预计未被患者占据的像素将具有空或背景强度值。为了提高合成视图的平滑性和稀疏性,我们增强了3DGS中使用的基线损失函数,添加了总变分损失(TV loss)和Beta分布负对数似然损失。
  3. 引入了一个脚本将CT相机参数近似为针孔相机的参数,从重建图像 医学数字成像和通信元数据中提取CT相机参数。因此消除了运动结构(SfM)的必要性,由于缺乏明显的边缘,SfM在CT照片上表现不佳。此外,我们的方法还初始化了代表预期患者脑容量的椭球3D点云。
  4. 我们对脑部CT投影图像上的隐式3D场景表示进行了首次验证,冰箱医学生成社区提供所有使用的数据集。

方法

GaSpCT

模型基于Gaussian Splatting,针对CT脑扫描调整了该模型,在损失函数中添加了两个促进稀疏性的正则化器,并将点云初始化为椭球体(类似于大脑结构)。

在这里插入图片描述

Gaussian Splatting

原始的Gaussian Splatting模型中三维场景被编码为3D高斯。每个Guassian由38个参数组成,包括位置、协方差、颜色和不透明度。在优化期间,从训练集分布中采样2D图像和相机姿态。通过使用可微高斯光栅化器,可以从给定姿势的点云渲染等效图像。计算渲染图像和真实图像之间的损失,并使用Adam优化器对损失函数的梯度执行反向传播。原始的损失函数是:
L o r i g i n a l = ( 1 − λ ) L 1 + λ L D _ S S I M L_{original}=(1-\lambda)L_1+\lambda L_{D\_SSIM} Loriginal=(1λ)L1+λLD_SSIM

Total Variation Regularization: 我们加入了总变分损失。 TV惩罚了相邻像素之间的较大变化,增强图像的平滑度同时减少噪声伪影的影响。
L T V = λ T V ∑ i , j N , M ∣ p i + 1 , j − p i , j ∣ + ∣ p i , j + 1 − p i , j ∣ L_{TV}=\lambda_{TV}\sum_{i,j}^{N,M}|p_{i+1,j}-p_{i,j}|+|p_{i,j+1}-p_{i,j}| LTV=λTVi,jN,Mpi+1,jpi,j+pi,j+1pi,j
其中p表示坐标i,j处的像素值。N、M分别是图像的高度和宽度。

Beta 分布正则化器 :我们采用Beta分布的负对数似然。这种损失通过将背景值推至0并增强前景的像素强度来促进稀疏性。
L b e t a = 1 / P ∑ p [ l o g ( I α ( p ) ) + l o g ( 1 − I α ( p ) ) ] L_{beta}=1/P\sum_p[log(I_{\alpha}(p))+log(1-I_{\alpha}(p))] Lbeta=1/Pp[log(Iα(p))+log(1Iα(p))]
P是总像素数量, I α I_{\alpha} Iα是图像不透明度。

总损失函数:
L f i n a l = λ 1 L 1 + λ D _ S S I M L D _ S S I M + λ T V L T V + λ b e t a L b e t a L_{final}=\lambda_1L_1+\lambda_{D\_SSIM}L_{D\_SSIM}+\lambda_{TV}L_{TV}+\lambda_{beta}L_{beta} Lfinal=λ1L1+λD_SSIMLD_SSIM+λTVLTV+λbetaLbeta

实验

数字重建放射图像: 通过输入从DICOM元数据检索的视野、患者和扫描仪参数,使用3D DICOM图像作为输入体模来模拟CT扫描。DRR的输出是一组新的投影图像。我们生成角度分辨率为1度的360°投影视图。图像大小128*128。该程序用于为不同患者的20次CT脑部扫描生成DRR,以捕获不同人之间的解剖变异性。

Structure from Motion 在 CT图像上的挑战: Gaussian Splatting需要SfM软件的输出作为训练脚本的输入。包括相机内外参和表示3D场景中已识别特征的点云。然而将SfM应用与CT图像尤其具有挑战性。这是放射密度在重建的投影图像上逐渐变化的结果。因此,明显缺乏精致的边缘和良好的细节,这将影响准确和鲁邦的特征提取。

CT图像的相机外参和内参:
我们使用DICOM元数据提供的有关CT扫描参数的先验知识,以数学方式生成相机内参和外参。我们检索的变量是成像空间的视场FOV,探测器阵列的尺寸以及源到探测器和患者的距离。这些变量用于计算每个相机位姿的笛卡尔坐标(x,y,z)。姿态之间的polar angle增量与CT数据集的角分辨率相同,而方位角(azimuth angle)保持固定为0(假设我们将世界坐标的原点设置在CT FOV的中心)。

设置

在单个 NVIDIA RTX A4000上运行。

结果

评价指标:

  1. PSNR
  2. SSIM
  3. LPIPS(Learned Perceptual Image Patch Similarity)

每次扫描的优化过程需要5-10分钟。

在这里插入图片描述

在这里插入图片描述

Future work

  1. 下一步的重要工作是编写一种新型相机,和基于弯曲正交平面的CT成像中的探测器阵列紧密匹配。这种近似比我们当前的针孔相机近似要准确地多;
  2. 此外,值得研究和调整SfM方法中的边缘检测和特征提取,以准确定义初始点云;
  3. 研究使用高斯泼溅表示来表示多种医学扫描的潜力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift 5.9 中 if 与 switch 语句简洁新语法让撸码更带劲

概览 在实际代码开发中,可能初学 Swift 语言的小伙伴们在撸码时最常用的得数 if 和 switch…case 条件选择语句了。不过在某些场景下它们显得略有那么一丢丢“矫揉造作”,还好从 Swift 5.9 开始苹果知趣的为其简化了语法且增强了它们的表现力。 在本篇…

Vitis HLS 学习笔记--优化本地存储器访问瓶颈

目录 1. 简介 2. 代码解析 2.1 原始代码 2.2 优化后 2.3 分析优化措施 3. 总结 1. 简介 在Vitis HLS中,实现II(迭代间隔) 1是提高循环执行效率的关键。II1意味着每个时钟周期都可以开始一个新的迭代,这是最理想的情况&…

HNCTF ——baby_python

H&NCTF 2024 官方WP (qq.com) OpCodes Pickle.jl (juliahub.com) nc之后 PS D:\ForCode\pythoncode\.idea> nc hnctf.yuanshen.life 33267 # Python 3.10.12 from pickle import loads main b"\x80\x04ctypes\nFunctionType\n(ctypes\nCodeType\n(I1\nI0\nI0\n…

【Vim】

一、什么是Vim? Vim 是一个历史悠久的文本编辑器,可以追溯到 qed。 Bram Moolenaar 于 1991 年发布初始版本。Vim 有着悠久的历史;它起源于 Vi 编辑器(1976 年),至今仍在开发中。(Vim has a rich history; it origina…

css+html 爱心❤

效果 代码实现 html <div class"main"><div class"aixin"></div></div>css .main {transform: rotate(-45deg);}.aixin {height: 100px;width: 100px;background-color: red;margin: auto;margin-top: 200px;position: relativ…

MySQL第一次作业(基本操作)

目录 一、登陆数据库 二、创建数据库zoo 三、修改数据库zoo字符集为gbk 四、选择当前数据库为zoo 五、查看创建数据库zoo信息 六、删除数据库zoo 一、登陆数据库 指令&#xff1a; mysql -u root -p 二、创建数据库zoo 指令&#xff1a; create database zoo; 三、修改数…

基于PHP+MySQL组合开发的多用户自定义商城系统源码 附带源代码包以及搭建教程

系统概述 互联网技术的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。商城系统作为电子商务的核心&#xff0c;其开发技术和用户体验直接影响着电商平台的竞争力和用户满意度。本文旨在介绍一个基于PHPMySQL组合开发的多用户自定义商城系统&#xff0c;…

C++学习~~string类

1.STL简单介绍 &#xff08;1&#xff09;标准模版库&#xff0c;是C里面的标准库的一部分&#xff0c;C标准库里面还有其他的东西&#xff0c;但是我们不经常使用&#xff0c;我们经常使用的还是STL这个标准库部分。 &#xff08;2&#xff09;六大件&#xff1a;仿函数&…

C# WinForm —— 16 MonthCalendar 介绍

1. 简介 可以选择单个日期&#xff0c;也可以选择一段日期&#xff0c;在选择时间范围上 比较适用&#xff0c;但不能跨月份选择日期范围 在直观上&#xff0c;可以快速查看、选择日期/日期范围 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般…

Uni-app基础知识

uni-app组成和跨端原理 | uni-app官网uni-app,uniCloud,serverless,uni-app组成和跨端原理,基本语言和开发规范,编译器,运行时&#xff08;runtime&#xff09;,逻辑层和渲染层分离https://uniapp.dcloud.net.cn/tutorial/1.adb连接模拟器 找到adb所在位置&#xff08;一般在hb…

C++ 程序员常用的VScode的插件

vscode中好用的插件 Better CommentsBookmarksC/C ThemeChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeclangdClang-FormatCodeLLDBCMakeCMake ToolsCode RunnerCode Spell CheckerCodeSnapColor Highlightvscode-mindmapDraw.io IntegrationError Len…

对称加密算法的应用场景

随着信息技术的飞速发展&#xff0c;数据安全成为了至关重要的议题。在保护数据传输和存储的过程中&#xff0c;加密算法扮演着不可或缺的角色。其中&#xff0c;对称加密算法&#xff0c;由于其高效性和易用性&#xff0c;被广泛应用于各种场景中。本文将探讨对称加密算法的主…

Kubernets多master集群构建负载均衡

前言 在构建 Kubernetes 多 Master 集群时&#xff0c;实现负载均衡是至关重要的一环。通过多台 Master 节点配合使用 Nginx 和 Keepalived 等工具&#xff0c;可以有效提高集群的可靠性和稳定性&#xff0c;确保系统能够高效运行并有效应对故障。接下来将介绍如何配置这些组件…

物业水电抄表系统的全面解析

1.系统概述 物业水电抄表系统是现代物业管理中的重要组成部分&#xff0c;它通过自动化的方式&#xff0c;实时监控和记录居民或企业的水电使用情况&#xff0c;极大地提高了工作效率&#xff0c;降低了人工抄表的错误率。该系统通常包括数据采集、数据传输、数据分析和数据展…

链表OJ题(移除链表元素,反转链表,分割链表,环形链表(是否成环问题),链表中间节点(快慢指针讲解),环形链表(找入环节点))“题目来源力扣附带题目链接”

目录 1.移除链表元素 2.反转链表 2.1三指针法 2.2头插法 3.分割链表 4.链表的中间节点&#xff08;快慢指针&#xff09; 4.1快慢指针 4.2求链表的中间节点 5.环形链表 5.1环形链表是否成环 5.2环形链表入环节点 5.3入环节点推论的不完备性说明 1.移除链表元素 移除…

Microsoft Threat Modeling Tool 使用(三)

Boundary&#xff08;边界&#xff09; 本文介绍信任边界&#xff0c;基于 SDL TM Knowledge Base (Core) 模版&#xff0c;这是一个通用的威胁建模模板&#xff0c;非常适合初学者和大多数威胁建模需求。 这些边界&#xff08;Boundary&#xff09;在微软威胁建模工具中用于表…

Java多线程与高并发

1、什么是进程?什么是线程? 进程:进程是程序的基本执行实体;另外一种解释是进程是一个应用程序(1个进程是一个软件)。 线程:线程是操作系统能够进行运算调度的最下单位。它被包含在进程之中,是进程中的实际运作单位;是一个进程中的执行场景/执行单元。 注意:。一个进…

在云服务器上运行StyleGAN3生成伪样本

首先是传入数据&#xff0c;这里我们不做赘述。 对于数据格式的裁剪&#xff0c;可以通过以下代码进行&#xff1a; from glob import glob from PIL import Image import os from tqdm import tqdm from tqdm.std import trangeimg_path glob(r"C:\Users\Administrato…

【Oracle篇】rman物理备份工具的基础理论概述(第一篇,总共八篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&am…

嵌入式是大坑的说法,是否与学生的信息不对称有关?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 目前也算是在搞嵌入式&#…