[Insight-users] Import/Export Java images

Stefan Lindenau stefan.lindenau at gmx.de
Thu May 19 05:59:25 EDT 2005


Hi Sumit,

thank you for the Code Sample. That was exactly what I needed and it is 
now working.
Stefan

sumit shah wrote:

> Hi,
>
> I've pasted some Java code that I use.  It may not compile as is, but  
> should give you a head start.
>
>
> Here is an example of how to get an itkImageF3 from a stack of  
> BufferedImages:
>
>
> public itkImageF3 getITK(Stack<BufferedImage> is, double voxsize[]) {
>
> itkImportImageFilterF3_Pointer importer =  
> itkImportImageFilterF3.itkImportImageFilterF3_New();
>
>     itkIndex3 start = new itkIndex3();
>     itkSize3 size = new itkSize3();
>     itkImageRegion3 region = new itkImageRegion3();
>     itkPointD3 origin = new itkPointD3();
>
>     BufferedImage secondToLast = is.elementAt(is.size() - 2), last =  
> is.lastElement();
>
>     int x = last.getWidth();
>     int y = last.getHeight();
>     int z = is.size();
>
>     size.SetElement(0, x);
>     size.SetElement(1, y);
>     size.SetElement(2, z);
>
>     start.SetElement(0, 0);
>     start.SetElement(1, 0);
>     start.SetElement(2, 0);
>
>     region.SetSize(size);
>     region.SetIndex(start);
>
> double[] pix = new double[2];
>     itkVectorD3 spacing = new itkVectorD3();
>     spacing.SetElement(0, voxSize[0]);
>     spacing.SetElement(1, voxSize[1]);
>     spacing.SetElement(2, voxSize[2]);
>     importer.SetSpacing(spacing);
>
>     origin.SetElement(0, 0);
>     origin.SetElement(1, 0);
>     origin.SetElement(2, 0);
>     importer.SetOrigin(origin);
>     importer.SetRegion(region);
>
>     buf = SwigExtras.new_FArray(x * y * z);
>
>     float f[] = new float[x*y];
>     int i = 0;
>     itkProg = 0;
>
>     for(BufferedImage  b:is) {
>       Raster r = b.getData();
>       f = r.getSamples(0, 0, x, y, 0, f);
>       for(int j = 0; j < f.length; j++) {
>         SwigExtras.FArray_setitem(buf, i, f[i]);
>         i++;
>       }
>     }
>     importer.SetImportPointer(buf, x * y * x, false);
>
>     itkProg = 0;
>     importer.Update();
>
>     return importer.GetOutput();
>
> // don't forget to call SwigExtras.delete_FArray(buf); when you are  
> done using it!!!
> }
>
>
> Here is an example to do an affine transform on an image (tarITK  
> variable which is an object of type itkImageF3):
>
> final itkResampleImageFilterF3F3_Pointer resample =  
> itkResampleImageFilterF3F3.itkResampleImageFilterF3F3_New();
> final itkLinearInterpolateImageFunctionF3D_Pointer interpolator =  
> itkLinearInterpolateImageFunctionF3D.itkLinearInterpolateImageFunctionF3 
> D_New();
> final itkAffineTransform3_Pointer transform =  
> itkAffineTransform3.itkAffineTransform3_New();
>             final itkArrayD parameters =  new itkArrayD(12);
>             for(int i = 0; i < fp.length; i++) parameters.SetElement 
> (i,  fp[i]);
>             transform.SetParameters(parameters);
>             resample.SetTransform(transform.GetPointer());
>             resample.SetInterpolator(interpolator.GetPointer());
>             resample.SetInput(tarITK);
>             resample.SetSize(tarITK.GetLargestPossibleRegion 
> ().GetSize());
>             resample.SetOutputOrigin(tarITK.GetOrigin());
>             resample.SetOutputSpacing(tarITK.GetSpacing());
>             resample.SetDefaultPixelValue(-32768);
>
>             SwingUtilities.invokeLater(new Runnable() {
>                 public void run() {
>                   tp.setMaximum(100);
>                   tp.setValue(0);
>                 }
>               }
>             );
>
>             class CommandIterationUpdate extends itkJavaCommand {
>               public void Execute() {
>                 updateTask.val = (int)(100*resample.GetProgress());
>                 SwingUtilities.invokeLater(updateTask);
>               }
>             }
>             CommandIterationUpdate p = new CommandIterationUpdate();
>             resample.AddObserver(new itkProgressEvent(), p);
>             resample.Update();
>
>
>
> On May 17, 2005, at 2:09 AM, Stefan Lindenau wrote:
>
>> Hi,
>>
>> currently I am trying to use the ITK with the Java Wrapping. For my  
>> applications I need to import/export itk images into Java Images.
>>
>> Although I have found out that there should be a mechanism to  
>> import/export itk images to Java images (http://public.kitware.com/ 
>> pipermail/insight-users/2004-June/008887.html). I did not find out  
>> how to use these mechanisms.
>>
>> Do you have any documentation for the Java Wrapping or a starting  
>> point?
>>
>> Thank you,
>> Stefan
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>
>



More information about the Insight-users mailing list