Skip to content

Commit 4837dd0

Browse files
committed
Sort DICOMs with IPPSorter
1 parent 4dfc374 commit 4837dd0

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

packages/dicom/gdcm/image-sets-normalization.cxx

+19-4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
#include "rapidjson/stringbuffer.h"
2424
#include "rapidjson/writer.h"
2525

26+
#include "gdcmIPPSorter.h"
27+
2628
int main(int argc, char *argv[])
2729
{
2830
itk::wasm::Pipeline pipeline("image-sets-normalization", "Group DICOM files into image sets", argc, argv);
@@ -35,13 +37,26 @@ int main(int argc, char *argv[])
3537

3638
ITK_WASM_PARSE(pipeline);
3739

40+
gdcm::IPPSorter ipps;
41+
42+
ipps.SetComputeZSpacing(true);
43+
bool success = ipps.Sort(files);
44+
std::cout << "success: " << success << std::endl;
45+
46+
std::vector<std::string> sortedFileNames = ipps.GetFilenames();
47+
3848
rapidjson::Document imageSetsJson;
39-
imageSetsJson.SetObject();
4049
rapidjson::Document::AllocatorType &allocator = imageSetsJson.GetAllocator();
50+
imageSetsJson.SetObject();
51+
52+
rapidjson::Value sortedFileNameArray(rapidjson::kArrayType);
53+
for (const std::string& fileName : sortedFileNames) {
54+
rapidjson::Value fileNameValue;
55+
fileNameValue.SetString(fileName.c_str(), fileName.size(), allocator);
56+
sortedFileNameArray.PushBack(fileNameValue, allocator);
57+
}
4158

42-
rapidjson::Value almostEqualValue;
43-
almostEqualValue.SetBool(false);
44-
imageSetsJson.AddMember("", almostEqualValue, allocator);
59+
imageSetsJson.AddMember("sortedFileNames", sortedFileNameArray, allocator);
4560

4661
rapidjson::StringBuffer stringBuffer;
4762
rapidjson::Writer<rapidjson::StringBuffer> writer(stringBuffer);

packages/dicom/python/itkwasm-dicom-wasi/tests/test_image_sets_normalization.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,19 @@
55

66
def test_image_sets_normalization():
77
files = [
8+
test_input_path / "DicomImageOrientationTest" / "ImageOrientation.3.dcm",
89
test_input_path / "DicomImageOrientationTest" / "ImageOrientation.1.dcm",
910
test_input_path / "DicomImageOrientationTest" / "ImageOrientation.2.dcm",
10-
test_input_path / "DicomImageOrientationTest" / "ImageOrientation.3.dcm",
1111
]
1212

1313
assert files[0].exists()
1414

15-
output_text = image_sets_normalization(files)
16-
assert output_text
15+
image_sets = image_sets_normalization(files)
16+
assert image_sets
17+
18+
sorted_file_names = image_sets.get("sortedFileNames")
19+
assert sorted_file_names == [
20+
str(files[1]),
21+
str(files[2]),
22+
str(files[0]),
23+
]

0 commit comments

Comments
 (0)