Diff of /src/antsImage.cxx [000000] .. [5d12a0]

Switch to unified view

a b/src/antsImage.cxx
1
#include <nanobind/nanobind.h>
2
#include <nanobind/stl/vector.h>
3
#include <nanobind/stl/string.h>
4
#include <nanobind/stl/tuple.h>
5
#include <nanobind/stl/list.h>
6
#include <nanobind/ndarray.h>
7
#include <nanobind/stl/shared_ptr.h>
8
9
#include <iostream>
10
#include <fstream>
11
#include <cstdio>
12
#include "itkPyBuffer.h"
13
#include "itkImageIOBase.h"
14
#include "itkImage.h"
15
#include "itkImageFileWriter.h"
16
#include "itkImageIOBase.h"
17
#include "itkNiftiImageIOFactory.h"
18
#include "itkMetaImageIOFactory.h"
19
#include "itkImageFileReader.h"
20
#include "itkImage.h"
21
#include <iostream>
22
23
#include "antsImage.h"
24
25
26
namespace nb = nanobind;
27
using namespace nb::literals;
28
29
template <typename ImageType>
30
nb::object toNumpy( AntsImage<ImageType> & myPointer )
31
{
32
    typename ImageType::Pointer image = myPointer.ptr;
33
    typedef itk::PyBuffer<ImageType> PyBufferType;
34
    PyObject * itkArray = PyBufferType::_GetArrayViewFromImage( image );
35
    nb::object itkArrayObject = nb::steal( itkArray );
36
    return itkArrayObject;
37
}
38
39
40
std::string ptrstr2(void * c)
41
{
42
    std::stringstream ss;
43
    ss << (void const *)c;
44
    std::string s = ss.str();
45
    return s;
46
}
47
48
49
/*
50
The return value (const char * file) from this function should be able to go
51
through the following code block without segfaulting. This is what ANTs uses
52
to convert back to an itk image.
53
54
void *             ptr;
55
sscanf(file, "%p", (void **)&ptr);
56
typename ImageType::Pointer newImage = *(static_cast<typename ImageType::Pointer *>(ptr));
57
*/
58
template <typename ImageType>
59
std::string ptrstr(AntsImage<ImageType> & myPointer)
60
{
61
    typename ImageType::Pointer * itkImage = & myPointer.ptr;
62
    std::stringstream ss;
63
    ss << (void const *)itkImage;
64
    std::string s = ss.str();
65
    return s;
66
}
67
68
void local_antsImage(nb::module_ &m) {
69
70
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned char,2>>);
71
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned char,3>>);
72
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned char,4>>);
73
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned int,2>>);
74
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned int,3>>);
75
    m.def("ptrstr",  &ptrstr<itk::Image<unsigned int,4>>);
76
    m.def("ptrstr",   &ptrstr<itk::Image<float,2>>);
77
    m.def("ptrstr",   &ptrstr<itk::Image<float,3>>);
78
    m.def("ptrstr",   &ptrstr<itk::Image<float,4>>);
79
    m.def("ptrstr",   &ptrstr<itk::Image<double,2>>);
80
    m.def("ptrstr",   &ptrstr<itk::Image<double,3>>);
81
    m.def("ptrstr",   &ptrstr<itk::Image<double,4>>);
82
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned char,2>>);
83
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned char,3>>);
84
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned char,4>>);
85
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned int,2>>);
86
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned int,3>>);
87
    m.def("ptrstr", &ptrstr<itk::VectorImage<unsigned int,4>>);
88
    m.def("ptrstr",  &ptrstr<itk::VectorImage<float,2>>);
89
    m.def("ptrstr",  &ptrstr<itk::VectorImage<float,3>>);
90
    m.def("ptrstr",  &ptrstr<itk::VectorImage<float,4>>);
91
    m.def("ptrstr",  &ptrstr<itk::VectorImage<double,2>>);
92
    m.def("ptrstr",  &ptrstr<itk::VectorImage<double,3>>);
