6#include "slideio/drivers/dcm/dcm_api_def.hpp"
7#include "slideio/base/slideio_enums.hpp"
10#include <opencv2/core.hpp>
12#include "slideio/base/slideio_enums.hpp"
13#include "slideio/base/resolution.hpp"
16#pragma warning( push )
17#pragma warning(disable: 4251)
27 enum class EPhotoInterpetation
46 class SLIDEIO_DCM_EXPORTS DCMFile
49 DCMFile(
const std::string& filePath);
53 int getWidth()
const {
57 int getHeight()
const {
61 int getNumSlices()
const {
65 const std::string& getFilePath()
const {
69 const std::string& getSeriesUID()
const {
73 int getInstanceNumber()
const {
74 return m_instanceNumber;
77 int getNumChannels()
const {
81 const std::string& getSeriesDescription()
const {
82 return m_seriesDescription;
85 DataType getDataType()
const {
89 bool getPlanarConfiguration()
const {
90 return m_planarConfiguration;
93 EPhotoInterpetation getPhotointerpretation()
const {
94 return m_photoInterpretation;
101 const std::string& getModality()
const {
106 void readPixelValues(std::vector<cv::Mat>& frames,
int startFrame = 0,
int numFrames = 1);
108 bool isWSIFile()
const {
112 std::string getMetadata();
113 double getMagnification()
const {
114 return m_magnification;
116 const Resolution& getResolution()
const {
119 static bool isDicomDirFile(
const std::string& filePath);
120 static bool isWSIFile(
const std::string& filePath);
122 const cv::Size& getTileSize()
const {
126 int getNumFrames()
const {
129 bool getTileRect(
int tileIndex, cv::Rect& tileRect)
const;
130 bool readFrame(
int tileIndex, cv::OutputArray tileRaster);
131 double getScale()
const {
134 void setScale(
double scale) {
137 bool isTiled()
const {
140 const std::string& getImageType()
const {
143 bool isAuxImage()
const {
144 return m_imageType !=
"VOLUME";
147 void readFrames(std::vector<cv::Mat>& frames,
int startFrame,
int numFrames);
148 void extractPixelsWholeFileDecompression(std::vector<cv::Mat>& mats,
int startFrame,
int numFrames);
149 std::shared_ptr<DicomImage> createImage(
int firstSlice = 0,
int numSlices = 1);
150 void initPhotoInterpretaion();
151 void defineCompression();
152 DcmDataset* getDataset()
const;
153 DcmDataset* getValidDataset()
const;
154 bool getIntTag(
const DcmTagKey& tag,
int& value,
int pos = 0)
const;
155 bool getStringTag(
const DcmTagKey& tag, std::string& value)
const;
156 bool getStringTag(
const DcmTagKey& tag,
int index, std::string& value)
const;
157 bool getDblTag(
const DcmTagKey& tag,
double& value,
double defaultValue);
159 std::string m_filePath;
160 std::shared_ptr<DcmFileFormat> m_file;
164 int m_instanceNumber = -1;
165 std::string m_seriesUID;
166 std::string m_seriesDescription;
167 int m_numChannels = 0;
168 DataType m_dataType = DataType::DT_Unknown;
169 bool m_planarConfiguration =
false;
170 EPhotoInterpetation m_photoInterpretation = EPhotoInterpetation::PHIN_UNKNOWN;
171 double m_windowCenter = -1;
172 double m_windowWidth = -1;
173 double m_rescaleSlope = 1.;
174 double m_rescaleIntercept = 0.;
175 bool m_useWindowing =
false;
176 bool m_useRescaling =
false;
178 bool m_decompressWholeFile =
false;
179 int m_bitsAllocated = 0;
180 std::string m_modality;
181 bool m_WSISlide =
false;
183 cv::Size m_tileSize = {0, 0};
184 double m_magnification = 0.;
185 Resolution m_resolution = { 0., 0. };
187 bool m_bTiled =
false;
188 std::string m_imageType;
193#pragma warning( pop )
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12