[Insight-users] Error using MultiResMIRegistration

Vicente Grau vgrauc@bwh.harvard.edu
Sun, 09 Mar 2003 12:32:48 -0500


--------------090409030006050908070401
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit



Hi Luis,

Thank you again for your help.

I'm working on SunOS-5.8-sparc. The ITK version is 1.0.0, and the CMake 
version I used was CMake-1.6.5-sparc-sunos57. The compiler is gcc 
version 3.0.3.

I've just tried with the BrainWeb images, downloaded from the ITK site 
(BrainPart1 and BrainPart1Rotated10Translated15), and also directly from 
the BrainWeb site (T1- and T2- weighted, 1mm slice thickness, 3% noise, 
20% inhomogeneity). I've introduced them to the MultiResMIRegistration 
program, and it aborts exactly in the same way as before.

Vicente


Luis Ibanez wrote:

>
> Hi Vicente,
>
> Thanks for trying these options.
>
> The results of your experiment seem to indicate
> that the Abort call is not the result of an
> uncaught exception.
>
> I'm affraid that the only way to trace the real
> source of the error is to run the program in
> a debugger...
>
> 1) What platform are you working on ?
>    what compiler ?
>    what version of ITK ?
>    what version of CMake ?
>
> 2) Have you tried different types of images ?
>    I wonder if the problem may be originated
>    in the pixel data...
>
> 3) Could you put the images that are failing,
>    in a site where I can get them ?
>
> 4) Or even better, could you first try with the
>    BrainWeb images in the ftp site ?
>
>    ftp://public.kitware.com/pub/itk/Data/BrainWeb/
>
>    In this way we could discard the data as the
>    source of error.
>
>
> Please let us know what you find,
>
> Thanks
>
>
> Luis
>
>
> --------------------------
>
> Vicente Grau wrote:
>
>> Hi Luis,
>>
>> thank you very much for your answer. I've tried your suggestions, but 
>> I've not been able to correct the problem:
>>
>> - With a single level, as few as 100 iterations (or even 1 
>> iteration), and a very small learning rate (1e-08), the error is 
>> exactly the same.
>> - I've modified the program as you've told me (see below). However, 
>> still no catch is produced: the output is exactly the same as before. 
>> Is it possible that the catch is not working for any reason?
>>
>> Thanks again
>>
>> Vicente
>>
>> #include 
>>
>> #include "SimpleApp.h"
>> #include "itkExceptionObject.h"
>>
>>
>> int main(int argc, char *argv[])
>> {
>>   try{
>>       std::cout<< "Modified procedure" << std::endl;
>>       if ( argc < 2 )
>>         {
>>         std::cout << "Parameter file name missing" << std::endl;
>>         std::cout << std::endl;
>>         std::cout << "Usage: MultiResMIRegistration param.file" << 
>> std::endl;
>>         return 1;
>>         }
>>
>>       // run the registration
>>       try
>>         {
>>         typedef itk::SimpleApp AppType;
>>         AppType::Pointer theApp = AppType::New();
>>         theApp->SetParameterFileName( argv[1] );
>>         theApp->Execute();
>>         }
>>       catch( itk::ExceptionObject& err)
>>         {
>>         std::cout << "Caught an ITK exception: " << std::endl;
>>         std::cout << err << std::endl;
>>         }
>>       catch(...)
>>         {
>>         std::cout << "Caught an non-ITK exception " << std::endl;
>>         }
>>       }
>>   //Added to detect error
>>   catch(std::exception & excep )
>>       {
>>       std::cerr << "Exception thrown = ";
>>       std::cerr << excep.what() << std::endl;
>>       }
>>   //
>> return 0;
>> }
>>
>>
>>
>> Luis Ibanez wrote:
>>
>>>
>>> Hi Vicente,
>>>
>>> When a program aborts it is usually an indication
>>> that an exception has been thrown and nobody
>>> is catching it.
>>>
>>> In this particular application there are multiple
>>> catch statements, so this seems to be an unusual
>>> error that is not anticipated by any of the
>>> existing catch's.
>>>
>>>
>>> Usual suspects are:
>>>
>>> 1) One of the common exceptions being thrown in
>>>    registration is due to the fixed image and
>>>    moving image not being overlapped at all.
>>>    This ocurrs commonly when relatively large
>>>    learning rates are provided to the optimizer.
>>>
>>>    ... but... when this common exception is thrown,
>>>    there is a catch statment that receives it and
>>>    print an specific message in the console.
>>>
>>>    You don't seems to be receiving this specific
>>>    message....
>>>
>>>
>>> 2) Another common source of exception being
>>>    thrown is the initialization of the registration
>>>    method. In this stage, all the components of
>>>    the registration process are plugged together.
>>>    (optimizer, metric, interpolator,...)
>>>    If any of them is missing, an exeption is thrown.
>>>
>>>    ... have you modified this code in any way ?
>>>    or are you running exactly as it exists in
>>>    the repository ?
>>>
>>>
>>> ----
>>>
>>> Suggestions:
>>>
>>> 1)  Go to the main() method of the application and
>>>     put its body inside a try/catch statement like
>>>
>>>     main()
>>>     {
>>>      try {
>>>        ... all the code except 'return 0;'
>>>      }
>>>      catch( std::exception & excep )
>>>      {
>>>       std::cerr << "Exception thrown = ";
>>>       std::cerr << excep.what() << std::endl;
>>>      }
>>>
>>>
>>>    This message could hopefully give us an idea
>>>    of what is going wrong in the process.
>>>
>>>
>>> 2) Start with a single level (instead of 5), and
>>>    use a smaller learning rate (e.g. 1e-8) for
>>>    fewer iterations (e.g. 100).
>>>
>>> If this doesn't abort, we will know that the initialization
>>> is ok, and the problem should be appearing during
>>> the optimization process. In that case you can add more
>>> iterations. If you can get to 2500 iterations, then it is
>>> time to attempt a second level in the pyramid, and so on.
>>>
>>>
>>>
>>> -----
>>>
>>> Please try this, and let us know what you find.
>>>
>>>
>>> Thanks
>>>
>>>
>>>    Luis
>>>
>>>
>>>
>>> ---------------------
>>>
>>> Vicente Grau wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm trying to use the MultiResMIRegistration program on two 3D 
>>>> volumes that I've created. The parameters file that I'm using now is:
>>>> ------------------------
>>>> Img_1.raw
>>>> 1
>>>> 100 100 20
>>>> 0.293 0.293 1.6
>>>> Img_2.raw
>>>> 1
>>>> 100 100 20
>>>> 0.293 0.293 1.6
>>>> 0 1 2
>>>> 0 0 0
>>>> 5
>>>> 4 4 1
>>>> 4 4 1
>>>> 2500 2500 2500 2500 2500
>>>> 1e-4 1e-5 5e-6 1e-6 5e-7
>>>> 320
>>>> Registered_1
>>>> ---------------------------
>>>>
>>>> I've tried also other combinations of parameters, but the result is 
>>>> always the one shown below:  the program always aborts immediately 
>>>> after starting with the first level. The directory Registered_1 
>>>> exists, I've created it previously. Do you know what's happening in 
>>>> this case?
>>>>
>>>> ---------------------------------
>>>> Parsing input ...
>>>> Fixed image filename: Img_1.raw
>>>> Big Endian: 1
>>>> Image Size: [100, 100, 20]
>>>> Image Spacing: [0.293, 0.293, 1.6]
>>>> Moving image filename: Img_2.raw
>>>> Big Endian: 1
>>>> Image Size: [100, 100, 20]
>>>> Image Spacing: [0.293, 0.293, 1.6]
>>>> Permute order: [0, 1, 2]
>>>> Flip axes: [0, 0, 0]
>>>> Number of levels: 5
>>>> Fixed image shrink factors: [4, 4, 1]
>>>> Moving image shrink factors: [4, 4, 1]
>>>> Number of iterations: [2500, 2500, 2500, 2500, 2500]
>>>> Learning rates: [0.0001, 1e-05, 5e-06, 1e-06, 5e-07]
>>>> Translation scale: 320
>>>> PGM directory: Registered_1
>>>>
>>>> Preprocess the images ...
>>>> Register the images ...
>>>> --- Starting level 0
>>>> No. Iterations: 2500 Learning rate: 0.1
>>>> Abort
>>>>
>>>> ------------------------------
>>>>
>>>> Thanks
>>>>
>>>> Vicente Grau-Colomer
>>>>
>>>> _______________________________________________
>>>> Insight-users mailing list
>>>> Insight-users@public.kitware.com
>>>> http://public.kitware.com/mailman/listinfo/insight-users
>>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users@public.kitware.com
>>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users@public.kitware.com
>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>
>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users





