SlideIO 2.9.0
Open-source library for reading of medical images
Loading...
Searching...
No Matches
otscene.hpp
1// This file is part of slideio project.
2// It is subject to the license terms in the LICENSE file found in the top-level directory
3// of this distribution and at http://slideio.com/license.html.
4#pragma once
5
6#include "slideio/drivers/ome-tiff/ot_api_def.hpp"
7#include "slideio/core/cvscene.hpp"
8#include "slideio/drivers/ome-tiff/otscene.hpp"
9#include "slideio/imagetools/tifftools.hpp"
10#include "slideio/core/tools/tilecomposer.hpp"
11#include "slideio/drivers/ome-tiff/otstructs.hpp"
12#include "slideio/drivers/ome-tiff/tiffdata.hpp"
13#include "slideio/imagetools/tifffiles.hpp"
14#include "slideio/drivers/ome-tiff/otdimensions.hpp"
15#include <tinyxml2.h>
16
17#if defined(_MSC_VER)
18#pragma warning( push )
19#pragma warning(disable: 4251)
20#endif
21
22namespace slideio
23{
24 namespace ometiff
25 {
26 struct ImageData;
27
28 class SLIDEIO_OMETIFF_EXPORTS OTScene : public CVScene, public Tiler
29 {
30 public:
31 explicit OTScene(const ImageData& filePath, int sceneIndex, const std::string& driverId);
32 int getNumChannels() const override;
33 cv::Rect getRect() const override;
34 int findZoomLevel(double zoom) const;
35 // Tiler methods
36 int getTileCount(void* userData) override;
37 bool getTileRect(int tileIndex, cv::Rect& tileRect, void* userData) override;
38 bool readTile(int tileIndex, const std::vector<int>& channelIndices, cv::OutputArray tileRaster,
39 void* userData) override;
40 void initializeBlock(const cv::Size& blockSize, const std::vector<int>& channelIndices, cv::OutputArray output) override;
41 std::string getChannelName(int channel) const override;
42 void readResampledBlockChannelsEx(const cv::Rect& blockRect, const cv::Size& blockSize,
43 const std::vector<int>& componentIndices, int zSliceIndex, int tFrameIndex,
44 cv::OutputArray output) override;
45 void readResampledLevelBlockChannelsEx(int level, const cv::Rect& levelRect,
46 const cv::Size& blockSize, const std::vector<int>& channelIndices,
47 int zSliceIndex, int tFrameIndex, cv::OutputArray output) override;
48 std::string getFilePath() const override;
49 int getSceneIndex() const override { return m_sceneIndex; }
50 const std::string& getDriverId() const override {
51 return m_driverId;
52 }
53 std::string getName() const override;
54 DataType getChannelDataType(int channel) const override;
55 Resolution getResolution() const override;
56 double getMagnification() const override;
57 Compression getCompression() const override;
58 int getNumZSlices() const override;
59 int getNumTFrames() const override;
60 int getNumTiffFiles() const { return m_files.getNumberOfOpenFiles(); }
61 int getNumTiffDataItems() const { return static_cast<int>(m_tiffData.size()); }
62 const TiffData& getTiffData(int index) const { return m_tiffData[index]; }
63 double getZSliceResolution() const override { return m_zResolution; }
64 double getTFrameResolution() const override { return m_tResolution; }
65 private:
66 void extractImagePyramids();
67 void initialize();
68 void initializeChannelAttributes(tinyxml2::XMLElement* pixels);
69 void extractMagnificationFromMetadata();
70 void extractTiffData(tinyxml2::XMLElement* pixels);
71 void extractImageIndex();
72 LevelInfo extractLevelInfo(const TiffDirectory& dir, int index) const;
73 void collectTiffDataIndices(std::vector<int> channelIndices, int zSliceIndex, int tFrameIndex,
74 std::vector<int>& tiffDataIndices) const;
75 private:
76 int m_numChannels = 0;
77 std::vector<std::string> m_channelNames;
78 tinyxml2::XMLElement* m_imageXml;
79 std::shared_ptr<tinyxml2::XMLDocument> m_imageDoc;
80 std::string m_imageId;
81 std::vector<TiffData> m_tiffData;
82 std::string m_dimensionOrder;
83 DataType m_dataType = DataType::DT_Unknown;
84 int m_numZSlices = 0;
85 int m_numTFrames = 0;
86 cv::Size m_imageSize;
87 bool m_bigEndian = false;
88 std::string m_imageName;
89 std::string m_filePath;
90 Compression m_compression = Compression::Unknown;
91 Resolution m_resolution = {};
92 double m_magnification = 0;
93 int m_imageIndex = -1;
94 TIFFFiles m_files;
95 double m_zResolution = 0.0;
96 double m_tResolution = 0.0;
97 int m_sceneIndex = -1;
98 std::string m_driverId;
99 };
100 }
101}
102
103#if defined(_MSC_VER)
104#pragma warning( pop )
105#endif
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12