Mercurial > hg > orthanc
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 |