93
    m.def("ptrstr",  &ptrstr<itk::VectorImage<double,4>>);
94
    m.def("ptrstr", &ptrstr<itk::Image<itk::RGBPixel<unsigned char>,2>>);
95
    m.def("ptrstr", &ptrstr<itk::Image<itk::RGBPixel<unsigned char>,3>>);
96
    m.def("ptrstr", &ptrstr<itk::Image<itk::RGBPixel<float>,2>>);
97
    m.def("ptrstr", &ptrstr<itk::Image<itk::RGBPixel<float>,3>>);
98
99
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned char,2>>);
100
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned char,3>>);
101
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned char,4>>);
102
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned int,2>>);
103
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned int,3>>);
104
    m.def("getComponents", &getComponents<itk::VectorImage<unsigned int,4>>);
105
    m.def("getComponents",  &getComponents<itk::VectorImage<float,2>>);
106
    m.def("getComponents",  &getComponents<itk::VectorImage<float,3>>);
107
    m.def("getComponents",  &getComponents<itk::VectorImage<float,4>>);
108
    m.def("getComponents",  &getComponents<itk::VectorImage<double,2>>);
109
    m.def("getComponents",  &getComponents<itk::VectorImage<double,3>>);
110
    m.def("getComponents",  &getComponents<itk::VectorImage<double,4>>);
111
112
    m.def("getShape",  &getShape<itk::Image<unsigned char,2>>);
113
    m.def("getShape",  &getShape<itk::Image<unsigned char,3>>);
114
    m.def("getShape",  &getShape<itk::Image<unsigned char,4>>);
115
    m.def("getShape",  &getShape<itk::Image<unsigned int,2>>);
116
    m.def("getShape",  &getShape<itk::Image<unsigned int,3>>);
117
    m.def("getShape",  &getShape<itk::Image<unsigned int,4>>);
118
    m.def("getShape",   &getShape<itk::Image<float,2>>);
119
    m.def("getShape",   &getShape<itk::Image<float,3>>);
120
    m.def("getShape",   &getShape<itk::Image<float,4>>);
121
    m.def("getShape",   &getShape<itk::Image<double,2>>);
122
    m.def("getShape",   &getShape<itk::Image<double,3>>);
123
    m.def("getShape",   &getShape<itk::Image<double,4>>);
124
    m.def("getShape", &getShape<itk::VectorImage<unsigned char,2>>);
125
    m.def("getShape", &getShape<itk::VectorImage<unsigned char,3>>);
126
    m.def("getShape", &getShape<itk::VectorImage<unsigned char,4>>);
127
    m.def("getShape", &getShape<itk::VectorImage<unsigned int,2>>);
128
    m.def("getShape", &getShape<itk::VectorImage<unsigned int,3>>);
129
    m.def("getShape", &getShape<itk::VectorImage<unsigned int,4>>);
130
    m.def("getShape",  &getShape<itk::VectorImage<float,2>>);
131
    m.def("getShape",  &getShape<itk::VectorImage<float,3>>);
132
    m.def("getShape",  &getShape<itk::VectorImage<float,4>>);
133
    m.def("getShape",  &getShape<itk::VectorImage<double,2>>);
134
    m.def("getShape",  &getShape<itk::VectorImage<double,3>>);
135
    m.def("getShape",  &getShape<itk::VectorImage<double,4>>);
136
    m.def("getShape", &getShape<itk::Image<itk::RGBPixel<unsigned char>,2>>);
137
    m.def("getShape", &getShape<itk::Image<itk::RGBPixel<unsigned char>,3>>);
138
    m.def("getShape", &getShape<itk::Image<itk::RGBPixel<float>,2>>);
139
    m.def("getShape", &getShape<itk::Image<itk::RGBPixel<float>,3>>);
140
141
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned char,2>>);
142
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned char,3>>);
143
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned char,4>>);
144
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned int,2>>);
145
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned int,3>>);
146
    m.def("getOrigin",  &getOrigin<itk::Image<unsigned int,4>>);
