我创建了一个私有DICOM标记,我想知道是否可以使用此标记使用dicomwrite(或类似)在DICOM文件中存储结构,而不是在每个结构的DICOM标头内创建一个字段字段。
(比如保存患者姓名,但不使用char数据,我会使用double)
以下是一个例子:
Global.asax
提前谢谢大家,
答案 0 :(得分:1)
取决于" struct"意思是,这是你的选择。由于您希望使用私有标记,这意味着没有应用程序,但您的能够解释它,您可以选择技术上最合适的解决方案。基本上你的问题是"我应该使用我选择的DICOM工具包将值表示分配给我的私有属性?":
<强>序列:强> 有一个DICOM值表示&#34;序列&#34; (VR = SQ),允许您存储不同类型的属性列表。此VR最接近结构。序列可以包含任意数量的项目,每个项目具有相同顺序的相同属性。每个属性都有自己的VR,所以如果你的struct包含不同的数据类型(比如string,integer,float),这将是我的建议
多值属性: DICOM支持&#34;价值多重性&#34;的概念。这意味着单个属性可以包含多个由反斜杠分隔的值。由于VR是属性的属性,因此所有值必须具有相同的类型。如果我理解正确,你有一个浮点数列表,可以在一个字段中编码为双精度数组,VR = FD(=浮点双精度):0.001 \ 0.003 \ 1.234 ... 大多数工具包支持对属性的索引访问。
<强>&#34;斑点&#34;:强> 您可以使用VR = OB(其他字节)的属性,该属性也用于编码像素数据。它最多可包含4 GB的二进制数据。属性的长度告诉您属性的值包含多少字节。如果你只是想从/向结构复制内存,这将是一种方法,但显然它是类型安全性和编码正确性方面最薄弱的方法。您将失去确保这些属性的DICOM工具包的内置方法。
要添加私人属性,您必须
为元素编号指定奇数组编号和前缀(2个十六进制数字)的属性保留范围。 (例如,组= 0x0011,元素= 0x10xx)保留范围(0x0011,0x10xx) - (0x0011,0x10ff)。这是通过指定包含制造商名称的Private Creator DICOM标记来完成的。所以我怀疑不是
headerdicom.Private_0011_10xx_Creator = a;
应该阅读,例如。
headerdicom.Private_0011_10xx_Creator = "Gabs";
不确定如何在matlab中完成此操作。