[Insight-users] Wrapping R with SimpleITK

Brandon Whitcher bwhitcher at gmail.com
Thu Jan 26 03:15:48 EST 2012


Brian, nice to meet you.  Is this code available via a repository such as
sourceforge, R-Forge or github?  I may be able to come up with some
resource to contribute to this effort (maybe).

cheers...

Brandon


On 24 January 2012 15:02, brian avants <stnava at gmail.com> wrote:

> hi everyone
>
> we've been working on this as well --- actually, mainly shrinidhi
> (cc'd).  he's got simpleitk => R compilation set up with cmake and
> more or less ready to go as an R package.  the package needs to be
> filled out, though, with R friendly wrapper functions.    i will
> discuss again with him tomorrow.
>
> brian
>
>
>
>
>
> On Tue, Jan 24, 2012 at 9:48 AM, Brandon Whitcher <bwhitcher at gmail.com>
> wrote:
> > Wes and Bradley,
> >
> > I know we've gone silent on the R <-> ITK front, I'm still trying to find
> > someone who will do the heavy lifting.
> >
> > Just to let you (and the other ITK list users) that the annual R users
> > meeting will be at Vanderbilt University, Nashville, from 12-15 June.
> >
> >      http://biostat.mc.vanderbilt.edu/wiki/Main/UseR-2012
> >
> > Abstracts are being accepted until 12 March.  It would be a great way of
> > promoting ITK to the R community!
> >
> > What are your thoughts?
> >
> > cheers...
> >
> > Brandon
> >
> >
> > On 4 January 2012 17:42, Wes Turner <wes.turner at kitware.com> wrote:
> >>
> >> I agree with Bradley that it should be part of the SimpleITK Package.
> >>  IMHO, it is too integral to the full functioning of the ITK to R
> interface
> >> to keep separate.
> >>
> >> Here are the pointers to the VTK versions of the routines.  We will need
> >> to change it to use ITK arrays instead, but that should not be too
> >> difficult.  I am not sure how optimized these are, but once we get the
> >> functionality encapsulated and into SimpleITK, we can work on
> optimization.
> >>
> >> Basic data conversion:
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRAdapter.cxx;h=d6049a5eb748f878df56d40b4c82aeec7fc51471;hb=HEAD
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRAdapter.h;h=83a2a833c18d8d8ce36d1f4e77e5cf12b5d2c217;hb=HEAD
> >>
> >> Interface to the R Interpreter (probably not needed)
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRAdapter.h;h=83a2a833c18d8d8ce36d1f4e77e5cf12b5d2c217;hb=HEAD
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRInterface.h;h=e98ce921b5a16c5299fdb8cccbb29793fcd8989b;hb=HEAD
> >>
> >> Pipeline encapsulation (probably not needed)
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRCalculatorFilter.cxx;h=bdc99183fb2a6b949228fcadbed63e4a9f0e9d9a;hb=HEAD
> >>
> >>
> http://vtk.org/gitweb?p=VTK.git;a=blob;f=Graphics/vtkRCalculatorFilter.h;h=08f43d42b724a608cc37fdba1268875dab7ceba8;hb=HEAD
> >>
> >> - Wes
> >>
> >>
> >> On Wed, Jan 4, 2012 at 10:41 AM, Bradley Lowekamp <
> blowekamp at mail.nih.gov>
> >> wrote:
> >>>
> >>>
> >>> On Jan 4, 2012, at 10:07 AM, Brandon Whitcher wrote:
> >>>
> >>> Wes, thanks for your input here.  That would be great.  Do your methods
> >>> depend upon any ITK/SimpleITK routines?  I'm wondering if it would be
> better
> >>> to keep SimpleITK (the R wrapper version) as a separate R package and
> then
> >>> develop additional packages that add features, or just put everything
> in one
> >>> package (hmm).
> >>>
> >>>
> >>> For python we have added interface methods to numpy as part of the
> >>> SimpleITK package. I would think that converting sitk::Images to R
> arrays
> >>> would be a very common usage, so it sounds like it should be fairly
> tightly
> >>> coupled with the SimpleITK package. Is the multi-dimensional array
> part of
> >>> the standard R interface or a separate package.
> >>>
> >>> The swig documentation for R is fairly poor:
> >>> http://www.swig.org/Doc2.0/SWIGDocumentation.html#R
> >>>
> >>> Swig has to support more standard features then are listed there.
> >>>
> >>> If you are wondering how we did the python numpy interface, you can
> begin
> >>> by looking at the Wrapping/Python.i file:
> >>>
> >>>
> >>>
> http://itk.org/gitweb?p=SimpleITK.git;a=blob;f=Wrapping/Python.i;h=ca732fc3e219e3ec6f76974adc9e015282b52562;hb=HEAD
> >>>
> >>> I that with this information and the way VTK interfaces with R can help
> >>> get you started.
> >>>
> >>> Brad
> >>>
> >>>
> >>> For me, I've developed (with others) a lot of mathematical modelling
> and
> >>> statistical inference methods in R that operate on multidimensional
> arrays
> >>> (usually coming from one of the medical imaging data formats); e.g.,
> for
> >>> functional MRI, DTI, HARDI or DCE-MRI.  What we lack is the so-called
> >>> pre-processing techniques needed in medical image analysis:
> segmentation,
> >>> filtering, registration, etc.  Hence, SimpleITK (the R wrapper version)
> >>> would be a great way to access the techniques listed previously on
> data that
> >>> have been read it via R, and stored as multidimensional arrays, then
> take
> >>> the output back into R for further analysis and visualization.
> >>>
> >>> I'm looking for the best way to incorporate the impressive variety of
> ITK
> >>> routines into my R-based data analysis pipeline.
> >>>
> >>> cheers...
> >>>
> >>> Brandon
> >>>
> >>> On 3 January 2012 18:28, Wes Turner <wes.turner at kitware.com> wrote:
> >>>>
> >>>>
> >>>>
> >>>> On Tue, Jan 3, 2012 at 10:37 AM, Bradley Lowekamp
> >>>> <blowekamp at mail.nih.gov> wrote:
> >>>>>
> >>>>> Hello,
> >>>>>
> >>>>> It is great to hear that you are approaching ITK for the first time
> >>>>> with SimpleITK. Your feed back is very much appreciated so that we
> can
> >>>>> improve the documentations and the compilation procedures for a
> easier
> >>>>> experience.
> >>>>>
> >>>>>
> >>>>> I have added the source of your Data problem to the FAQ here:
> >>>>>
> >>>>>
> >>>>>
> http://www.itk.org/Wiki/ITK/Release_4/SimpleITK/FAQ#Where_is_the_Input_Data.3F_or_Why_is_my_Testing.2FData_directory_empty.3F
> >>>>>
> >>>>> The output you have attached looks great! I hope you have had success
> >>>>> trying additional filters by now.
> >>>>>
> >>>>> You said that you want to read Nifti and ANALYZE data with R. ITK
>  and
> >>>>> SimpleITK also have good support for these image formats, so you may
> be able
> >>>>> to read directly with SimpleITK's ReadImage method or the
> ImageFileReader
> >>>>> object.
> >>>>>
> >>>>> There is currently no optimized method for exporting a SimpleITK
> image
> >>>>> into an R array. So you are likely must use the slow SetPixel and
> GetPixel
> >>>>> methods.
> >>>>
> >>>>
> >>>> There are methods currently in VTK for conversion between VTK and R
> >>>> structures for some subset of formats.  I would be willing to provide
> some
> >>>> help and guidance.  It is only two classes and should be a short putt.
> >>>>
> >>>> - Wes
> >>>>
> >>>>>
> >>>>> For visualization in SimpleITK we have a primitive sitk.Show method.
> >>>>> This method currently just writes the image out to disk and then
> loads is up
> >>>>> in ImageJ. To use the, you need a recent version of ImageJ. We hope
> to make
> >>>>> this methods more configurable in the future, and take advantage
> built in
> >>>>> language specific visualization tools. However, with SimpleITK
> supporting
> >>>>> 2D, 3D image, along with all the vector pixel types, and complex
> pixel types
> >>>>> etc... many existing tools don't have the needs support for all these
> >>>>> possibilities.
> >>>>>
> >>>>> Enjoy,
> >>>>>
> >>>>> Brad
> >>>>>
> >>>>>
> >>>>> ========================================================
> >>>>> Bradley Lowekamp
> >>>>> Medical Science and Computing for
> >>>>> Office of High Performance Computing and Communications
> >>>>> National Library of Medicine
> >>>>> blowekamp at mail.nih.gov
> >>>>>
> >>>>> On Jan 2, 2012, at 3:46 AM, Brandon Whitcher wrote:
> >>>>>
> >>>>> Following up on my previous message I found a copy of cthead1.png at
> >>>>>
> >>>>>
> >>>>>
> http://itk.org/gitweb?p=SimpleITKData.git;a=commitdiff;h=f7d86582b91a35e5c8d30f1b58320bc47cc658fa
> >>>>>
> >>>>> ...and downloaded it.  I have attached it and the "out.png" file from
> >>>>> your example code.
> >>>>>
> >>>>> > source("load.R")
> >>>>>
> >>>>> Creating a generic function for ‘print’ from package ‘base’ in the
> >>>>> global environment
> >>>>> > img <- ReadImage( "Input/cthead1.png" )
> >>>>> > (pid <- Image_GetPixelIDValue( img ))
> >>>>> [1] 1
> >>>>>
> >>>>> > simg <- SmoothingRecursiveGaussian( img, 4 )
> >>>>> > cimg <- Cast( simg, pid )
> >>>>> > WriteImage( cimg, "out.png" )
> >>>>>
> >>>>> Success!
> >>>>>
> >>>>> Now I need to read up on ITK functions and how to take an array in R
> >>>>> (containing ANALYZE or NIfTI data) and pass it into ITK, process it
> and
> >>>>> bring it back in order to visualize/manipulate in R.  I have a
> package that
> >>>>> performs basic I/O for ANALYZE and NIfTI using S4 objects in R
> (called
> >>>>> oro.nifti) and it would be great to pass these arrays (along with the
> >>>>> metadata) back-and-forth with SimpleITK.
> >>>>>
> >>>>> cheers...
> >>>>>
> >>>>> Brandon
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 2 January 2012 08:37, Brandon Whitcher <bwhitcher at gmail.com>
> wrote:
> >>>>>>
> >>>>>> Brad, as you can tell I'm completely new to ITK... thank-you for
> your
> >>>>>> patience.  My SimpleITK (source) Testing/Data directory is empty
> from my
> >>>>>> "clone-ing" via Git (I am also a Git novice, sorry).  Looking at
> the version
> >>>>>> control tree at
> >>>>>>
> >>>>>>
> >>>>>>
> http://itk.org/gitweb?p=SimpleITK.git;a=tree;f=Testing;h=eb50d756edee129fc26beb6d4c00f288ea49309a;hb=HEAD
> >>>>>>
> >>>>>> ...I get...
> >>>>>>
> >>>>>> m--------- - Data history
> >>>>>>
> >>>>>> ...which doesn't look too promising from my knowledge of file
> >>>>>> permissions.  How can I overcome this?  May I ask for "cthead1.png"
> via
> >>>>>> email to try this example ASAP?
> >>>>>>
> >>>>>> cheers...
> >>>>>>
> >>>>>> Brandon
> >>>>>>
> >>>>>>
> >>>>>> On 2 January 2012 04:21, Bradley Lowekamp <blowekamp at mail.nih.gov>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> Hello Brandon,
> >>>>>>>
> >>>>>>> As is frequently the case the first exception is the cause of the
> >>>>>>> remainder. To understand the first error message some explanation
> of the how
> >>>>>>> SimpleITK manages image types is needed.
> >>>>>>>
> >>>>>>> There may be some relevant information in the SimpleITK
> presentation
> >>>>>>> from MICCAI 2011:
> >>>>>>>
> >>>>>>>
> https://github.com/SimpleITK/SimpleITK-MICCAI-2011-Tutorial/blob/master/Presentation/SimpleITK-MICCAI-2011.pdf?raw=true
> >>>>>>>
> >>>>>>>
> >>>>>>> The sitk::Image class is a typeless image class which wraps
> numerous
> >>>>>>> ITK image types. Externally the sitk::Image class presents the same
> >>>>>>> interface for all images, wether it is a scalar itk::Image, a
> multicomponent
> >>>>>>> itk::VectorImage, or even a run-line compressed itk::LabelMap. And
> then each
> >>>>>>> of these ITK image types are templated over the dimension and the
> pixel
> >>>>>>> type. So SimpleITK presents dozens of itk images types through a
> single
> >>>>>>> sitk::Image object.
> >>>>>>>
> >>>>>>> So SimpelITK is not strongly typed on these individual image types,
> >>>>>>> but it is type aware.
> >>>>>>>
> >>>>>>> ITK  filters are also templated on the input, and output image
> types.
> >>>>>>> But SimpleITK again type not expose the details of all the
> templated types,
> >>>>>>> and instead just exposes a generic interface to the image filter,
> and
> >>>>>>> internally is instantiates the image filter with all the plausible
> input
> >>>>>>> image types, and the sensible corresponding output image types.
> >>>>>>>
> >>>>>>> There are a few methods which can be used to interrogate the image
> >>>>>>> after it's loaded:
> >>>>>>>
> >>>>>>> First there is the ToString member function which just dumps out
> >>>>>>>  bunch of information about the internal ITK object:
> >>>>>>>
> >>>>>>> >cat( Image_ToString( myimage ) )
> >>>>>>>
> >>>>>>> And more specific methods:
> >>>>>>>
> >>>>>>> > Image_GetDimension( myimage )
> >>>>>>> > Image_GetPixelIDTypeAsString( myimage )
> >>>>>>> > Image_GetPixelIDValue( myimage )
> >>>>>>>
> >>>>>>> So lets look at what happens with the image you have chosen to run
> >>>>>>> this script with
> >>>>>>>
> >>>>>>> On Jan 1, 2012, at 9:03 AM, Brandon Whitcher wrote:
> >>>>>>>
> >>>>>>> Brad,
> >>>>>>>
> >>>>>>> I have attempted to run SimpleGaussian.R in an interactive R
> session
> >>>>>>> by executing
> >>>>>>>
> >>>>>>>
> >>>>>>> using the "spine1.png" image (attached, along with load.R).
> >>>>>>>
> >>>>>>>
> >>>>>>> The data used for the tests can be found in the
> >>>>>>> {SIMPLEITK_SOURCE}/Testing/Data.
> >>>>>>>
> >>>>>>>
> >>>>>>> The code fails to produce a smoothed image, here is the output
> >>>>>>>
> >>>>>>> > source("load.R") # library(SimpleITK)
> >>>>>>> >
> >>>>>>> > args <- c("spine1.png", 5, "spine1_smooth.png") #
> commandArgs(TRUE)
> >>>>>>> >
> >>>>>>> > myreader <- ImageFileReader()
> >>>>>>> > myreader <- ImageFileReader_SetFileName(myreader, args[[1]])
> >>>>>>> > myimage <- ImageFileReader_Execute(myreader)
> >>>>>>> >
> >>>>>>>
> >>>>>>>
> >>>>>>> if you run:
> >>>>>>> >cat( Image_ToString( myimage ) )
> >>>>>>>
> >>>>>>> You should see the following line:
> >>>>>>>
> >>>>>>> RTTI typeinfo:   itk::VectorImage< unsigned char, 2u>
> >>>>>>>
> >>>>>>> Or if you run:
> >>>>>>>
> >>>>>>> > Image_GetPixelIDTypeAsString( myimage )
> >>>>>>> [1] "vector of 8-bit unsigned integer"
> >>>>>>>
> >>>>>>> So with either of these methods you see that this file is not a
> black
> >>>>>>> and white image that it first appears, but actually a RGB image
> loaded into
> >>>>>>> an Itk::VectorImage
> >>>>>>>
> >>>>>>> > pixeltype <- Image_GetPixelIDValue(myimage)
> >>>>>>> >
> >>>>>>> > myfilter <- SmoothingRecursiveGaussianImageFilter()
> >>>>>>> > myfilter <-
> >>>>>>> > SmoothingRecursiveGaussianImageFilter_SetSigma(myfilter,
> as.double(args[2]))
> >>>>>>> > smoothedimage <-
> >>>>>>> > SmoothingRecursiveGaussianImageFilter_Execute(myfilter, myimage)
> >>>>>>> Warning message:
> >>>>>>> In f(...) :
> >>>>>>>   Exception thrown in SimpleITK
> >>>>>>> SmoothingRecursiveGaussianImageFilter_Execute:
> >>>>>>>
> /srv/SimpleITK/Code/Common/include/sitkMemberFunctionFactory.txx:173:
> >>>>>>> sitk::ERROR: Pixel type: vector of 8-bit unsigned integer is not
> >>>>>>> supported in 2D
> byN3itk6simple37SmoothingRecursiveGaussianImageFilterE
> >>>>>>>
> >>>>>>>
> >>>>>>> While this error message could use improvement  ( and will be
> >>>>>>> improved ). It basically says that this filter doesn't work with
> this
> >>>>>>> particular image type  ( it should also list the types of images
> it does
> >>>>>>> work with ). This particular filter currently only works with
> scalar image
> >>>>>>> type. So this image with sitkVectorUInt8 pixels is not going to
> work.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> >
> >>>>>>> > mycaster <- CastImageFilter()
> >>>>>>> > mycaster <- CastImageFilter_SetOutputPixelType(mycaster,
> pixeltype)
> >>>>>>> > castedimage <- CastImageFilter_Execute(mycaster, soothedimage)
> >>>>>>> Error in CastImageFilter_Execute(mycaster, soothedimage) :
> >>>>>>>   object 'soothedimage' not found
> >>>>>>>
> >>>>>>>
> >>>>>>> There appears to be a typeo "soothedimage" should be
> "smoothedimage".
> >>>>>>> However, I think the same error message should be generated
> because the
> >>>>>>> smoothedimage was not assigned due to the previous exception.
> >>>>>>>
> >>>>>>> >
> >>>>>>> > mywriter <- ImageFileWriter()
> >>>>>>> > mywriter <- ImageFileWriter_SetFileName(mywriter, args[[3]])
> >>>>>>> > mywriter <- ImageFileWriter_Execute(mywriter, castedimage)
> >>>>>>> Error in ImageFileWriter_Execute(mywriter, castedimage) :
> >>>>>>>   object 'castedimage' not found
> >>>>>>>
> >>>>>>> I am not sure what to make of the warnings or errors (sorry).  Any
> >>>>>>> advice or modifications would be helpful.  I am using spine1.png
> since I
> >>>>>>> cannot locate STAPLE1.png in either the ITK or SimpleITK
> directories.
> >>>>>>>
> >>>>>>>
> >>>>>>> Using the functional interface the following may be simpler:
> >>>>>>>
> >>>>>>> img <- ReadImage( "/src/SimpleITK/Testing/Data/Input/cthead1.png" )
> >>>>>>> pid <- Image_GetPixelIDValue( img )
> >>>>>>> simg <- SmoothingRecursiveGaussian( img, 4 )
> >>>>>>> cimg <- Cast( simg, pid )
> >>>>>>> WriteImage( cimg, "out.png" )
> >>>>>>>
> >>>>>>> Good luck,
> >>>>>>> Brad
> >>>>>>>
> >>>>>>> thanks,
> >>>>>>>
> >>>>>>> Brandon
> >>>>>>>
> >>>>>>>
> >>>>>>> On 31 December 2011 18:34, Bradley Lowekamp <
> blowekamp at mail.nih.gov>
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>> Hello again,
> >>>>>>>>
> >>>>>>>> I was not able to get the R packaging to work as described in the
> >>>>>>>> link provided. I did find a manual way to load the SimpleITK R
> library.
> >>>>>>>>
> >>>>>>>> Copy the SimpleITK.R file and the libSimpleITK.so ( renamed to
> >>>>>>>> SimpleITK.so ) into your current path, such as with the following
> commands:
> >>>>>>>>
> >>>>>>>> cp SimpleITK/SimpleITK-build/Wrapping/SimpleITK.R
> >>>>>>>> cp SimpleITK/SimpleITK-build/Wrapping/SimpleITK.R ./
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> The fire up R and type:
> >>>>>>>>
> >>>>>>>> $ R
> >>>>>>>>
> >>>>>>>> R version 2.14.0 (2011-10-31)
> >>>>>>>> ...
> >>>>>>>>
> >>>>>>>> > dyn.load( paste("SimpleITK", .Platform$dynlib.ext, sep="" ))
> >>>>>>>> > source ( "SimpleITK.R" )
> >>>>>>>> Creating a generic function for ‘print’ from package ‘base’ in the
> >>>>>>>> global environment
> >>>>>>>> > cacheMetaData( 1 )
> >>>>>>>>
> >>>>>>>> Here is an example that was working at one point:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> http://www.itk.org/SimpleITKDoxygen/html/SimpleGaussian_8R-example.html
> >>>>>>>>
> >>>>>>>> However the "library( SimpleITK )" call is used for when SimpleITK
> >>>>>>>> is installed as a package not the adhoc approach used above.
> >>>>>>>>
> >>>>>>>> Good Luck,
> >>>>>>>> Brad
> >>>>>>>>
> >>>>>>>> On Dec 31, 2011, at 1:11 PM, Lowekamp, Bradley (NIH/NLM/LHC) [C]
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>> Hello Brandon,
> >>>>>>>>
> >>>>>>>> The particular files you looking for are in the SimpleITK source
> >>>>>>>> directory not the build. You will need both the DESCRIPTION and
> the zzz.R
> >>>>>>>> files from the {SIMPLEITK_SOURCE}/Wrapping/R_Package directory.
> >>>>>>>>
> >>>>>>>> We have been calling R a Tier 2 or Tier 3 language in SimpleITK
> >>>>>>>> because is not as well supported as the other wrapped languages
> such as
> >>>>>>>> Python, Java, CSharp or even Ruby, or TCL. The primary reason for
> this is
> >>>>>>>> that we have not gotten the automatic testing working for R, so
> that it will
> >>>>>>>> show up on the nightly dashboard. Additionally, we also are
> hoping for
> >>>>>>>> contribution from the community to get the R language specific
> features
> >>>>>>>> polished and up to the expected R standard conventions.
> >>>>>>>>
> >>>>>>>> I hope this helps you with getting SimpleITK working R,
> >>>>>>>>
> >>>>>>>> Brad
> >>>>>>>>
> >>>>>>>> ========================================================
> >>>>>>>> Bradley Lowekamp
> >>>>>>>> Medical Science and Computing for
> >>>>>>>> Office of High Performance Computing and Communications
> >>>>>>>> National Library of Medicine
> >>>>>>>> blowekamp at mail.nih.gov
> >>>>>>>>
> >>>>>>>> On Dec 31, 2011, at 9:28 AM, Brandon Whitcher wrote:
> >>>>>>>>
> >>>>>>>> Dear ITK/SimpleITK experts,
> >>>>>>>>
> >>>>>>>> I have installed SimpleITK by turning off all wrapping facilities
> >>>>>>>> except WRAP_R.  I am now following the instructions in
> >>>>>>>>
> >>>>>>>> http://www.itk.org/SimpleITKDoxygen/html/Wrapping.html
> >>>>>>>>
> >>>>>>>> Specifically,
> >>>>>>>>
> >>>>>>>> 6) Copy the file
> >>>>>>>>
> >>>>>>>>        SimpleITK/Wrapping/R_Package/DESCRIPTION
> >>>>>>>>
> >>>>>>>> into the current
> >>>>>>>>
> >>>>>>>>        SimpleITK/DESCRIPTION
> >>>>>>>>
> >>>>>>>> ...but I cannot find the file Wrapping/R_package/DESCRIPTION in my
> >>>>>>>> SimpleITK-binary installation.  Where is this file?
> >>>>>>>>
> >>>>>>>> thank-you,
> >>>>>>>>
> >>>>>>>> Brandon
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> _____________________________________
> >>>>> Powered by www.kitware.com
> >>>>>
> >>>>> Visit other Kitware open-source projects at
> >>>>> http://www.kitware.com/opensource/opensource.html
> >>>>>
> >>>>> Kitware offers ITK Training Courses, for more information visit:
> >>>>> http://www.kitware.com/products/protraining.html
> >>>>>
> >>>>> Please keep messages on-topic and check the ITK FAQ at:
> >>>>> http://www.itk.org/Wiki/ITK_FAQ
> >>>>>
> >>>>> Follow this link to subscribe/unsubscribe:
> >>>>> http://www.itk.org/mailman/listinfo/insight-users
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Wesley D. Turner, Ph.D.
> >>>> Kitware, Inc.
> >>>> Technical Leader
> >>>> 28 Corporate Drive
> >>>> Clifton Park, NY 12065-8662
> >>>> Phone: 518-881-4920
> >>>
> >>>
> >>>
> >>> ========================================================
> >>>
> >>> Bradley Lowekamp
> >>>
> >>> Medical Science and Computing for
> >>>
> >>> Office of High Performance Computing and Communications
> >>>
> >>> National Library of Medicine
> >>>
> >>> blowekamp at mail.nih.gov
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> Wesley D. Turner, Ph.D.
> >> Kitware, Inc.
> >> Technical Leader
> >> 28 Corporate Drive
> >> Clifton Park, NY 12065-8662
> >> Phone: 518-881-4920
> >
> >
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://www.kitware.com/products/protraining.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-users
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120126/8d43c0b9/attachment.htm>


More information about the Insight-users mailing list