147
    m.def("getOrigin",   &getOrigin<itk::Image<float,2>>);
148
    m.def("getOrigin",   &getOrigin<itk::Image<float,3>>);
149
    m.def("getOrigin",   &getOrigin<itk::Image<float,4>>);
150
    m.def("getOrigin",   &getOrigin<itk::Image<double,2>>);
151
    m.def("getOrigin",   &getOrigin<itk::Image<double,3>>);
152
    m.def("getOrigin",   &getOrigin<itk::Image<double,4>>);
153
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned char,2>>);
154
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned char,3>>);
155
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned char,4>>);
156
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned int,2>>);
157
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned int,3>>);
158
    m.def("getOrigin", &getOrigin<itk::VectorImage<unsigned int,4>>);
159
    m.def("getOrigin",  &getOrigin<itk::VectorImage<float,2>>);
160
    m.def("getOrigin",  &getOrigin<itk::VectorImage<float,3>>);
161
    m.def("getOrigin",  &getOrigin<itk::VectorImage<float,4>>);
162
    m.def("getOrigin",  &getOrigin<itk::VectorImage<double,2>>);
163
    m.def("getOrigin",  &getOrigin<itk::VectorImage<double,3>>);
164
    m.def("getOrigin",  &getOrigin<itk::VectorImage<double,4>>);
165
    m.def("getOrigin", &getOrigin<itk::Image<itk::RGBPixel<unsigned char>,2>>);
166
    m.def("getOrigin", &getOrigin<itk::Image<itk::RGBPixel<unsigned char>,3>>);
167
    m.def("getOrigin", &getOrigin<itk::Image<itk::RGBPixel<float>,2>>);
168
    m.def("getOrigin", &getOrigin<itk::Image<itk::RGBPixel<float>,3>>);
169
170
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned char,2>>);
171
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned char,3>>);
172
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned char,4>>);
173
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned int,2>>);
174
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned int,3>>);
175
    m.def("setOrigin",  &setOrigin<itk::Image<unsigned int,4>>);
176
    m.def("setOrigin",   &setOrigin<itk::Image<float,2>>);
177
    m.def("setOrigin",   &setOrigin<itk::Image<float,3>>);
178
    m.def("setOrigin",   &setOrigin<itk::Image<float,4>>);
179
    m.def("setOrigin",   &setOrigin<itk::Image<double,2>>);
180
    m.def("setOrigin",   &setOrigin<itk::Image<double,3>>);
181
    m.def("setOrigin",   &setOrigin<itk::Image<double,4>>);
182
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned char,2>>);
183
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned char,3>>);
184
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned char,4>>);
185
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned int,2>>);
186
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned int,3>>);
187
    m.def("setOrigin", &setOrigin<itk::VectorImage<unsigned int,4>>);
188
    m.def("setOrigin",  &setOrigin<itk::VectorImage<float,2>>);
189
    m.def("setOrigin",  &setOrigin<itk::VectorImage<float,3>>);
190
    m.def("setOrigin",  &setOrigin<itk::VectorImage<float,4>>);
191
    m.def("setOrigin",  &setOrigin<itk::VectorImage<double,2>>);
192
    m.def("setOrigin",  &setOrigin<itk::VectorImage<double,3>>);
193
    m.def("setOrigin",  &setOrigin<itk::VectorImage<double,4>>);
194
    m.def("setOrigin", &setOrigin<itk::Image<itk::RGBPixel<unsigned char>,2>>);
195
    m.def("setOrigin", &setOrigin<itk::Image<itk::RGBPixel<unsigned char>,3>>);
196
    m.def("setOrigin", &setOrigin<itk::Image<itk::RGBPixel<float>,2>>);
197
    m.def("setOrigin", &setOrigin<itk::Image<itk::RGBPixel<float>,3>>);
198
199
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned char,2>>);
200
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned char,3>>);
201
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned char,4>>);
202
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned int,2>>);
203
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned int,3>>);
204
    m.def("getSpacing",  &getSpacing<itk::Image<unsigned int,4>>);
