如何计算体素大小?

2023-12-04

提供了 DICOM 标头中的以下信息,如何计算体素大小的第三个值?我假设前两个值为 0.515625 和 0.515625。

BitsAllocated: "16"
BitsStored: "12"
Columns: 512
HighBit: "11"
ImageOrientation: "1\0\0\0\-1\0"
ImagePosition: "-144\-34.7242241\925.599976"
ImageType: "ORIGINAL\PRIMARY\AXIAL\HELIX"
InstanceNumber: "456"
Modality: "CT"
PhotometricInterpretation: "MONOCHROME2"
PixelRepresentation: "0"
PixelSpacing: "0.515625\0.515625"
RescaleIntercept: "1"
Rows: 512
SamplesPerPixel: "1"
SeriesDescription: "CERVEAU SANS IV"
SeriesNumber: "3"
SliceThickness: "1.50"
WindowCenter: "00040\00040"
WindowWidth: "00120\00120"
imagesFormat: "jpg"
modality: "CT"
name: "soft tissue"
nodeId: "557621"
pixelHeight: "0.515625"
pixelWidth: "0.515625"

注意:我收到一个 JPEG 图像堆栈,而不是 DICOM,它附带一个文件,其中包含我上面发布的值。如果需要的话,我可以回去询问文件中的其他信息。


仅给出一个切片的标签,您必须使用SliceThickness作为第三个维度,尽管我建议不要这样做,因为这不能保证给出切片之间的距离。有标签SpacingBetweenSlices提供了此信息,尽管它似乎不存在于您的案例中。

最好的方法是利用差异ImagePositionPatient相邻切片之间。为此,您当然还需要下一个切片的标签。附注:在您的列表中,ImageOrientation and ImagePosition应该更好地阅读ImageOrientationPatient and ImagePositionPatient, as ImageOrientation and ImagePosition是其他标签(CT 图像中不存在)。

ImagePositionPatient给出 DICOM 患者坐标中切片左上角的位置,要计算距离,您必须考虑切片在该坐标系中的方向。这是由下式给出的ImageOrientationPatient,其中包含 DICOM 坐标中切片的归一化行和列方向余弦向量。您可以在DICOM标准.

方向矩阵的前两个分量由下式提供ImageOrientationPatient(例如第一个和第二个三个数字),第三个分量可以通过这两个分量的叉积来计算。

因此,在伪代码中,这看起来像这样:

orient1 = vector(ImageOrientationPatient[0], ImageOrientationPatient[1], ImageOrientationPatient[2])
orient2 = vector(ImageOrientationPatient[3], ImageOrientationPatient[4], ImageOrientationPatient[5])
orient3 = orient1 x orient2 // cross product
orient_matrix = matrix(orient1, orient2, orient3)

pos1 = vector(ImagePositionPatient[0], ImagePositionPatient[1], ImagePositionPatient[2]) // from current slice
pos2 = vector(ImagePositionPatient[0], ImagePositionPatient[1], ImagePositionPatient[2]) // from adjacent slice
diff_pos = pos2 - pos1

image_pos = orient_matrix o diff_pos / length(orient3) // normalized dot product

voxel_z = image_pos.z

