import org.itk.simple.*;
class ImageGridManipulation {
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("Usage: ImageGridManipulation <input-1> <input-2>");
return;
}
Image image1 = SimpleITK.readImage(args[0]);
Image image2 = SimpleITK.readImage(args[1]);
JoinSeriesImageFilter join = new JoinSeriesImageFilter();
Image joinedImage = join.execute(image1, image2);
VectorIndexSelectionCastImageFilter select = new VectorIndexSelectionCastImageFilter();
select.setOutputPixelType(PixelIDValueEnum.sitkUInt8);
select.setIndex(0);
Image channel1Image = select.execute(joinedImage);
select.setIndex(1);
Image channel2Image = select.execute(joinedImage);
select.setIndex(2);
Image channel3Image = select.execute(joinedImage);
ComposeImageFilter compose = new ComposeImageFilter();
Image composedImage = compose.execute(channel1Image, channel2Image, channel3Image);
ExtractImageFilter extract = new ExtractImageFilter();
VectorUInt32 size = new VectorUInt32();
size.add(30L); size.add(30L); size.add(0L);
VectorInt32 index = new VectorInt32();
index.add(10); index.add(10); index.add(0);
extract.setSize(size);
extract.setIndex(index);
Image extractedImage = extract.execute(composedImage);
CropImageFilter crop = new CropImageFilter();
VectorUInt32 lowerBoundary = new VectorUInt32();
lowerBoundary.add(10L); lowerBoundary.add(10L); lowerBoundary.add(0L);
VectorUInt32 upperBoundary = new VectorUInt32();
upperBoundary.add((long)(composedImage.getWidth() - 40));
upperBoundary.add((long)(composedImage.getHeight() - 40));
upperBoundary.add(1L);
crop.setLowerBoundaryCropSize(lowerBoundary);
crop.setUpperBoundaryCropSize(upperBoundary);
Image croppedImage = crop.execute(composedImage);
System.out.println("Extracted image size: " + extractedImage.getWidth() + "x" +
extractedImage.getHeight() + "x" + extractedImage.getDepth());
System.out.println("Cropped image size: " + croppedImage.getWidth() + "x" +
croppedImage.getHeight() + "x" + croppedImage.getDepth());
}
}