205
    m.def("getSpacing",   &getSpacing<itk::Image<float,2>>);
206
    m.def("getSpacing",   &getSpacing<itk::Image<float,3>>);
207
    m.def("getSpacing",   &getSpacing<itk::Image<float,4>>);
208
    m.def("getSpacing",   &getSpacing<itk::Image<double,2>>);
209
    m.def("getSpacing",   &getSpacing<itk::Image<double,3>>);
210
    m.def("getSpacing",   &getSpacing<itk::Image<double,4>>);
211
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned char,2>>);
212
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned char,3>>);
213
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned char,4>>);
214
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned int,2>>);
215
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned int,3>>);
216
    m.def("getSpacing", &getSpacing<itk::VectorImage<unsigned int,4>>);
217
    m.def("getSpacing",  &getSpacing<itk::VectorImage<float,2>>);
218
    m.def("getSpacing",  &getSpacing<itk::VectorImage<float,3>>);
219
    m.def("getSpacing",  &getSpacing<itk::VectorImage<float,4>>);
220
    m.def("getSpacing",  &getSpacing<itk::VectorImage<double,2>>);
221
    m.def("getSpacing",  &getSpacing<itk::VectorImage<double,3>>);
222
    m.def("getSpacing",  &getSpacing<itk::VectorImage<double,4>>);
223
    m.def("getSpacing", &getSpacing<itk::Image<itk::RGBPixel<unsigned char>,2>>);
224
    m.def("getSpacing", &getSpacing<itk::Image<itk::RGBPixel<unsigned char>,3>>);
225
    m.def("getSpacing", &getSpacing<itk::Image<itk::RGBPixel<float>,2>>);
226
    m.def("getSpacing", &getSpacing<itk::Image<itk::RGBPixel<float>,3>>);
227
228
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned char,2>>);
229
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned char,3>>);
230
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned char,4>>);
231
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned int,2>>);
232
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned int,3>>);
233
    m.def("setSpacing",  &setSpacing<itk::Image<unsigned int,4>>);
234
    m.def("setSpacing",   &setSpacing<itk::Image<float,2>>);
235
    m.def("setSpacing",   &setSpacing<itk::Image<float,3>>);
236
    m.def("setSpacing",   &setSpacing<itk::Image<float,4>>);
237
    m.def("setSpacing",   &setSpacing<itk::Image<double,2>>);
238
    m.def("setSpacing",   &setSpacing<itk::Image<double,3>>);
239
    m.def("setSpacing",   &setSpacing<itk::Image<double,4>>);
240
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned char,2>>);
241
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned char,3>>);
242
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned char,4>>);
243
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned int,2>>);
244
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned int,3>>);
245
    m.def("setSpacing", &setSpacing<itk::VectorImage<unsigned int,4>>);
246
    m.def("setSpacing",  &setSpacing<itk::VectorImage<float,2>>);
247
    m.def("setSpacing",  &setSpacing<itk::VectorImage<float,3>>);
248
    m.def("setSpacing",  &setSpacing<itk::VectorImage<float,4>>);
249
    m.def("setSpacing",  &setSpacing<itk::VectorImage<double,2>>);
250
    m.def("setSpacing",  &setSpacing<itk::VectorImage<double,3>>);
251
    m.def("setSpacing",  &setSpacing<itk::VectorImage<double,4>>);
252
    m.def("setSpacing", &setSpacing<itk::Image<itk::RGBPixel<unsigned char>,2>>);
253
    m.def("setSpacing", &setSpacing<itk::Image<itk::RGBPixel<unsigned char>,3>>);
254
    m.def("setSpacing", &setSpacing<itk::Image<itk::RGBPixel<float>,2>>);
255
    m.def("setSpacing", &setSpacing<itk::Image<itk::RGBPixel<float>,3>>);
256
257
    m.def("getDirection",  &getDirection<itk::Image<unsigned char,2>>);
258
    m.def("getDirection",  &getDirection<itk::Image<unsigned char,3>>);
