comparison Core/DicomParsing/Internals/DicomImageDecoder.cpp @ 3744:accf1b60b108

accessing raw pixel data
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 12 Mar 2020 17:58:34 +0100
parents 2a170a8f1faf
children 795c9ca5eb91
comparison
equal deleted inserted replaced
3743:33c19a6643e1 3744:accf1b60b108
32 32
33 33
34 #include "../../PrecompiledHeaders.h" 34 #include "../../PrecompiledHeaders.h"
35 #include "DicomImageDecoder.h" 35 #include "DicomImageDecoder.h"
36 36
37 #include "../ParsedDicomFile.h"
38
37 39
38 /*========================================================================= 40 /*=========================================================================
39 41
40 This file is based on portions of the following project 42 This file is based on portions of the following project
41 (cf. function "DecodePsmctRle1()"): 43 (cf. function "DecodePsmctRle1()"):
82 #include "../../Images/Image.h" 84 #include "../../Images/Image.h"
83 #include "../../Images/ImageProcessing.h" 85 #include "../../Images/ImageProcessing.h"
84 #include "../../DicomFormat/DicomIntegerPixelAccessor.h" 86 #include "../../DicomFormat/DicomIntegerPixelAccessor.h"
85 #include "../ToDcmtkBridge.h" 87 #include "../ToDcmtkBridge.h"
86 #include "../FromDcmtkBridge.h" 88 #include "../FromDcmtkBridge.h"
87 #include "../ParsedDicomFile.h"
88 89
89 #if ORTHANC_ENABLE_PNG == 1 90 #if ORTHANC_ENABLE_PNG == 1
90 # include "../../Images/PngWriter.h" 91 # include "../../Images/PngWriter.h"
91 #endif 92 #endif
92 93
96 #include "../../Images/PamWriter.h" 97 #include "../../Images/PamWriter.h"
97 98
98 #include <boost/lexical_cast.hpp> 99 #include <boost/lexical_cast.hpp>
99 100
100 #include <dcmtk/dcmdata/dcdeftag.h> 101 #include <dcmtk/dcmdata/dcdeftag.h>
101 #include <dcmtk/dcmdata/dcfilefo.h>
102 #include <dcmtk/dcmdata/dcrleccd.h> 102 #include <dcmtk/dcmdata/dcrleccd.h>
103 #include <dcmtk/dcmdata/dcrlecp.h> 103 #include <dcmtk/dcmdata/dcrlecp.h>
104 #include <dcmtk/dcmdata/dcrlerp.h> 104 #include <dcmtk/dcmdata/dcrlerp.h>
105 105
106 #if ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1 106 #if ORTHANC_ENABLE_DCMTK_JPEG_LOSSLESS == 1
660 660
661 661
662 ImageAccessor* DicomImageDecoder::Decode(ParsedDicomFile& dicom, 662 ImageAccessor* DicomImageDecoder::Decode(ParsedDicomFile& dicom,
663 unsigned int frame) 663 unsigned int frame)
664 { 664 {
665 DcmDataset& dataset = *dicom.GetDcmtkObject().getDataset(); 665 if (dicom.GetDcmtkObject().getDataset() == NULL)
666 {
667 throw OrthancException(ErrorCode_InternalError);
668 }
669 else
670 {
671 return Decode(*dicom.GetDcmtkObject().getDataset(), frame);
672 }
673 }
674
675
676 ImageAccessor* DicomImageDecoder::Decode(DcmDataset& dataset,
677 unsigned int frame)
678 {
666 E_TransferSyntax syntax = dataset.getOriginalXfer(); 679 E_TransferSyntax syntax = dataset.getOriginalXfer();
667 680
668 /** 681 /**
669 * Deal with uncompressed, raw images. 682 * Deal with uncompressed, raw images.
670 * http://support.dcmtk.org/docs/dcxfer_8h-source.html 683 * http://support.dcmtk.org/docs/dcxfer_8h-source.html