我有一个DICOM图像,我正在使用C#读取并将其转换为16位图。创建位图但图像具有DICOM叠加。我想在创建最终的dicom位图时将叠加层刻录到位图中。我无法做到这一点。 有帮助吗?
一种方法是创建叠加数据的位图并合并2位图,但我也无法将叠加数据作为位图。 我已经捕获了二进制覆盖数据但是如何刻录成位图?
由于
答案 0 :(得分:5)
有两种类型的叠加层:
1) Burned-In:是原始的。它使用较高位的单色像素数据(在像素范围之外,例如,当BitsAllocated为16且BitsStored为12时,每个像素有4个未使用的位(位12..15),可用于我不确定签名图像是如何完成的 请注意,没有标记指定图像是否具有此类叠加。 (有一个名为Burned In Annnotation的标签(0028,0301),但它意味着别的东西)。
2)覆盖模块:一系列标签(组0x600xx)保留用于覆盖。每个这样的组包含几个标签以及每像素1位的位图,其中1
表示存在叠加
请注意,它不是标准的GDI位图,线条未在DWORD边界上对齐! (我不确定它是否使用相同的位字节序。)
DICOM图像可以有多个(最多16个)这样的叠加。有关确切规格,请参阅标准的第3部分。
答案 1 :(得分:2)
DICOM叠加层只是一个位图蒙版。渲染图像时,我建议只遍历像素,并在将像素设置为白色的情况下。
对于灰度图像,您必须检查光度解释,以查看它是MONOCHROME1还是MONOCHROME2。然后,您必须检查分配的位以查看最大像素值是什么,并强制将覆盖设置为该值的像素值(如果是MONOCHROME1图像)。对于MONOCHROME2图像,您必须将启用了覆盖的像素设置为最小像素值。
对于彩色图像,您可以将像素更改为特定颜色,或者根据需要将其更改为白色以显示叠加层。
答案 2 :(得分:2)
叠加平面始终为每像素1位,其中Overlay Bits Allocated
为1且Overlay Bits Position (60XX, 0102)
始终为0.一位叠加数据与Pixel Data
元素和Overlay Data (60XX, 3000)
分开编码element用于存储数据。覆盖数据元素的值表示是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)
应与Bits Allocated (0028, 0100)
的Image Pixel module属性具有相同的值。 Overlay Bits Allocated
的值大于1表示叠加数据嵌入在像素数据中。
甚至组(6000-601F,eeee)用于叠加平面编码,数据集每个图像最多可以有16个叠加。