@@ -789,12 +789,15 @@ def dict_from_image(image: "itkt.Image") -> Dict:
789
789
790
790
pixel_arr = itk .array_from_image (image )
791
791
imageType = wasm_type_from_image_type (image )
792
+ buffered_region = image .GetBufferedRegion ()
793
+ bufferedRegion = { "index" : tuple (buffered_region .GetIndex ()), "size" : tuple (buffered_region .GetSize ())}
792
794
return dict (
793
795
imageType = imageType ,
794
796
name = image .GetObjectName (),
795
797
origin = tuple (image .GetOrigin ()),
796
798
spacing = tuple (image .GetSpacing ()),
797
- size = tuple (image .GetBufferedRegion ().GetSize ()),
799
+ size = tuple (image .GetLargestPossibleRegion ().GetSize ()),
800
+ bufferedRegion = bufferedRegion ,
798
801
direction = np .asarray (image .GetDirection ()),
799
802
data = pixel_arr ,
800
803
)
@@ -808,10 +811,20 @@ def image_from_dict(image_dict: Dict) -> "itkt.Image":
808
811
if image_dict ["data" ] is None :
809
812
image = ImageType .New ()
810
813
image .SetRegions (image_dict ["size" ])
814
+ if "bufferedRegion" in image_dict :
815
+ buffered_region = itk .ImageRegion [image .GetImageDimension ()]()
816
+ buffered_region .SetIndex (image_dict ["bufferedRegion" ]["index" ])
817
+ buffered_region .SetSize (image_dict ["bufferedRegion" ]["size" ])
818
+ image .SetBufferedRegion (buffered_region )
811
819
image .Allocate (True )
812
820
else :
813
821
image = itk .PyBuffer [ImageType ].GetImageViewFromArray (image_dict ["data" ])
814
822
image .SetRegions (image_dict ["size" ])
823
+ if "bufferedRegion" in image_dict :
824
+ buffered_region = itk .ImageRegion [image .GetImageDimension ()]()
825
+ buffered_region .SetIndex (image_dict ["bufferedRegion" ]["index" ])
826
+ buffered_region .SetSize (image_dict ["bufferedRegion" ]["size" ])
827
+ image .SetBufferedRegion (buffered_region )
815
828
image .SetOrigin (image_dict ["origin" ])
816
829
image .SetSpacing (image_dict ["spacing" ])
817
830
image .SetDirection (image_dict ["direction" ])
0 commit comments