Update:正如@gofal 所指出的,第一个版本是不正确的。我还包括标准化(例如删除length(orient3)),尽管严格来说这些值应该已经标准化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算体素大小? 的相关文章

  • vtk.js怎么直接读取dicom文件

    vtk js 是一个 JavaScript 库 xff0c 用于创建三维计算机图形 它不能直接读取 DICOM 文件 你需要使用其他库 xff0c 如 CornerstoneJS 或 dcmjs xff0c 将 DICOM 文件转换为 vt
  • dicom文件与bmp和jpg文件的相互转化

    前面工作需要 xff0c 将dicom医学文件转化为普通图像 xff0c 如bmp xff0c jpg等 xff0c 中间应用到了CxImage x64和dcmtk包 实现过程中 xff0c 遇到了不少麻烦 xff0c 现将相关过程分享如下
  • 基于fo-dicom 的 Worklist & CStore 我的学习实现路线

    学习了三个周的DICOM协议 xff0c 主要进行了Worklist CStore应用测试 xff0c 下面总结一下过程中收获的心得 刚开始接触DICOM这个东西领导提出两个需求测试实现Worklist和DICOM文件下载 xff0c 后面
  • vtkImageData算法坐标计算取整处理

    医学影像处理项目中 处理vtkImageData数据时经常涉及到一类问题 给了一个空间坐标或者位置 如何计算对应像素索引或者距离 从原理上 是这样一个公式 pixel num floor postion1 postion0 spacing
  • DCMTK读取DICOM文件头信息的三种方法

    Howto Load File Meta Header Here s an example that shows how to load the File Meta Information Header of a DICOMfile wit
  • 如何在 JavaScript 中将 UUID/GUID 转换为 OID/DICOM UID?

    如何转换 UUID GUID 值 例如8348d2c5 0a65 4560 bb24 f4f6bcba601d 我用的流派uuidv4 到 OID DICOM UID 中 例如2 25 174506987738820548334170905
  • 使用 R 将单列拆分为多个观察值

    我正在处理 HCUP 数据 该数据在一个列中具有一系列值 需要将其拆分为多个列 以下是 HCUP 数据框供参考 code label 61000 61003 excision of CNS 0169T 0169T ventricular s
  • 如何在 iPhone 项目中使用 DCMTK

    我已经成功使用CCmake编译dcmtk3 6并在ios环境中构建它 但我不知道如何将这些编译文件包含在新的ios项目中 编译到新的 iphone 项目后我已经移动了 dcmtk 并使用 include dcm2xml h 但路径有错误 尝
  • 如何计算体素大小?

    提供了 DICOM 标头中的以下信息 如何计算体素大小的第三个值 我假设前两个值为 0 515625 和 0 515625 BitsAllocated 16 BitsStored 12 Columns 512 HighBit 11 Imag
  • 在Python中使用插值统一ct扫描体素大小

    我用过interp2在Matlab中 例如以下代码 这是 rayryeng的答案的一部分 Matlab 中的三维 3D 矩阵插值 d size volume image X Y meshgrid 1 1 scaleCoeff 2 d 2 1
  • 如何在android操作系统上读取DICOM文件?

    我想知道如何在 Android 操作系统上显示 DICOM 文件 我可以做吗 有些正在使用 DCMTK http www dcmtk org http www dcmtk org 在Android上通过Android NDK访问DICOM
  • 使用 Bokeh 查看 dicom 图像

    我正在尝试将图形背景设置为 dicom 图像 我跟着这个例子 http bokeh pydata org en 0 11 1 docs gallery image rgba html 但是图像数据由dicom pixel array不是RG
  • 如何计算MPR的dicom切片之间的空间?

    由于显示MPR view基于 Dicom 我用一系列 dicom 文件制作了一个 3D 数组 我展示它来自Coronal and Sagittal sides My 3D array includes z count of dicoms c
  • 正确显示 DICOM 图像 ITK-VTK(图像太暗)

    我使用 itk ImageSeriesReader 和 itk GDCMImageIO 读取 dicom 图像 然后使用 itk FlipImageFilter 翻转图像 以获得图像的正确方向 并使用 itk ImageToVTKImage
  • DICOM图像的窗宽和中心计算

    DICOM 图像 CT 中的 重新缩放截距 和 重新缩放斜率 是什么 如何计算窗口宽度和窗口中心 应用重新缩放截距和斜率将图像的像素值转换为对应用程序有意义的值 例如 原始像素值可以存储设备特定值 该值仅在由生成它的设备使用时才有意义 将重
  • DICOM 和图像位置患者

    我试图弄清楚 DICOM 图像位置 0020 0032 是绝对坐标还是只是我拥有的任何切片方向的坐标 例如 我有两个平面 一个矢状平面和一个冠状平面 与 DICOM 标头中的 x y z 形式的相应图像位置 以毫米为单位 交错 我的问题是
  • DICOM 图像中引用的图像序列中的[引用的 SOP 类/实例 UID] 是什么?

    我正在使用 fo dicom 库开发模态工作列表客户端 我不清楚以下与 有关的事情Referenced SOP Instance UID 0008 1155 什么是引用的 SOP 实例 UID 整个系列的参考 SOP 实例 UID 是否相同
  • matlab 数组中的 DICOM 维度(所有帧都以数组的最后一个维度结束)

    在我的 GUI 之一中 我加载 DICOM 图像 有时它们只是一个体积和另一个维度 当我将它们加载到 Matlab 中时 一切都会到达我想要的位置 handles inf dicominfo filepath filename handle
  • 如何对使用 SimpleITK 读取的 DICOM 图像进行直方图均衡化

    我正在尝试对从 nii gz 文件读取的所有图像进行直方图均衡 我试过这段代码 import SimpleITK as sitk flair file content gdrive My Drive Colab Notebooks FLAI
  • DICOM 和 DICOM 叠加问题

    我有一个 DICOM 图像 我正在使用 C 读取该图像并将其转换为 16 位位图 位图已创建 但图像具有 DICOM 覆盖 我想在创建最终的 dicom 位图时将叠加层刻录到位图中 我无法做到这一点 有什么帮助吗 一种方法是创建覆盖数据的位