259
    m.def("getDirection",  &getDirection<itk::Image<unsigned char,4>>);
260
    m.def("getDirection",  &getDirection<itk::Image<unsigned int,2>>);
261
    m.def("getDirection",  &getDirection<itk::Image<unsigned int,3>>);
262
    m.def("getDirection",  &getDirection<itk::Image<unsigned int,4>>);
263
    m.def("getDirection",   &getDirection<itk::Image<float,2>>);
264
    m.def("getDirection",   &getDirection<itk::Image<float,3>>);
265
    m.def("getDirection",   &getDirection<itk::Image<float,4>>);
266
    m.def("getDirection",   &getDirection<itk::Image<double,2>>);
267
    m.def("getDirection",   &getDirection<itk::Image<double,3>>);
268
    m.def("getDirection",   &getDirection<itk::Image<double,4>>);
269
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned char,2>>);
270
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned char,3>>);
271
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned char,4>>);
272
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned int,2>>);
273
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned int,3>>);
274
    m.def("getDirection", &getDirection<itk::VectorImage<unsigned int,4>>);
275
    m.def("getDirection",  &getDirection<itk::VectorImage<float,2>>);
276
    m.def("getDirection",  &getDirection<itk::VectorImage<float,3>>);
277
    m.def("getDirection",  &getDirection<itk::VectorImage<float,4>>);
278
    m.def("getDirection",  &getDirection<itk::VectorImage<double,2>>);
279
    m.def("getDirection",  &getDirection<itk::VectorImage<double,3>>);
280
    m.def("getDirection",  &getDirection<itk::VectorImage<double,4>>);
281
    m.def("getDirection", &getDirection<itk::Image<itk::RGBPixel<unsigned char>,2>>);
282
    m.def("getDirection", &getDirection<itk::Image<itk::RGBPixel<unsigned char>,3>>);
283
    m.def("getDirection", &getDirection<itk::Image<itk::RGBPixel<float>,2>>);
284
    m.def("getDirection", &getDirection<itk::Image<itk::RGBPixel<float>,3>>);
285
286
    m.def("setDirection",  &setDirection<itk::Image<unsigned char,2>>);
287
    m.def("setDirection",  &setDirection<itk::Image<unsigned char,3>>);
288
    m.def("setDirection",  &setDirection<itk::Image<unsigned char,4>>);
289
    m.def("setDirection",  &setDirection<itk::Image<unsigned int,2>>);
290
    m.def("setDirection",  &setDirection<itk::Image<unsigned int,3>>);
291
    m.def("setDirection",  &setDirection<itk::Image<unsigned int,4>>);
292
    m.def("setDirection",   &setDirection<itk::Image<float,2>>);
293
    m.def("setDirection",   &setDirection<itk::Image<float,3>>);
294
    m.def("setDirection",   &setDirection<itk::Image<float,4>>);
295
    m.def("setDirection",   &setDirection<itk::Image<double,2>>);
296
    m.def("setDirection",   &setDirection<itk::Image<double,3>>);
297
    m.def("setDirection",   &setDirection<itk::Image<double,4>>);
298
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned char,2>>);
299
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned char,3>>);
300
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned char,4>>);
301
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned int,2>>);
302
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned int,3>>);
303
    m.def("setDirection", &setDirection<itk::VectorImage<unsigned int,4>>);
304
    m.def("setDirection",  &setDirection<itk::VectorImage<float,2>>);
305
    m.def("setDirection",  &setDirection<itk::VectorImage<float,3>>);
306
    m.def("setDirection",  &setDirection<itk::VectorImage<float,4>>);
307
    m.def("setDirection",  &setDirection<itk::VectorImage<double,2>>);
308
    m.def("setDirection",  &setDirection<itk::VectorImage<double,3>>);
309
    m.def("setDirection",  &setDirection<itk::VectorImage<double,4>>);
310
    m.def("setDirection", &setDirection<itk::Image<itk::RGBPixel<unsigned char>,2>>);
