代码之家  ›  专栏  ›  技术社区  ›  Gina Marano

将jpg图像作为jpg图像添加到DICOM文件

  •  1
  • Gina Marano  · 技术社区  · 6 年前

    很好的一天,

    我试过:

    ...
    data.Add(DicomTag.TransferSyntaxUID, DicomUID.JPEGLSLossless);
    
    data.Add(DicomTag.PhotometricInterpretation, PhotometricInterpretation.Rgb);
    data.Add(DicomTag.SamplesPerPixel, "3");
    data.Add(DicomTag.PlanarConfiguration, "0");
    data.Add(DicomTag.BitsAllocated, (ushort)8);
    data.Add(DicomTag.BitsStored, (ushort)8);
    data.Add(DicomTag.HighBit, (ushort)7);
    data.Add(DicomTag.PixelRepresentation, "0");
    data.Add(DicomTag.BurnedInAnnotation, "NO");
    data.Add(DicomTag.LossyImageCompression, "01");
    data.Add(DicomTag.LossyImageCompressionRatio, "10");
    data.Add(DicomTag.LossyImageCompressionMethod, "ISO_10918_1");
    ...
    
    DicomPixelData pixelData = DicomPixelData.Create(data, true);
    
    using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(imageFilename))
    {
        byte[] pixels = GetPixels(bitmap);
        MemoryByteBuffer buffer = new MemoryByteBuffer(pixels);
        pixelData.AddFrame(buffer);
    }
    
    and
    
    using (Image image = Image.FromFile(imageFilename))
    {
        byte[] pixels = ImageToByteArray(image);
        MemoryByteBuffer buffer = new MemoryByteBuffer(pixels);
        pixelData.AddFrame(buffer);
    }
    

    由于DICOM文件的大小越来越大,它似乎将图像存储为BMP格式。

    我尝试了DicomTag.TransferSyntaxUID的不同组合:

    data.Add(DicomTag.TransferSyntaxUID, DicomUID.JPEGLSLossless);
    data.Add(DicomTag.TransferSyntaxUID, DicomUID.JPEGBaseline1);
    data.Add(DicomTag.TransferSyntaxUID, DicomUID.JPEGLosslessNonHierarchical14);
    

    (注:这也是在fo dicom用户组中提出的)

    1 回复  |  直到 6 年前
        1
  •  3
  •   Gina Marano    6 年前

    我们找到了答案:

    DicomDataset data = new DicomDataset() { };
    

    DicomDataset data = new DicomDataset(DicomTransferSyntax.JPEGProcess1) { };
    

    https://github.com/fo-dicom/fo-dicom/issues/553

    推荐文章