随机推荐

  • 使用 maltpoltlib 对带有轮廓的 pcolormesh 进行动画处理

    我正在做一些事情 我需要可视化时间和表面上的进展 比如说热量 我在使用轮廓对 pcolormesh 进行动画处理时遇到一些麻烦 轮廓确实是动画的 但 pcolormesh 不是 我只得到第一个从未被替换的 我的代码很像这样 x y and
  • 使用 Javascript 从 Web 应用程序访问设备指南针

    是否可以通过网络应用程序在 iPhone Android 设备上使用 Javascript 访问指南针 已经在网上找了好几个小时了 我知道你可以通过以下方式访问加速度计 window ondevicemotion 函数 事件 有谁知道是否可
  • 在VS2019中连接Entity Framework与MYSQL

    我刚刚安装了 Visual Studio 2019 并尝试添加具有 ADO NET 实体模型的数据库 但向导在此步骤中崩溃了 选择实体框架版本 我有 Visual Studio Community 2019 v16 4 5安装 MySQL
  • 列表项项目符号重叠

    我有一个无序列表 我希望将其列表项显示为两行多列 问题在于每个列表项的项目符号与前一个列表项重叠 我该如何阻止这种情况发生 我已经找到了一个调整边距的混乱解决方案 但想知道是否有一个优雅的解决方案 我想保留子弹 我不希望列表项中的文本环绕项
  • 使用 cURL 编辑 GIST

    bin bash COMMIT git log 1 pretty format subject s name xxx date cD curl X PATCH d files latest commit content COMMIT u u
  • 如何将 Cassandra 的本地节点复制到其他 Cassandra 的远程节点?

    我需要使用 SimpleStrategy 将本地节点复制到其他 Cassandra 数据库中的远程节点 有人知道我从哪里开始吗 如果您要将数据写入两个集群 那么这里的主要复杂性是如何避免覆盖在本地设置之后在云中更改的数据 有几种可能性可以做
  • 如何在“电话:”链接中提供拨打分机号的选项?

    将电话链接设置为 a href Dial a 从移动浏览器中单击它 只有初始号码会传输到拨号器 而不是逗号或扩展名 我试过了p w and ext 也一样 但没有任何作用 p and w分别更改为 7 和 9 使用 Moto X 第一代进行
  • python中小于负无穷大的数字? [复制]

    这个问题在这里已经有答案了 这在 python2 中是可能的 None lt float inf 还有 它always returns True 然而 在 python3 上 这会抛出 TypeError unorderable types
  • 为多个用户主动安装/推送团队中的应用程序

    我有一个关于如何在 Teams 中为多个用户主动安装 推送应用程序 的疑问 我们已将 Bot 应用程序添加为 Teams 应用程序目录的一部分 并且我按照以下有关 Microsoft Teams 中的管理应用程序设置策略的文档来安装应用程序
  • 地图和法律提及

    在 iOS 我的问题是我必须向我的地图添加页脚子视图 它将隐藏合法链接 如何解决这个问题而不被 App Store 拒绝 我可以自己创建另一个合法按钮并将其添加到地图视图中我想要的位置吗 我不知道我能做什么 有一些答案建议您将合法标签移至v
  • Html.Partial 与 Html.RenderPartial 和 Html.Action 与 Html.RenderAction

    在 ASP NET MVC 中 有什么区别 Html Partial and Html RenderPartial Html Action and Html RenderAction Html Partial返回一个字符串 Html Ren
  • 当前上下文中不存在名称“ViewBag”

    我正在尝试在我的应用程序中使用 ViewBag 我拥有所有最近的 dll 最新版本的 MVC 3 但我仍然收到错误 名称 ViewBag 在当前上下文中不存在 我什至卸载并重新安装了 MVC 3 但没有任何变化 另外 我不相信 dll 会出
  • 通过 Gmail 发送电子邮件

    我有一个代码 用于发送电子邮件 Intent i new Intent Intent ACTION SEND i setType text plain i putExtra Intent EXTRA EMAIL new String to
  • 计算中使用的提示或宏变量

    我使用 EG 中的提示管理器创建了一个数字变量 该变量称为 HYr 代表我提取的数据最高年份 运行程序时 我根据最高年份创建了 4 个新变量 这就是我遇到问题的地方 我有以下内容 Let Yr2 HYr 1 Let Yr3 HYr 2 Le
  • Vapor 4:如何将急切加载的父关系映射为不同的格式?

    我在如何返回包含父关系的模型 同时将急切加载的模型映射到不同的形式方面遇到了一些困难 让我们考虑以下 2 个模型 Course and User final class Course Model Content static let sch
  • docker-compose 主机和容器上的持久数据

    我在 docker compose yml 3 0 中遇到卷问题 所以我知道一个卷的行为就像一个挂载 但是我已经设置了一个wiki 当我在docker compose中设置一个卷时 容器上的数据将被删除 隐藏 那么我怎样才能先将数据从容器保
  • 递归搜索并删除数组?

    我正在使用一个多维数组 我希望能够删除与 id 匹配的数组 和所有子数组 我尝试过的功能是 function removeKey key array childKey children if isset array key unset ar
  • 浮动/浮动=奇怪的结果

    我有两个值 一个来自用户输入 另一个来自数据库 var userinput form someInput var valuefromDB GetValue someNumber public float GetValue int id re
  • XSLT 2.0 通过多阶段转换在 HTML 输出中创建增量脚注编号

    这个问题建立在我对我的回答的基础上原问题 有人建议我发布后续内容 这涉及到尝试集成上一篇文章中的 XSL 代码 在上一个问题中 我提出了 TEI XML 文档的简化版本 我正在使用 XSLT 2 0 将其转换为 HTML 完整的 tei 文
  • 如何计算体素大小?

    提供了 DICOM 标头中的以下信息 如何计算体素大小的第三个值 我假设前两个值为 0 515625 和 0 515625 BitsAllocated 16 BitsStored 12 Columns 512 HighBit 11 Imag