我有一个DICOM图像,我正在使用C#读取它,并将其转换为16位位图。位图被创建,但图像具有DICOM覆盖。我想在创建最终的dicom位图时将覆盖图刻录到位图中。我无法做到这一点。有什么帮助吗?
一种方法是创建一个覆盖数据的位图,并合并2个位图,但我也不能将覆盖数据作为位图。我已经捕获了二进制覆盖数据,但如何刻录成位图?
谢谢
发布于 2011-02-01 08:44:00
覆盖有两种类型:
1) 烧录:为原版。它使用单色像素数据的高位(超出像素范围),例如,当BitsAllocated为16且BitsStored为12时,每像素有4个未使用的位(位12..15),可用于覆盖。我不确定签名图像是如何做到的。
请注意,没有指定图像是否具有此类覆盖的标记。(在Annnotation (0028,0301)中有一个名为Burned的标签,但它有其他含义)。
2) Overlay模块:预留一定范围的标签(0x600xx组)给Overlay。每个这样的组包含几个标签以及一个每像素1位的位图,其中1表示存在覆盖。
请注意,它不是标准的GDI位图,线条不会在DWORD边界上对齐!(我不确定它是否使用相同的字节顺序。)
一个DICOM图像可以有多个(最多16?)这样的覆盖。有关确切的规范,请参阅标准的第3部分。
发布于 2011-01-31 22:57:29
DICOM覆盖图只是一个位图蒙版。在渲染图像时,我建议只遍历像素,在将像素设置为白色的情况下。
在灰度图像的情况下,您必须检查光度学解释以查看它是MONOCHROME1还是MONOCHROME2。然后,您必须检查分配的位,以了解最大像素值是多少,并在MONOCHROME1图像的情况下强制将覆盖设置为该值的像素值。在MONOCHROME2图像的情况下,您必须将启用覆盖的像素设置为最小像素值。
对于彩色图像,您可以将像素更改为特定颜色,或者更改为白色(如果需要)以显示叠加。
发布于 2015-03-24 05:51:51
叠加平面始终为每像素1位,其中Overlay Bits Allocated为1,Overlay Bits Position (60XX, 0102)始终为0。一位覆盖数据与Pixel Data元素分开编码,Overlay Data (60XX, 3000)元素用于存储数据。覆盖数据元素的值表示为OW。然而,OB可用于显式VR编码。
根据PS 3.5 of DICOM standard section 8.1.2,“覆盖数据被编码为单个覆盖平面的比特的直接连接,其中覆盖平面的第一个比特被编码在最低有效比特中,紧随其后的是覆盖平面的下一个比特在下一个最高有效比特中。当覆盖数据跨越OW情况下的字边界或OB情况下的字节边界时,应分别在下一个字或字节中继续对其进行编码,从最低有效位到最高有效位。
2字节字的字节顺序(OW的VR)由编码中使用的字节顺序决定。因此,在行边界没有使用填充,并且它是从左到右和从上到下编码的,一次一行,其中覆盖位1是覆盖平面的第一位(左上像素)。
形式上,覆盖数据被允许嵌入Pixel Data (7FE0, 0010)的未使用的位中,并且Overlay Bit Position (60XX, 0102)被用来指示存储覆盖数据的像素数据中的未使用的位。在这种类型的编码中,Overlay Bits Allocated (60XX, 0100)应该与Image Pixel module的Bits Allocated (0028, 0100)属性具有相同的值。Overlay Bits Allocated的值大于1表示覆盖数据嵌入在像素数据中。
偶数组(6000-601F,eeee)用于覆盖平面编码,每个数据集最多可以有16个覆盖。
https://stackoverflow.com/questions/4847166
复制相似问题