37
37
#include " itkPolyData.h"
38
38
#include " itkPolyDataToWasmPolyDataFilter.h"
39
39
#include " itkOutputPolyData.h"
40
+ #include " itkTransformToWasmTransformFilter.h"
41
+ #include " itkAffineTransform.h"
42
+ #include " itkCompositeTransform.h"
43
+ #include " itkOutputTransform.h"
44
+ #include " itkHDF5TransformIOFactory.h"
45
+ #include " itkInputTransform.h"
40
46
41
47
#include " itkImageFileReader.h"
42
48
#include " itkMeshFileReader.h"
49
+ #include " itkTransformFileReader.h"
50
+ #include " itkHDF5TransformIOFactory.h"
43
51
#include " itkMeshToPolyDataFilter.h"
44
52
#include " itkPolyDataToMeshFilter.h"
45
53
46
54
int
47
55
itkPipelineMemoryIOTest (int argc, char * argv[])
48
56
{
57
+ itk::HDF5TransformIOFactory::RegisterOneFactory ();
58
+
49
59
constexpr unsigned int Dimension = 2 ;
50
60
using PixelType = float ;
51
61
using ImageType = itk::Image<PixelType, Dimension>;
@@ -128,8 +138,62 @@ itkPipelineMemoryIOTest(int argc, char * argv[])
128
138
void * readWasmPolyDataPointer = reinterpret_cast < void * >( itk_wasm_input_json_alloc (0 , 4 , readPolyDataJSON.size ()));
129
139
std::memcpy (readWasmPolyDataPointer, readPolyDataJSON.data (), readPolyDataJSON.size ());
130
140
131
- const char * mockArgv[] = {" itkPipelineMemoryIOTest" , " --memory-io" , " 0" , " 0" , " 1" , " 1" , " 2" , " 2" , " 3" , " 3" , " 4" , " 4" , NULL };
132
- itk::wasm::Pipeline pipeline (" pipeline-test" , " A test ITK Wasm Pipeline" , 12 , const_cast < char ** >(mockArgv));
141
+ const char * inputTransformFile = argv[12 ];
142
+ using TransformType = itk::AffineTransform<double , 3 >;
143
+ using ParametersValueType = typename TransformType::ParametersValueType;
144
+ using TransformReaderType = itk::TransformFileReaderTemplate<ParametersValueType>;
145
+ auto transformReader = TransformReaderType::New ();
146
+ transformReader->SetFileName (inputTransformFile);
147
+ transformReader->Update ();
148
+ auto inputTransformList = transformReader->GetTransformList ();
149
+ auto readInputTransform = dynamic_cast <const TransformType *>(inputTransformList->front ().GetPointer ());
150
+ using TransformToWasmTransformFilterType = itk::TransformToWasmTransformFilter<TransformType>;
151
+ auto transformToWasmTransformFilter = TransformToWasmTransformFilterType::New ();
152
+ transformToWasmTransformFilter->SetTransform (readInputTransform);
153
+ transformToWasmTransformFilter->Update ();
154
+ auto readWasmTransform = transformToWasmTransformFilter->GetOutput ();
155
+
156
+ auto readTransformJSON = readWasmTransform->GetJSON ();
157
+ void * readWasmTransformPointer = reinterpret_cast < void * >( itk_wasm_input_json_alloc (0 , 5 , readTransformJSON.size ()));
158
+ std::memcpy (readWasmTransformPointer, readTransformJSON.data (), readTransformJSON.size ());
159
+
160
+ // auto readWasmTransformFixedParams = reinterpret_cast< const void * >(readWasmTransform->GetTransform()->GetFixedParameters().data_block());
161
+ // const auto readWasmTransformFixedParamsSize = readWasmTransform->GetTransform()->GetFixedParameters().Size();
162
+ // const size_t readWasmTransformFixedParamsAddress = itk_wasm_input_array_alloc(0, 0, 0, readWasmTransformFixedParamsSize);
163
+ // auto readWasmTransformFixedParamsPointer = reinterpret_cast< void * >(readWasmTransformFixedParamsAddress);
164
+ // std::memcpy(readWasmTransformFixedParamsPointer, readWasmTransformFixedParams, readWasmTransformFixedParamsSize);
165
+
166
+ // auto direction = reinterpret_cast< const void * >( readWasmTransform->GetTransform()->GetDirection().GetVnlMatrix().begin() );
167
+ // const auto directionSize = readWasmTransform->GetTransform()->GetDirection().GetVnlMatrix().size() * sizeof(double);
168
+ // const size_t readWasmTransformDirectionPointerAddress = itk_wasm_array_alloc(0, 0, 1, directionSize);
169
+ // auto readWasmTransformDirectionPointer = reinterpret_cast< void * >(readWasmTransformDirectionPointerAddress);
170
+ // std::memcpy(readWasmTransformDirectionPointer, direction, directionSize);
171
+
172
+ // auto readTransformJSON = readWasmTransform->GetJSON();
173
+ // void * readWasmTransformPointer = reinterpret_cast< void * >( itk_wasm_input_json_alloc(0, 0, readTransformJSON.size()));
174
+ // std::memcpy(readWasmTransformPointer, readTransformJSON.data(), readTransformJSON.size());
175
+
176
+ const char * inputCompositeTransformFile = argv[14 ];
177
+ using CompositeTransformType = itk::CompositeTransform<double , 2 >;
178
+ using CompositeParametersValueType = typename CompositeTransformType::ParametersValueType;
179
+ using CompositeTransformReaderType = itk::TransformFileReaderTemplate<CompositeParametersValueType>;
180
+ auto compositeTransformReader = CompositeTransformReaderType::New ();
181
+ compositeTransformReader->SetFileName (inputCompositeTransformFile);
182
+ compositeTransformReader->Update ();
183
+ auto inputCompositeTransformList = compositeTransformReader->GetTransformList ();
184
+ auto readInputCompositeTransform = dynamic_cast <const CompositeTransformType *>(inputCompositeTransformList->front ().GetPointer ());
185
+ using CompositeTransformToWasmTransformFilterType = itk::TransformToWasmTransformFilter<CompositeTransformType>;
186
+ auto compositeTransformToWasmCompositeTransformFilter = CompositeTransformToWasmTransformFilterType::New ();
187
+ compositeTransformToWasmCompositeTransformFilter->SetTransform (readInputCompositeTransform);
188
+ compositeTransformToWasmCompositeTransformFilter->Update ();
189
+ auto readWasmCompositeTransform = compositeTransformToWasmCompositeTransformFilter->GetOutput ();
190
+
191
+ auto readCompositeTransformJSON = readWasmCompositeTransform->GetJSON ();
192
+ void * readWasmCompositeTransformPointer = reinterpret_cast < void * >( itk_wasm_input_json_alloc (0 , 6 , readCompositeTransformJSON.size ()));
193
+ std::memcpy (readWasmCompositeTransformPointer, readCompositeTransformJSON.data (), readCompositeTransformJSON.size ());
194
+
195
+ const char * mockArgv[] = {" itkPipelineMemoryIOTest" , " --memory-io" , " 0" , " 0" , " 1" , " 1" , " 2" , " 2" , " 3" , " 3" , " 4" , " 4" , " 5" , " 5" , " 6" , " 6" , NULL };
196
+ itk::wasm::Pipeline pipeline (" pipeline-test" , " A test ITK Wasm Pipeline" , 16 , const_cast < char ** >(mockArgv));
133
197
134
198
std::string example_string_option = " default" ;
135
199
pipeline.add_option (" -s,--string" , example_string_option, " A help string" );
@@ -182,6 +246,22 @@ itkPipelineMemoryIOTest(int argc, char * argv[])
182
246
OutputPolyDataType outputPolyData;
183
247
pipeline.add_option (" output-polydata" , outputPolyData, " The output polydata" )->required ()->type_name (" OUTPUT_POLYDATA" );
184
248
249
+ using InputTransformType = itk::wasm::InputTransform<TransformType>;
250
+ InputTransformType inputTransform;
251
+ pipeline.add_option (" input-transform" , inputTransform, " The input transform" )->required ()->type_name (" INPUT_TRANSFORM" );
252
+
253
+ using OutputTransformType = itk::wasm::OutputTransform<TransformType>;
254
+ OutputTransformType outputTransform;
255
+ pipeline.add_option (" output-transform" , outputTransform, " The output transform" )->required ()->type_name (" OUTPUT_TRANSFORM" );
256
+
257
+ using InputCompositeTransformType = itk::wasm::InputTransform<CompositeTransformType>;
258
+ InputCompositeTransformType inputCompositeTransform;
259
+ pipeline.add_option (" input-composite-transform" , inputCompositeTransform, " The input composite transform" )->required ()->type_name (" INPUT_TRANSFORM" );
260
+
261
+ using OutputCompositeTransformType = itk::wasm::OutputTransform<CompositeTransformType>;
262
+ OutputCompositeTransformType outputCompositeTransform;
263
+ pipeline.add_option (" output-composite-transform" , outputCompositeTransform, " The output composite transform" )->required ()->type_name (" OUTPUT_TRANSFORM" );
264
+
185
265
ITK_WASM_PARSE (pipeline);
186
266
187
267
outputImage.Set (inputImage.Get ());
@@ -202,5 +282,8 @@ itkPipelineMemoryIOTest(int argc, char * argv[])
202
282
203
283
outputPolyData.Set (inputPolyData.Get ());
204
284
285
+ outputTransform.Set (inputTransform.Get ());
286
+ outputCompositeTransform.Set (inputCompositeTransform.Get ());
287
+
205
288
return EXIT_SUCCESS;
206
289
}
0 commit comments