Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Toolbox/SortedFrames.h @ 1642:5cc589bfb385
lazy computation of DicomInstanceParameters::GetImageInformation()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Nov 2020 17:21:23 +0100 |
parents | 960bb5fcc440 |
children | 882e2253a90e |
rev | line source |
---|---|
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public License |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
15 * Lesser General Public License for more details. |
1596
4fb8fdf03314
removed annoying whitespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1571
diff
changeset
|
16 * |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
18 * License along with this program. If not, see |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
19 * <http://www.gnu.org/licenses/>. |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 **/ |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 #pragma once |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 |
1630
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
25 #include "CoordinateSystem3D.h" |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 #include "LinearAlgebra.h" |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 namespace OrthancStone |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 class SortedFrames : public boost::noncopyable |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 private: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 class Instance : public boost::noncopyable |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 private: |
1630
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
36 Orthanc::DicomMap tags_; |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
37 std::string sopInstanceUid_; |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
38 unsigned int numberOfFrames_; |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
39 CoordinateSystem3D geometry_; |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
40 bool monochrome1_; |
1631
960bb5fcc440
SortedFrames::GetFrameGeometry()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
41 Vector frameOffsets_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 public: |
1571 | 44 explicit Instance(const Orthanc::DicomMap& tags); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 const Orthanc::DicomMap& GetTags() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 return tags_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 const std::string& GetSopInstanceUid() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 return sopInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 unsigned int GetNumberOfFrames() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 return numberOfFrames_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 |
1630
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
61 const CoordinateSystem3D& GetGeometry() const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 { |
1630
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
63 return geometry_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
66 bool IsMonochrome1() const |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
67 { |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
68 return monochrome1_; |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
69 } |
1631
960bb5fcc440
SortedFrames::GetFrameGeometry()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
70 |
960bb5fcc440
SortedFrames::GetFrameGeometry()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
71 double GetFrameOffset(unsigned int frame) const; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 }; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 struct Frame |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 private: |
1485 | 77 const Instance* instance_; |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
78 unsigned int frameNumber_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 public: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 Frame(const Instance& instance, |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
82 unsigned int frameNumber); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 const Instance& GetInstance() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 { |
1485 | 86 return *instance_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
89 unsigned int GetFrameNumberInInstance() const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
91 return frameNumber_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 }; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
95 |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
96 // Maps "SOPInstanceUID" to an index in "instances_" |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
97 typedef std::map<std::string, size_t> InstancesIndex; |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
98 |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
99 // Maps pair "(SOPInstanceUID, FrameNumber)" to an index in |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
100 // "frames_" (only once "Sort()" is called) |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
101 typedef std::map<std::pair<std::string, unsigned int>, size_t> FramesIndex; |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
102 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 std::string studyInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
104 std::string seriesInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 std::vector<Instance*> instances_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 std::vector<Frame> frames_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 bool sorted_; |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
108 InstancesIndex instancesIndex_; |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
109 FramesIndex framesIndex_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
110 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
111 const Instance& GetInstance(size_t instanceIndex) const; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
112 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
113 const Frame& GetFrame(size_t frameIndex) const; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 void AddFramesOfInstance(std::set<size_t>& remainingInstances, |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
116 size_t instanceIndex); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
118 void SortUsingIntegerTag(std::set<size_t>& remainingInstances, |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 const Orthanc::DicomTag& tag); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 void SortUsingSopInstanceUid(std::set<size_t>& remainingInstances); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
123 void SortUsing3DLocation(std::set<size_t>& remainingInstances); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
124 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 public: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 SortedFrames() : |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 sorted_(true) |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 |
1479
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
131 ~SortedFrames() |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
132 { |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
133 Clear(); |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
134 } |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
135 |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
136 void Clear(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 const std::string& GetStudyInstanceUid() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 return studyInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 const std::string& GetSeriesInstanceUid() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 return seriesInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 void AddInstance(const Orthanc::DicomMap& tags); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 size_t GetInstancesCount() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 return instances_.size(); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
155 const Orthanc::DicomMap& GetInstanceTags(size_t instanceIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
157 return GetInstance(instanceIndex).GetTags(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
160 const std::string& GetSopInstanceUid(size_t instanceIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
162 return GetInstance(instanceIndex).GetSopInstanceUid(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 |
1630
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
165 const CoordinateSystem3D& GetInstanceGeometry(size_t instanceIndex) const |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
166 { |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
167 return GetInstance(instanceIndex).GetGeometry(); |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
168 } |
78509230f0d7
SortedFrames sharing code with CoordinateSystem3D
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1602
diff
changeset
|
169 |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
170 bool LookupSopInstanceUid(size_t& instanceIndex, |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
171 const std::string& sopInstanceUid) const; |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
172 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 bool IsSorted() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 return sorted_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 size_t GetFramesCount() const; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
180 const Orthanc::DicomMap& GetFrameTags(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
182 return GetFrame(frameIndex).GetInstance().GetTags(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
184 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
185 const std::string& GetFrameSopInstanceUid(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
186 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
187 return GetFrame(frameIndex).GetInstance().GetSopInstanceUid(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
189 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
190 unsigned int GetFrameSiblingsCount(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
191 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
192 return GetFrame(frameIndex).GetInstance().GetNumberOfFrames(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
194 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
195 unsigned int GetFrameNumberInInstance(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
196 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
197 return GetFrame(frameIndex).GetFrameNumberInInstance(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
198 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
199 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
200 bool IsFrameMonochrome1(size_t frameIndex) const |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
201 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
202 return GetFrame(frameIndex).GetInstance().IsMonochrome1(); |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
203 } |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
204 |
1631
960bb5fcc440
SortedFrames::GetFrameGeometry()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
205 CoordinateSystem3D GetFrameGeometry(size_t frameIndex) const; |
960bb5fcc440
SortedFrames::GetFrameGeometry()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1630
diff
changeset
|
206 |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
207 bool LookupFrame(size_t& frameIndex, |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
208 const std::string& sopInstanceUid, |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
209 unsigned int frameNumber) const; |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
210 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
211 void Sort(); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
212 }; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 } |