Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Toolbox/SortedFrames.h @ 1602:b2941196cabf
SortedFrames::LookupFrame()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 28 Oct 2020 16:35:45 +0100 |
parents | b253b79906fa |
children | 78509230f0d7 |
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 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 #include "LinearAlgebra.h" |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 namespace OrthancStone |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 class SortedFrames : public boost::noncopyable |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 private: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 class Instance : public boost::noncopyable |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 private: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 bool hasPosition_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 Orthanc::DicomMap tags_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 std::string sopInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 unsigned int numberOfFrames_; |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
39 Vector normal_; // Only used in "Sort()" |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
40 Vector position_; // Only used in "Sort()" |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
41 bool monochrome1_; |
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 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 bool HasPosition() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 return hasPosition_; |
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 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 const Vector& GetNormal() const; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 const Vector& GetPosition() const; |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
69 |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
70 bool IsMonochrome1() const |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
71 { |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
72 return monochrome1_; |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
73 } |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 }; |
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 struct Frame |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 private: |
1485 | 79 const Instance* instance_; |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
80 unsigned int frameNumber_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 public: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 Frame(const Instance& instance, |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
84 unsigned int frameNumber); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 const Instance& GetInstance() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 { |
1485 | 88 return *instance_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 } |
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 unsigned int GetFrameNumberInInstance() const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
93 return frameNumber_; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 }; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
97 |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
98 // Maps "SOPInstanceUID" to an index in "instances_" |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
99 typedef std::map<std::string, size_t> InstancesIndex; |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
100 |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
101 // Maps pair "(SOPInstanceUID, FrameNumber)" to an index in |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
102 // "frames_" (only once "Sort()" is called) |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
103 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
|
104 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 std::string studyInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 std::string seriesInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 std::vector<Instance*> instances_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
108 std::vector<Frame> frames_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
109 bool sorted_; |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
110 InstancesIndex instancesIndex_; |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
111 FramesIndex framesIndex_; |
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 Instance& GetInstance(size_t instanceIndex) const; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
115 const Frame& GetFrame(size_t frameIndex) const; |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
116 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 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
|
118 size_t instanceIndex); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 void SortUsingIntegerTag(std::set<size_t>& remainingInstances, |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 const Orthanc::DicomTag& tag); |
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 SortUsingSopInstanceUid(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 void SortUsing3DLocation(std::set<size_t>& remainingInstances); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 public: |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 SortedFrames() : |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 sorted_(true) |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 |
1479
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
133 ~SortedFrames() |
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 Clear(); |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
136 } |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
137 |
5e3cfe87a873
SortedFrames::Clear()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1478
diff
changeset
|
138 void Clear(); |
1478
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 const std::string& GetStudyInstanceUid() const |
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 return studyInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 } |
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 const std::string& GetSeriesInstanceUid() const |
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 return seriesInstanceUid_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 } |
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 void AddInstance(const Orthanc::DicomMap& tags); |
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 size_t GetInstancesCount() const |
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 return instances_.size(); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 } |
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 const Orthanc::DicomMap& GetInstanceTags(size_t instanceIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
159 return GetInstance(instanceIndex).GetTags(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 } |
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 const std::string& GetSopInstanceUid(size_t instanceIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
164 return GetInstance(instanceIndex).GetSopInstanceUid(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 } |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 |
1599
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
167 bool LookupSopInstanceUid(size_t& instanceIndex, |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
168 const std::string& sopInstanceUid) const; |
73cd85d7da6a
SortedFrames::LookupSopInstanceUid()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1598
diff
changeset
|
169 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 bool IsSorted() const |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 { |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 return sorted_; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 } |
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 size_t GetFramesCount() const; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
177 const Orthanc::DicomMap& GetFrameTags(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
179 return GetFrame(frameIndex).GetInstance().GetTags(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 } |
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 const std::string& GetFrameSopInstanceUid(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
184 return GetFrame(frameIndex).GetInstance().GetSopInstanceUid(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
185 } |
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 unsigned int GetFrameSiblingsCount(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
189 return GetFrame(frameIndex).GetInstance().GetNumberOfFrames(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
190 } |
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 unsigned int GetFrameNumberInInstance(size_t frameIndex) const |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
194 return GetFrame(frameIndex).GetFrameNumberInInstance(); |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
195 } |
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 bool IsFrameMonochrome1(size_t frameIndex) const |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
198 { |
1600
b253b79906fa
clarifying variable names: frameIndex vs numberIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1599
diff
changeset
|
199 return GetFrame(frameIndex).GetInstance().IsMonochrome1(); |
1490
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
200 } |
5d892f5dd9c4
SortedFrames::IsFrameMonochrome1()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1485
diff
changeset
|
201 |
1602
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
202 bool LookupFrame(size_t& frameIndex, |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
203 const std::string& sopInstanceUid, |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
204 unsigned int frameNumber) const; |
b2941196cabf
SortedFrames::LookupFrame()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1600
diff
changeset
|
205 |
1478
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 void Sort(); |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 }; |
fab6c6e795a3
Framework/Toolbox/SortedFrames.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 } |