311
    m.def("setDirection", &setDirection<itk::Image<itk::RGBPixel<unsigned char>,3>>);
312
    m.def("setDirection", &setDirection<itk::Image<itk::RGBPixel<float>,2>>);
313
    m.def("setDirection", &setDirection<itk::Image<itk::RGBPixel<float>,3>>);
314
315
    m.def("toFile",  &toFile<itk::Image<unsigned char,2>>);
316
    m.def("toFile",  &toFile<itk::Image<unsigned char,3>>);
317
    m.def("toFile",  &toFile<itk::Image<unsigned char,4>>);
318
    m.def("toFile",  &toFile<itk::Image<unsigned int,2>>);
319
    m.def("toFile",  &toFile<itk::Image<unsigned int,3>>);
320
    m.def("toFile",  &toFile<itk::Image<unsigned int,4>>);
321
    m.def("toFile",   &toFile<itk::Image<float,2>>);
322
    m.def("toFile",   &toFile<itk::Image<float,3>>);
323
    m.def("toFile",   &toFile<itk::Image<float,4>>);
324
    m.def("toFile",   &toFile<itk::Image<double,2>>);
325
    m.def("toFile",   &toFile<itk::Image<double,3>>);
326
    m.def("toFile",   &toFile<itk::Image<double,4>>);
327
    m.def("toFile", &toFile<itk::VectorImage<unsigned char,2>>);
328
    m.def("toFile", &toFile<itk::VectorImage<unsigned char,3>>);
329
    m.def("toFile", &toFile<itk::VectorImage<unsigned char,4>>);
330
    m.def("toFile", &toFile<itk::VectorImage<unsigned int,2>>);
331
    m.def("toFile", &toFile<itk::VectorImage<unsigned int,3>>);
332
    m.def("toFile", &toFile<itk::VectorImage<unsigned int,4>>);
333
    m.def("toFile",  &toFile<itk::VectorImage<float,2>>);
334
    m.def("toFile",  &toFile<itk::VectorImage<float,3>>);
335
    m.def("toFile",  &toFile<itk::VectorImage<float,4>>);
336
    m.def("toFile",  &toFile<itk::VectorImage<double,2>>);
337
    m.def("toFile",  &toFile<itk::VectorImage<double,3>>);
338
    m.def("toFile",  &toFile<itk::VectorImage<double,4>>);
339
    m.def("toFile", &toFile<itk::Image<itk::RGBPixel<unsigned char>,2>>);
340
    m.def("toFile", &toFile<itk::Image<itk::RGBPixel<unsigned char>,3>>);
341
    m.def("toFile", &toFile<itk::Image<itk::RGBPixel<float>,2>>);
342
    m.def("toFile", &toFile<itk::Image<itk::RGBPixel<float>,3>>);
343
344
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned char,2>>);
345
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned char,3>>);
346
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned char,4>>);
347
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned int,2>>);
348
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned int,3>>);
349
    m.def("toNumpy",  &toNumpy<itk::Image<unsigned int,4>>);
350
    m.def("toNumpy",   &toNumpy<itk::Image<float,2>>);
351
    m.def("toNumpy",   &toNumpy<itk::Image<float,3>>);
352
    m.def("toNumpy",   &toNumpy<itk::Image<float,4>>);
353
    m.def("toNumpy",   &toNumpy<itk::Image<double,2>>);
354
    m.def("toNumpy",   &toNumpy<itk::Image<double,3>>);
355
    m.def("toNumpy",   &toNumpy<itk::Image<double,4>>);
356
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned char,2>>);
357
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned char,3>>);
358
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned char,4>>);
359
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned int,2>>);
360
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned int,3>>);
361
    m.def("toNumpy", &toNumpy<itk::VectorImage<unsigned int,4>>);
362
    m.def("toNumpy",  &toNumpy<itk::VectorImage<float,2>>);
363
    m.def("toNumpy",  &toNumpy<itk::VectorImage<float,3>>);
364
    m.def("toNumpy",  &toNumpy<itk::VectorImage<float,4>>);