--------------090409030006050908070401
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
  <title></title>
</head>
<body>
 
<pre>Hi Luis,

Thank you again for your help.

I'm working on SunOS-5.8-sparc. The ITK version is 1.0.0, and the CMake 
version I used was CMake-1.6.5-sparc-sunos57. The compiler is gcc 
version 3.0.3.

I've just tried with the BrainWeb images, downloaded from the ITK site 
(BrainPart1 and BrainPart1Rotated10Translated15), and also directly from 
the BrainWeb site (T1- and T2- weighted, 1mm slice thickness, 3% noise, 
20% inhomogeneity). I've introduced them to the MultiResMIRegistration 
program, and it aborts exactly in the same way as before.

Vicente


Luis Ibanez wrote:

&gt;
&gt; Hi Vicente,
&gt;
&gt; Thanks for trying these options.
&gt;
&gt; The results of your experiment seem to indicate
&gt; that the Abort call is not the result of an
&gt; uncaught exception.
&gt;
&gt; I'm affraid that the only way to trace the real
&gt; source of the error is to run the program in
&gt; a debugger...
&gt;
&gt; 1) What platform are you working on ?
&gt;    what compiler ?
&gt;    what version of ITK ?
&gt;    what version of CMake ?
&gt;
&gt; 2) Have you tried different types of images ?
&gt;    I wonder if the problem may be originated
&gt;    in the pixel data...
&gt;
&gt; 3) Could you put the images that are failing,
&gt;    in a site where I can get them ?
&gt;
&gt; 4) Or even better, could you first try with the
&gt;    BrainWeb images in the ftp site ?
&gt;
&gt;    <a class="moz-txt-link-freetext" href="ftp://public.kitware.com/pub/itk/Data/BrainWeb/">ftp://public.kitware.com/pub/itk/Data/BrainWeb/</a>
&gt;
&gt;    In this way we could discard the data as the
&gt;    source of error.
&gt;
&gt;
&gt; Please let us know what you find,
&gt;
&gt; Thanks
&gt;
&gt;
&gt; Luis
&gt;
&gt;
&gt; --------------------------
&gt;
&gt; Vicente Grau wrote:
&gt;
&gt;&gt; Hi Luis,
&gt;&gt;
&gt;&gt; thank you very much for your answer. I've tried your suggestions, but 
&gt;&gt; I've not been able to correct the problem:
&gt;&gt;
&gt;&gt; - With a single level, as few as 100 iterations (or even 1 
&gt;&gt; iteration), and a very small learning rate (1e-08), the error is 
&gt;&gt; exactly the same.
&gt;&gt; - I've modified the program as you've told me (see below). However, 
&gt;&gt; still no catch is produced: the output is exactly the same as before. 
&gt;&gt; Is it possible that the catch is not working for any reason?
&gt;&gt;
&gt;&gt; Thanks again
&gt;&gt;
&gt;&gt; Vicente
&gt;&gt;
&gt;&gt; #include <fstream>
&gt;&gt;
&gt;&gt; #include "SimpleApp.h"
&gt;&gt; #include "itkExceptionObject.h"
&gt;&gt;
&gt;&gt;
&gt;&gt; int main(int argc, char *argv[])
&gt;&gt; {
&gt;&gt;   try{
&gt;&gt;       std::cout&lt;&lt; "Modified procedure" &lt;&lt; std::endl;
&gt;&gt;       if ( argc &lt; 2 )
&gt;&gt;         {
&gt;&gt;         std::cout &lt;&lt; "Parameter file name missing" &lt;&lt; std::endl;
&gt;&gt;         std::cout &lt;&lt; std::endl;
&gt;&gt;         std::cout &lt;&lt; "Usage: MultiResMIRegistration param.file" &lt;&lt; 
&gt;&gt; std::endl;
&gt;&gt;         return 1;
&gt;&gt;         }
&gt;&gt;
&gt;&gt;       // run the registration
&gt;&gt;       try
&gt;&gt;         {
&gt;&gt;         typedef itk::SimpleApp<signed short=""> AppType;
&gt;&gt;         AppType::Pointer theApp = AppType::New();
&gt;&gt;         theApp-&gt;SetParameterFileName( argv[1] );
&gt;&gt;         theApp-&gt;Execute();
&gt;&gt;         }
&gt;&gt;       catch( itk::ExceptionObject&amp; err)
&gt;&gt;         {
&gt;&gt;         std::cout &lt;&lt; "Caught an ITK exception: " &lt;&lt; std::endl;
&gt;&gt;         std::cout &lt;&lt; err &lt;&lt; std::endl;
&gt;&gt;         }
&gt;&gt;       catch(...)
&gt;&gt;         {
&gt;&gt;         std::cout &lt;&lt; "Caught an non-ITK exception " &lt;&lt; std::endl;
&gt;&gt;         }
&gt;&gt;       }
&gt;&gt;   //Added to detect error
&gt;&gt;   catch(std::exception &amp; excep )
&gt;&gt;       {
&gt;&gt;       std::cerr &lt;&lt; "Exception thrown = ";
&gt;&gt;       std::cerr &lt;&lt; excep.what() &lt;&lt; std::endl;
&gt;&gt;       }
&gt;&gt;   //
&gt;&gt; return 0;
&gt;&gt; }
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; Luis Ibanez wrote:
&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; Hi Vicente,
&gt;&gt;&gt;
&gt;&gt;&gt; When a program aborts it is usually an indication
&gt;&gt;&gt; that an exception has been thrown and nobody
&gt;&gt;&gt; is catching it.
&gt;&gt;&gt;
&gt;&gt;&gt; In this particular application there are multiple
&gt;&gt;&gt; catch statements, so this seems to be an unusual
&gt;&gt;&gt; error that is not anticipated by any of the
&gt;&gt;&gt; existing catch's.
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; Usual suspects are:
&gt;&gt;&gt;
&gt;&gt;&gt; 1) One of the common exceptions being thrown in
&gt;&gt;&gt;    registration is due to the fixed image and
&gt;&gt;&gt;    moving image not being overlapped at all.
&gt;&gt;&gt;    This ocurrs commonly when relatively large
&gt;&gt;&gt;    learning rates are provided to the optimizer.
&gt;&gt;&gt;
&gt;&gt;&gt;    ... but... when this common exception is thrown,
&gt;&gt;&gt;    there is a catch statment that receives it and
&gt;&gt;&gt;    print an specific message in the console.
&gt;&gt;&gt;
&gt;&gt;&gt;    You don't seems to be receiving this specific
&gt;&gt;&gt;    message....
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; 2) Another common source of exception being
&gt;&gt;&gt;    thrown is the initialization of the registration
&gt;&gt;&gt;    method. In this stage, all the components of
&gt;&gt;&gt;    the registration process are plugged together.
&gt;&gt;&gt;    (optimizer, metric, interpolator,...)
&gt;&gt;&gt;    If any of them is missing, an exeption is thrown.
&gt;&gt;&gt;
&gt;&gt;&gt;    ... have you modified this code in any way ?
&gt;&gt;&gt;    or are you running exactly as it exists in
&gt;&gt;&gt;    the repository ?
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; ----
&gt;&gt;&gt;
&gt;&gt;&gt; Suggestions:
&gt;&gt;&gt;
&gt;&gt;&gt; 1)  Go to the main() method of the application and
&gt;&gt;&gt;     put its body inside a try/catch statement like
&gt;&gt;&gt;
&gt;&gt;&gt;     main()
&gt;&gt;&gt;     {
&gt;&gt;&gt;      try {
&gt;&gt;&gt;        ... all the code except 'return 0;'
&gt;&gt;&gt;      }
&gt;&gt;&gt;      catch( std::exception &amp; excep )
&gt;&gt;&gt;      {
&gt;&gt;&gt;       std::cerr &lt;&lt; "Exception thrown = ";
&gt;&gt;&gt;       std::cerr &lt;&lt; excep.what() &lt;&lt; std::endl;
&gt;&gt;&gt;      }
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;    This message could hopefully give us an idea
&gt;&gt;&gt;    of what is going wrong in the process.
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; 2) Start with a single level (instead of 5), and
&gt;&gt;&gt;    use a smaller learning rate (e.g. 1e-8) for
&gt;&gt;&gt;    fewer iterations (e.g. 100).
&gt;&gt;&gt;
&gt;&gt;&gt; If this doesn't abort, we will know that the initialization
&gt;&gt;&gt; is ok, and the problem should be appearing during
&gt;&gt;&gt; the optimization process. In that case you can add more
&gt;&gt;&gt; iterations. If you can get to 2500 iterations, then it is
&gt;&gt;&gt; time to attempt a second level in the pyramid, and so on.
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; -----
&gt;&gt;&gt;
&gt;&gt;&gt; Please try this, and let us know what you find.
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; Thanks
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;    Luis
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; ---------------------
&gt;&gt;&gt;
&gt;&gt;&gt; Vicente Grau wrote:
&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Hello,
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I'm trying to use the MultiResMIRegistration program on two 3D 
&gt;&gt;&gt;&gt; volumes that I've created. The parameters file that I'm using now is:
&gt;&gt;&gt;&gt; ------------------------
&gt;&gt;&gt;&gt; Img_1.raw
&gt;&gt;&gt;&gt; 1
&gt;&gt;&gt;&gt; 100 100 20
&gt;&gt;&gt;&gt; 0.293 0.293 1.6
&gt;&gt;&gt;&gt; Img_2.raw
&gt;&gt;&gt;&gt; 1
&gt;&gt;&gt;&gt; 100 100 20
&gt;&gt;&gt;&gt; 0.293 0.293 1.6
&gt;&gt;&gt;&gt; 0 1 2
&gt;&gt;&gt;&gt; 0 0 0
&gt;&gt;&gt;&gt; 5
&gt;&gt;&gt;&gt; 4 4 1
&gt;&gt;&gt;&gt; 4 4 1
&gt;&gt;&gt;&gt; 2500 2500 2500 2500 2500
&gt;&gt;&gt;&gt; 1e-4 1e-5 5e-6 1e-6 5e-7
&gt;&gt;&gt;&gt; 320
&gt;&gt;&gt;&gt; Registered_1
&gt;&gt;&gt;&gt; ---------------------------
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I've tried also other combinations of parameters, but the result is 
&gt;&gt;&gt;&gt; always the one shown below:  the program always aborts immediately 
&gt;&gt;&gt;&gt; after starting with the first level. The directory Registered_1 
&gt;&gt;&gt;&gt; exists, I've created it previously. Do you know what's happening in 
&gt;&gt;&gt;&gt; this case?
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; ---------------------------------
&gt;&gt;&gt;&gt; Parsing input ...
&gt;&gt;&gt;&gt; Fixed image filename: Img_1.raw
&gt;&gt;&gt;&gt; Big Endian: 1
&gt;&gt;&gt;&gt; Image Size: [100, 100, 20]
&gt;&gt;&gt;&gt; Image Spacing: [0.293, 0.293, 1.6]
&gt;&gt;&gt;&gt; Moving image filename: Img_2.raw
&gt;&gt;&gt;&gt; Big Endian: 1
&gt;&gt;&gt;&gt; Image Size: [100, 100, 20]
&gt;&gt;&gt;&gt; Image Spacing: [0.293, 0.293, 1.6]
&gt;&gt;&gt;&gt; Permute order: [0, 1, 2]
&gt;&gt;&gt;&gt; Flip axes: [0, 0, 0]
&gt;&gt;&gt;&gt; Number of levels: 5
&gt;&gt;&gt;&gt; Fixed image shrink factors: [4, 4, 1]
&gt;&gt;&gt;&gt; Moving image shrink factors: [4, 4, 1]
&gt;&gt;&gt;&gt; Number of iterations: [2500, 2500, 2500, 2500, 2500]
&gt;&gt;&gt;&gt; Learning rates: [0.0001, 1e-05, 5e-06, 1e-06, 5e-07]
&gt;&gt;&gt;&gt; Translation scale: 320
&gt;&gt;&gt;&gt; PGM directory: Registered_1
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Preprocess the images ...
&gt;&gt;&gt;&gt; Register the images ...
&gt;&gt;&gt;&gt; --- Starting level 0
&gt;&gt;&gt;&gt; No. Iterations: 2500 Learning rate: 0.1
&gt;&gt;&gt;&gt; Abort
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; ------------------------------
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Thanks
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Vicente Grau-Colomer
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; _______________________________________________
&gt;&gt;&gt;&gt; Insight-users mailing list
&gt;&gt;&gt;&gt; <a class="moz-txt-link-abbreviated" href="mailto:Insight-users@public.kitware.com">Insight-users@public.kitware.com</a>
&gt;&gt;&gt;&gt; <a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/insight-users">http://public.kitware.com/mailman/listinfo/insight-users</a>
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; _______________________________________________
&gt;&gt;&gt; Insight-users mailing list
&gt;&gt;&gt; <a class="moz-txt-link-abbreviated" href="mailto:Insight-users@public.kitware.com">Insight-users@public.kitware.com</a>
&gt;&gt;&gt; <a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/insight-users">http://public.kitware.com/mailman/listinfo/insight-users</a>
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; _______________________________________________
&gt;&gt; Insight-users mailing list
&gt;&gt; <a class="moz-txt-link-abbreviated" href="mailto:Insight-users@public.kitware.com">Insight-users@public.kitware.com</a>
&gt;&gt; <a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/insight-users">http://public.kitware.com/mailman/listinfo/insight-users</a>
&gt;&gt;
&gt;
&gt;
&gt;
&gt;
&gt; _______________________________________________
&gt; Insight-users mailing list
&gt; <a class="moz-txt-link-abbreviated" href="mailto:Insight-users@public.kitware.com">Insight-users@public.kitware.com</a>
&gt; <a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/insight-users">http://public.kitware.com/mailman/listinfo/insight-users</a>



</signed></fstream></pre>
</body>
</html>

--------------090409030006050908070401--