Mercurial > hg > orthanc
annotate OrthancFramework/Sources/Images/ImageProcessing.h @ 5485:48b8dae6dc77
upgrade to year 2024
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 04 Jan 2024 15:10:42 +0100 |
parents | 0ea402b4d901 |
children | f7adfb22e20e |
rev | line source |
---|---|
853 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
863
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
5485
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5185
diff
changeset
|
5 * Copyright (C) 2017-2024 Osimis S.A., Belgium |
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5185
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
853 | 7 * |
8 * This program is free software: you can redistribute it and/or | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
11 * the License, or (at your option) any later version. |
853 | 12 * |
13 * This program is distributed in the hope that it will be useful, but | |
14 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
16 * Lesser General Public License for more details. |
853 | 17 * |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
19 * License along with this program. If not, see |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4083
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
853 | 21 **/ |
22 | |
23 | |
24 #pragma once | |
25 | |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
26 #include "../OrthancFramework.h" |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
27 |
853 | 28 #include "ImageAccessor.h" |
4056 | 29 |
3258 | 30 #include <vector> |
863 | 31 #include <stdint.h> |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
32 #include <boost/noncopyable.hpp> |
863 | 33 |
853 | 34 namespace Orthanc |
35 { | |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
36 class ORTHANC_PUBLIC ImageProcessing : public boost::noncopyable |
853 | 37 { |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
38 public: |
4056 | 39 class ORTHANC_PUBLIC ImagePoint |
3258 | 40 { |
4300 | 41 private: |
3258 | 42 int32_t x_; |
43 int32_t y_; | |
44 | |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
45 public: |
4300 | 46 ImagePoint(int32_t x, |
47 int32_t y); | |
3258 | 48 |
4300 | 49 int32_t GetX() const; |
50 | |
51 int32_t GetY() const; | |
3265
59a184cbb596
ImagePoint::Set + GetDistanceTo
Alain Mazy <alain@mazy.be>
parents:
3258
diff
changeset
|
52 |
4300 | 53 void Set(int32_t x, int32_t y); |
3265
59a184cbb596
ImagePoint::Set + GetDistanceTo
Alain Mazy <alain@mazy.be>
parents:
3258
diff
changeset
|
54 |
4300 | 55 void ClipTo(int32_t minX, |
56 int32_t maxX, | |
57 int32_t minY, | |
58 int32_t maxY); | |
3372 | 59 |
3265
59a184cbb596
ImagePoint::Set + GetDistanceTo
Alain Mazy <alain@mazy.be>
parents:
3258
diff
changeset
|
60 double GetDistanceTo(const ImagePoint& other) const; |
3565
2999a6e9456b
ImageProcessing::ImagePoint::GetDistanceToLine
Alain Mazy <alain@mazy.be>
parents:
3550
diff
changeset
|
61 |
4300 | 62 double GetDistanceToLine(double a, |
63 double b, | |
64 double c) const; // where ax + by + c = 0 is the equation of the line | |
3258 | 65 }; |
66 | |
4872
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
67 class ORTHANC_PUBLIC IPolygonFiller : public boost::noncopyable |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
68 { |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
69 public: |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
70 virtual ~IPolygonFiller() |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
71 { |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
72 } |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
73 |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
74 virtual void Fill(int y, |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
75 int x1, |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
76 int x2) = 0; |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
77 }; |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
78 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
79 static void Copy(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
80 const ImageAccessor& source); |
853 | 81 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
82 static void Convert(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
83 const ImageAccessor& source); |
854
ff530685e46a
fast version of image copy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
853
diff
changeset
|
84 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
85 static void ApplyWindowing_Deprecated(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
86 const ImageAccessor& source, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
87 float windowCenter, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
88 float windowWidth, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
89 float rescaleSlope, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
90 float rescaleIntercept, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
91 bool invert); |
3548
e1ce68692069
ImageProcessing::ApplyWindowing
Alain Mazy <alain@mazy.be>
parents:
3547
diff
changeset
|
92 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
93 static void Set(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
94 int64_t value); |
863 | 95 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
96 static void Set(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
97 uint8_t red, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
98 uint8_t green, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
99 uint8_t blue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
100 uint8_t alpha); |
2089
7a969f235adf
PixelFormat_BGRA32
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
101 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
102 static void Set(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
103 uint8_t red, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
104 uint8_t green, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
105 uint8_t blue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
106 ImageAccessor& alpha); |
3547
dabe17e23e23
Copy RGBA to BGRA & Set with alpha
Alain Mazy <alain@mazy.be>
parents:
3545
diff
changeset
|
107 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
108 static void ShiftRight(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
109 unsigned int shift); |
863 | 110 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
111 static void ShiftLeft(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
112 unsigned int shift); |
3545 | 113 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
114 static void GetMinMaxIntegerValue(int64_t& minValue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
115 int64_t& maxValue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
116 const ImageAccessor& image); |
2415
7e217a1cc63f
PixelFormat_Float32
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2281
diff
changeset
|
117 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
118 static void GetMinMaxFloatValue(float& minValue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
119 float& maxValue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
120 const ImageAccessor& image); |
863 | 121 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
122 static void AddConstant(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
123 int64_t value); |
863 | 124 |
2488
345725b9350c
back to rounding to fix integration tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
125 // "useRound" is expensive |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
126 static void MultiplyConstant(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
127 float factor, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
128 bool useRound); |
863 | 129 |
3682
5f64c866108a
merging implementations of ImageProcessing::ShiftScale() and ApplyWindowing()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
130 // Computes "(x + offset) * scaling" inplace. "useRound" is expensive. |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
131 static void ShiftScale(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
132 float offset, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
133 float scaling, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
134 bool useRound); |
2489
e91bab2d8c75
Bresenham's line algorithm
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2488
diff
changeset
|
135 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
136 static void ShiftScale(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
137 const ImageAccessor& source, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
138 float offset, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
139 float scaling, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
140 bool useRound); |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
141 |
4079
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
142 // Computes "x * scaling + offset" inplace. "useRound" is expensive. |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
143 static void ShiftScale2(ImageAccessor& image, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
144 float offset, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
145 float scaling, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
146 bool useRound); |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
147 |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
148 static void ShiftScale2(ImageAccessor& target, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
149 const ImageAccessor& source, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
150 float offset, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
151 float scaling, |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
152 bool useRound); |
73c22208272f
ImageProcessing::ShiftScale2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
153 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
154 static void Invert(ImageAccessor& image); |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
155 |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
156 static void Invert(ImageAccessor& image, int64_t maxValue); |
3690
a9ce35d67c3c
implementation of "/instances/.../rendered" for grayscale images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3683
diff
changeset
|
157 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
158 static void DrawLineSegment(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
159 int x0, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
160 int y0, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
161 int x1, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
162 int y1, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
163 int64_t value); |
3227 | 164 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
165 static void DrawLineSegment(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
166 int x0, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
167 int y0, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
168 int x1, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
169 int y1, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
170 uint8_t red, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
171 uint8_t green, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
172 uint8_t blue, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
173 uint8_t alpha); |
2489
e91bab2d8c75
Bresenham's line algorithm
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2488
diff
changeset
|
174 |
4872
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
175 static void FillPolygon(IPolygonFiller& filler, |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
176 const std::vector<ImagePoint>& points); |
b1556cefa5c6
reimplementation from scratch of ImageProcessing::FillPolygon()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4870
diff
changeset
|
177 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
178 static void FillPolygon(ImageAccessor& image, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
179 const std::vector<ImagePoint>& points, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
180 int64_t value); |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
181 |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
182 static void Resize(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
183 const ImageAccessor& source); |
3258 | 184 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
185 static ImageAccessor* Halve(const ImageAccessor& source, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
186 bool forceMinimalPitch); |
3502
c160eafc42a9
new functions in ImageProcessing toolbox: FlipX/Y(), Resize(), Halve()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3372
diff
changeset
|
187 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
188 static void FlipX(ImageAccessor& image); |
3502
c160eafc42a9
new functions in ImageProcessing toolbox: FlipX/Y(), Resize(), Halve()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3372
diff
changeset
|
189 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
190 static void FlipY(ImageAccessor& image); |
3502
c160eafc42a9
new functions in ImageProcessing toolbox: FlipX/Y(), Resize(), Halve()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3372
diff
changeset
|
191 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
192 static void SeparableConvolution(ImageAccessor& image /* inplace */, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
193 const std::vector<float>& horizontal, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
194 size_t horizontalAnchor, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
195 const std::vector<float>& vertical, |
4065
d6362b2c4b61
export dcmdata in shared library, rounding in convolution tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4056
diff
changeset
|
196 size_t verticalAnchor, |
d6362b2c4b61
export dcmdata in shared library, rounding in convolution tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4056
diff
changeset
|
197 bool useRound /* this is expensive */); |
3503
46cf170ba121
ImageProcessing::SeparableConvolution()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3502
diff
changeset
|
198 |
4065
d6362b2c4b61
export dcmdata in shared library, rounding in convolution tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4056
diff
changeset
|
199 static void SmoothGaussian5x5(ImageAccessor& image, |
d6362b2c4b61
export dcmdata in shared library, rounding in convolution tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4056
diff
changeset
|
200 bool useRound /* this is expensive */); |
3503
46cf170ba121
ImageProcessing::SeparableConvolution()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3502
diff
changeset
|
201 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
202 static void FitSize(ImageAccessor& target, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
203 const ImageAccessor& source); |
4082
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
204 |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
205 // Resize the image to the given width/height. The resized image |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
206 // occupies the entire canvas (aspect ratio is not preserved). |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
207 static ImageAccessor* FitSize(const ImageAccessor& source, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
208 unsigned int width, |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
209 unsigned int height); |
4082
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
210 |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
211 // Resize an image, but keeps its original aspect ratio. Zeros are |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
212 // added around the image to reach the specified size. |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
213 static ImageAccessor* FitSizeKeepAspectRatio(const ImageAccessor& source, |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
214 unsigned int width, |
2e1564f57542
ImageProcessing::FitSizeKeepAspectRatio()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4079
diff
changeset
|
215 unsigned int height); |
4443
fd958175c5b9
ImageProcessing::ConvertJpegYCbCrToRgb()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
216 |
fd958175c5b9
ImageProcessing::ConvertJpegYCbCrToRgb()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
217 // https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion |
fd958175c5b9
ImageProcessing::ConvertJpegYCbCrToRgb()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
218 static void ConvertJpegYCbCrToRgb(ImageAccessor& image /* inplace */); |
4529
5774fe497ff2
fix decoding of images on big-endian architectures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4443
diff
changeset
|
219 |
5774fe497ff2
fix decoding of images on big-endian architectures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4443
diff
changeset
|
220 static void SwapEndianness(ImageAccessor& image /* inplace */); |
4947
dfbe764995cf
added ParsedDicomFile::DecodeAllOverlays()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4872
diff
changeset
|
221 |
dfbe764995cf
added ParsedDicomFile::DecodeAllOverlays()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4872
diff
changeset
|
222 static void Maximum(ImageAccessor& image /* inout */, |
dfbe764995cf
added ParsedDicomFile::DecodeAllOverlays()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4872
diff
changeset
|
223 const ImageAccessor& other); |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3690
diff
changeset
|
224 }; |
853 | 225 } |