如何读取动态DSA图像的DICOM文件
我具有DICOM格式的动态DSA图像,它由患者信息等标题和一系列X射线图像数据组成,仅显示一个文件中的骨骼运动. VTK,ITK或GDCM等库中是否有任何方法可以读取此数据? 解决方案 要在VTK中加载多帧DICOM,只需使用GDCM,特别是$ gdcmviewer input.dcm
4 2023-11-25
编程技术问答社区
如何通过c++库读取一个多帧的DICOM文件?
您如何读取单个文件包含许多2D XA映像(例如Barre.nom.fr/medical/samples)的多个帧DICOM文件.我知道软件(DICOM2),Java库(DCM4CHE2)和MATLAB方法(dicomread)可以执行此操作,但是C ++库中是否有任何方法,例如VTK,ITK或GDCM可以读取此类型的数据? 解决方案 如果要使用GDCM,只需查看示例/CXX目录,在priceurar中" nofollow"> hellovizworld 虚拟示例. 其他解决方案 请使用 dcmtk .它是开源C ++库,并由许多行业中的许多公司使用. 也很容易使用.
0 2023-11-25
编程技术问答社区
正确显示DICOM图像 ITK | VTK (图像太暗)
我使用itk :: ImagisRiesReader和itk :: gdcmimageio读取DICOM图像,然后阅读后,我将图像用itk :: flipimagefilter(以正确地取向图像的正确取向),然后使用itkimagedata转换为iTkimagedata,使用itk :: iTk :: Itk :: . i在qvtkwidget2中使用VTKResliceImageViewer使用VTK可视化图像. 我设置: (vtkResliceImageViewer)m_imageViewer[i]->SetColorWindow(windowWidthTAGvalue[0028|1051]); (vtkResliceImageViewer)m_imageViewer[i]->SetColorLevel(windowCenterTAGvalue[0028|1050]); 我设置了blac&White看起来可口的: vtkLookupTable* lutbw
4 2023-11-25
编程技术问答社区
在visual studio 2010中使用c#发送dicom文件到远程AE
我的目标是使用Visual Studio 2010中的C#将DICOM文件发送到远程AE, 我计划实施ClearCanvas库,将任务分为5个部分: // //1 initiate tcp\ip connection // //2 negotiate the association parameters to agree what can be done // //3 send the dicom object // //4 close the association // //5 close the TCP/IP connection 我知道storagescu将参与发送部分3),我尝试在Clearcanvas论坛上查找内容,这些代码还没有太大的意义,所以我不知道从哪里开始,任何有经验的人都可以将DICOM文件发送到远程AE,对我什至应该如何进行研究给出了一些线索?我在正确的轨道上吗? 您的帮助将不胜感激! 解决方案 我在清晰的画布
4 2023-11-23
编程技术问答社区
如何将视频文件的H.264比特流封装在C ++中
我正在尝试将视频文件(.mp4)转换为DICOM文件. 我已经成功地通过在DICOM中存储单个图像(每帧的一个视频)来完成, 但是结果是一个太大的文件,对我不利. 取而代之的是,我想将H.264 bitstream封装在视频文件中,并将其存储在DICOM文件中. 我尝试将文件的字节获取如下: std::ifstream inFile(file_name, std::ifstream::binary); inFile.seekg(0, inFile.end); std::streampos length = inFile.tellg(); inFile.seekg(0, inFile.beg); std::vector bytes(length); inFile.read((char*)&bytes[0], length); ,但我认为我错过了类似读取字节的东西,因为结果diCom文件是黑色图像. 在python中,我将使用pyd
2 2023-11-18
编程技术问答社区
在DICOM中覆盖像素数据时,哪些DICOM UID应该被替换?
我正在尝试从现有的DICOM文件(实例)创建一个新的DICOM文件,其中我更改了Pixel数据. 我知道我需要在替换像素数据时更改一些UID.目前,我正在生成SOPInstanceUID,MediaStorageSOPInstanceUID和ReferencedSOPInstanceUID在任何适用的地方. 还有其他一些UID需要更改以获取有效的DICOM文件吗?如果您可以指向我在标准中查找的位置,将会有所帮助. 解决方案 以下是从规范中讨论有关UID独特性的报价: 唯一的标识符(UID)提供了唯一识别各种项目的能力.它们保证了多个国家,站点,供应商和设备的独特性.无论任何语义上下文如何 ps 3.5 2017a-唯一标识符(UID) 如果您要更改像素数据(将压缩(转移语法)更改为有损或覆盖在一起),则必须更改SOP Instance UID (0008,0018). 关于Media Storage SOP Instance UID (0002,00
0 2023-11-12
编程技术问答社区
PostgreSQL。将UUID转换成OID
是否有postgresql中的函数将UUID(RFC 4122)转换为OID(ISO 8824)? " 2.25"之后的值.是UUID作为整数的直接小数编码.它必须是单个整数的直接十进制编码,所有128位.它不得分解为零件. 例如,该函数将吸收uuid "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"并返回OID "2.25.329800735698586629295641978511506172918". 参考: 创建和使用独特的ID创建和使用独特的ID -UUID -OID 解决方案 理想情况下,我们将拥有一个未签名的16字节整数(uint16)和注册的铸件uuid --> uint16(它可能内部或可能不兼容二元,使其超级兼容,使其成为超级-便宜的).这些都不是在股票Postgresql中实施的. 您可能会浏览(非官方!)附加模块这些模块在大多数托管安装上都不可用.这是一个穷人的实施,具有标准Postgresql 的
2 2023-11-12
编程技术问答社区
如何为DICOM文件生成SOPInstance UID?
我正在开发一个系统,该系统将能够为PAC创建结构化报告. 显然,为了创建一个DICOM实例(包含报告数据的文件),我需要三个UID进行研究,系列和实例.研究和串联的uID必须与为创建报告的研究和系列相同.但是对于Sopinstanceuid,我需要生成新的UID. 我在像素文档中看到了getNewSOPInstanceUID方法,但是我不熟悉像素源.我需要算法或python源. 解决方案 我真的建议您 away 自己实施.如今,大多数语言确实提供了UUID库,不要重新发明轮子.尤其如果您要编写代码来提取Mac Adress,则可以非常复杂地编写 Portable c. YOUR_ORG_ROOT.CONVERTED_UUID 请注意您有64个字节(已经足够了,请参阅在这里)用于存储价值表示ui: 将UUID的十六进制符号转换为VR:UI定义([0-9.]+) 非常谨慎的修剪(您可以在此操作期间引入冗余) 选择一个短Org Root 带有\0(0
0 2023-11-12
编程技术问答社区
在C#中用fo-dicom操纵和转换CT图像的PixelData
对于某些测试,我试图操纵以DICOM格式存储的CT映像的PixelData元素,并用C#中的 cluerso oak diCom 将其写回文件中.经过一番研究,我发现我要处理的矩阵IS在byte -array中存储的Buffer> Buffer中.所以我写了以下代码: DicomFile ctFile = DicomFile.Open(image); var pixDat = ctFile.Dataset.Get(DicomTag.PixelData); for (int i = 0; i (DicomTag.PixelData, pixDat); ctFile.Save("new file folder"); 这是我的第一次尝试,我在AddOrUpdate命令上得
8 2023-10-30
编程技术问答社区
如何在C#中使用openDicom.net读取dicom标签值?
我正在使用opendicom.net读取DICOM标签: string tag = ""; string description = ""; string val_rep = ""; foreach (DataElement elementy in sq) { tag = elementy.Tag.ToString(); description = elementy.VR.Tag.GetDictionaryEntry().Description; val_rep = elementy.VR.ToString(); } 如何读取DICOM标签值? 解决方案 我假设sq是一个序列... 我没有与OpenDicom合作,但是我很确定您在那里做的事情不会产生您想要的结果. 您有一个单个标签,描述和val_rep变量,但是您使用foreach填充它们,这意味着序列中的最后一个datalement将是您检索的唯一值.您将通过使用: 实现相同的
8 2023-10-14
编程技术问答社区
没有固定属性列表的对象的Swagger Yaml模式定义
我正在借助Swagger实施API优先应用程序.要返回的最重要对象之一是DICOM对象,该对象返回具有灵活名称的属性集合,例如: { "00080005": {"vr":"CS","Value":["ISO_IR 100"]}, "00080020": {"vr":"DA","Value":["20160602"]}, "00080030": {"vr":"TM","Value":["171855.7490"]}, "00080050": {"vr":"SH","Value":["1234"]}, "00080090": {"vr":"PN","Value":[{"Alphabetic":"Parikh MD^Anush^M"}]} } 所以我不知道提前所有属性的名称(00080005、00080030等),尽管文件结构非常均匀. 我的具体问题是:此类JSON文档的架构定义是什么. 我尝试了以下方面没有成功的情况: definitions
4 2023-10-06
编程技术问答社区
存储承诺服务(推送模式):我如何将结果返回给我的SCU?
我计划实施存储承诺服务以验证先前发送到存储的文件是否安全存储. 我的体系结构非常简单明了,我的scu将一些辅助捕获图像发送到存储中,我想确保在删除它们之前安全存储它们. 我将采用推动模型,我想知道我需要实现哪些步骤/功能来完成服务 我理解的是 我需要向SOP类UID发布 n-action 请求 1.2.840.10008.1.20.1,并添加到请求中的事务标识符以及引用的SOP类UID列表 - 引用SOP 实例UID所引用的SOP实例UID是UID的UID 我以前发送到存储的次要捕获图像, 在我的情况下,引用的SOP类UID是SOAP类标识符 表示次要捕获图像 等待我的N action响应,看看N-Action请求是否成功 是否 以 n-event-Report的形式从存储中获取响应 但是什么时候?存储如何给我回馈 n事件报告以及结果?我的SCP AE是否实现了一些 SCP功能?或者我需要发出n事件请求以获取 n-event-Report? 解
4 2023-09-28
编程技术问答社区
存储承诺服务:为什么我真的需要一个真正的目的是什么?
我想知道为什么我真的需要承诺 c-store 命令; 我可以理解该提交是一种保证信息实际上是由存储负责的事实,并且存储承担责任,但是我想知道为什么不够安全,无法依靠响应状态? 我读了一些关于这一点的解释,但没有一个使我一路说服我.据我了解,基本上可能需要或更好地希望提交,因为您无法完全信任发送消息的系统. 听起来像:当您在数据库表中插入记录时,您需要验证是否真的插入了记录,因为您无法相信数据库引擎...看起来有些奇怪吗?如果我不信任数据库引擎,我将用一个可信赖的 替换它 任何人都可以对存储承诺服务的真正含义进行更详尽的解释? 解决方案 我将尝试通过我职业生涯中一直在研究的2个系统的示例来回答您的问题.因此,这些不是虚拟的例子,而是实用的相关案例. 零足迹查看器(2000年代初期,仍然有一些安装) 当此查看器收到图像时,它们根本不会复制到磁盘.相反,它们被保存在内存中并直接显示给用户.当观众关闭观众时,图像从收到它们的系统中消失了. c商店的
8 2023-09-28
编程技术问答社区
如何使用C#在SQL服务器中存储和检索DICOM文件
我的目标是将DICOM文件存储在SQL Server中,并使用一些ID存储DICOM文件,当用户想要该DICOM文件时,他可以使用其相应的ID从SQL Server下载.该文件在存储到服务器中以及从SQL Server检索时不应更改其原创性.我正在使用Varbinary(max)数据类型来存储DICOM文件的字节阵列中的SQL Server.我将DICOM文件的内存流转换为字节数组,然后将存储到SQL Server中: : using (MemoryStream memStream = new MemoryStream()) { using (FileStream fileStream = File.Open(txtDICOMFilePath.Text, FileMode.Open)) { // Copy the file stream to memory stream. fileStream.CopyTo(memStrea
4 2023-09-26
编程技术问答社区
从SPARQL查询结果中排除空白节点
我正在使用rdflib来查询语义DICOM本体论.我正在查询猫头鹰:从上述本体构建的图中的班级. rdflib返回包含空格节点的结果,我希望排除此类查询.我的查询 - from rdflib import Graph g = Graph() g.parse('dicom.owl') q = """SELECT ?c WHERE {?c rdf:type owl:Class}""" qres = g.query(q) dicom.owl是我收到的一些结果 - 如何修改查询以排除所有空白节点? 解决方案 from rdflib import Graph g = Graph() g.parse('dicom.owl') q = """SELECT ?c WHERE { ?c rdf:type owl:Class . FILTER (!isBlank(?c)) }""" qres = g.query(q) 看这个Sparql功能的家族: isiri
22 2023-09-08
编程技术问答社区
Matlab DICOM切片
i具有MATLAB中的矩阵的DICOM图像.我的问题是,如何在每个正交方向显示该图像的特定切片? 喜欢的视图切片x位于位置100,y = 0,z = 0 解决方案 如果您的矩阵为M,并且具有D尺寸(3,或者您有什么),并且您想绘制其中一个维度的1-D"切片",则: plot(squeeze(M(n1,n2, ...,:,...)); 其中n1,n2,...是维度x,y,...的位置,您要切片,操作员(:)是您要绘制的维度. 例如,给定5维矩阵M = rand(10,10,10,10,10),让我们在某些点附近的第4维(x = n1,y = n2,等等...) M=rand(10,10,10,10,10); n1=4; n2=7; n3=3; n5=5; plot(squeeze(M(n1,n2, n3, :, n5))); 如果切片为2-D,则可以使用IMShow或Imagesc显示2-D切片,例如显示2-ND和4-尺寸:
4 2023-09-04
编程技术问答社区
如何计算MPR的dicom切片之间的空间?
由于 MPR视图基于dicoms.我从一系列DICOM文件中制作了一个3D数组.我从 coronal 和矢状侧面展示它. My 3D array includes: - z = count of dicoms - c = column value for every dicoms - r = Row value for every dicoms 但是我有问题.当切片之间存在一些空间时,以这种方式制作图像不会显示正确的视图.因为我无法想到它们之间的模拟距离! 我不知道如何计算切片之间的空间?我想在切片之间添加额外的空间.例如,如果切片之间的空间为4.我必须添加4个时间z内切片. 我希望能达到我的平均值. 解决方案 diCom具有一个称为spacing的属性(0018,0088),该属性给出了两个相邻切片(垂直于图像平面)之间的距离,并且它也具有称为slice厚度(0018,0050)的属性(0018,0050)成像切片的厚度(图像平面存在于切片的中心
10 2023-09-04
编程技术问答社区
C#: 使用Silverlight FJCore库对JPEG图像进行12位精度的解码?
在我的C#Silverlight应用程序中,我尝试使用 fjcore 类库. 通常以12位精度压缩DICOM图像.当尝试使用原始FJCORE源代码解码此类映像时,我会得到一个例外,说"不支持的编解码器类型",因为在原始的FJCORE实现中,仅SOF0(基线DCT)和SOF2(渐进DCT)(渐进式DCT)是框架启动标记.支持的.如果我更改实现以接受SOF1标记(扩展顺序DCT)并以与SOF0帧相同的方式处理SOF1框架,则图像是解码的,但仅考虑了8位. . 使用修改后的FJCore库后,现在看起来像这样的典型的12位精度图像: 理想情况下,图像应该看起来像这样: 据我从FJCore实现中得知,图像精度记录在JPEGFRAME类中,但从未使用过.原始的FJCORE实现似乎仅完全支持具有8位精度的灰度图像. 我打算"拿起公牛",并尝试扩展自己以支持灰度图像的12位精度.但是在我这样做之前,我认为我应该在stackoverflow中提出一个问题,以查看是否有人遇到并解
2 2023-09-03
编程技术问答社区
为DICOM JPEG(RGB)应用窗宽和水平过滤器的正确的像素处理逻辑
我试图将寡妇宽度和水平过滤器应用于我从DICOM文件中提取的JPEG图像. 这是我用来处理RGB图像前示例的每个通道的逻辑I操纵红色通道,如Android 中的Render-Script中的下面的代码 示例代码我显示了如何操纵图像的红色通道. (我对绿色和蓝色通道也这样做) 它确实操纵了JPEG图像寡妇宽度和水平,但不确定是否正确操纵DICOM JPEG的方法是否正确,如果某些人知道正确操纵RGB JPEG窗口窗口宽度并使用正确的像素处理数学来级别,请帮助我,以帮助我一些结果(20%)与基于Windows的Dicomviewers有所不同(我知道窗口级别和宽度仅适用于单色图像,但是某些dicomviewers(例如" Showcase")它们确实在RGB上应用了此类过滤器) ) displayMin = (windowLevel- windowWidth/2); displayMax = (windowLevel+ windowWidth/2);
2 2023-08-11
编程技术问答社区
什么原因会导致不良的Dicom图像情节?
该常用X射线的DICOM文件可能是什么原因是什么: 使用的算法如下: 原始图像矩阵是3D: int [1:2014, 1:2014, 1:3] 110 51 99 113 52 101 111 53 102 110 ... 此RGB通过公式转换为灰度: gray = 0.3*mat[,,1] + 0.59*mat[,,2] + 0.11*mat[,,3] ; ,然后在指定颜色为: 后将其绘制. grey(0:64/64) 在哪里可能错误? 我正在使用ro.dicom package in r with函数: jj = readDICOMFile(fname, endian = "little", flipud = TRUE, DICM = TRUE, skipSequence = FALSE, pixelData = TRUE, warn = -1, debug = FALSE) 它返回a矩阵jj $ img的结构是: i
4 2023-08-11
编程技术问答社区