365
    m.def("toNumpy",  &toNumpy<itk::VectorImage<double,2>>);
366
    m.def("toNumpy",  &toNumpy<itk::VectorImage<double,3>>);
367
    m.def("toNumpy",  &toNumpy<itk::VectorImage<double,4>>);
368
    m.def("toNumpy", &toNumpy<itk::Image<itk::RGBPixel<unsigned char>,2>>);
369
    m.def("toNumpy", &toNumpy<itk::Image<itk::RGBPixel<unsigned char>,3>>);
370
    m.def("toNumpy", &toNumpy<itk::Image<itk::RGBPixel<float>,2>>);
371
    m.def("toNumpy", &toNumpy<itk::Image<itk::RGBPixel<float>,3>>);
372
373
    nb::class_<AntsImage<itk::Image<unsigned char,2>>>(m, "AntsImageUC2");
374
    nb::class_<AntsImage<itk::Image<unsigned char,3>>>(m, "AntsImageUC3");
375
    nb::class_<AntsImage<itk::Image<unsigned char,4>>>(m, "AntsImageUC4");
376
    nb::class_<AntsImage<itk::Image<unsigned int,2>>>(m, "AntsImageUI2");
377
    nb::class_<AntsImage<itk::Image<unsigned int,3>>>(m, "AntsImageUI3");
378
    nb::class_<AntsImage<itk::Image<unsigned int,4>>>(m, "AntsImageUI4");
379
    nb::class_<AntsImage<itk::Image<float,2>>>(m, "AntsImageF2");
380
    nb::class_<AntsImage<itk::Image<float,3>>>(m, "AntsImageF3");
381
    nb::class_<AntsImage<itk::Image<float,4>>>(m, "AntsImageF4");
382
    nb::class_<AntsImage<itk::Image<double,2>>>(m, "AntsImageD2");
383
    nb::class_<AntsImage<itk::Image<double,3>>>(m, "AntsImageD3");
384
    nb::class_<AntsImage<itk::Image<double,4>>>(m, "AntsImageD4");
385
    nb::class_<AntsImage<itk::VectorImage<unsigned char,2>>>(m, "AntsImageVUC2");
386
    nb::class_<AntsImage<itk::VectorImage<unsigned char,3>>>(m, "AntsImageVUC3");
387
    nb::class_<AntsImage<itk::VectorImage<unsigned char,4>>>(m, "AntsImageVUC4");
388
    nb::class_<AntsImage<itk::VectorImage<unsigned int,2>>>(m, "AntsImageVUI2");
389
    nb::class_<AntsImage<itk::VectorImage<unsigned int,3>>>(m, "AntsImageVUI3");
390
    nb::class_<AntsImage<itk::VectorImage<unsigned int,4>>>(m, "AntsImageVUI4");
391
    nb::class_<AntsImage<itk::VectorImage<float,2>>>(m, "AntsImageVF2");
392
    nb::class_<AntsImage<itk::VectorImage<float,3>>>(m, "AntsImageVF3");
393
    nb::class_<AntsImage<itk::VectorImage<float,4>>>(m, "AntsImageVF4");
394
    nb::class_<AntsImage<itk::VectorImage<double,2>>>(m, "AntsImageVD2");
395
    nb::class_<AntsImage<itk::VectorImage<double,3>>>(m, "AntsImageVD3");
396
    nb::class_<AntsImage<itk::VectorImage<double,4>>>(m, "AntsImageVD4");
397
    nb::class_<AntsImage<itk::Image<itk::RGBPixel<unsigned char>,2>>>(m, "AntsImageRGBUC2");
398
    nb::class_<AntsImage<itk::Image<itk::RGBPixel<unsigned char>,3>>>(m, "AntsImageRGBUC3");
399
    nb::class_<AntsImage<itk::Image<itk::RGBPixel<float>,2>>>(m, "AntsImageRGBF2");
400
    nb::class_<AntsImage<itk::Image<itk::RGBPixel<float>,3>>>(m, "AntsImageRGBF3");
401
}