[Insight-users] Multiresolution ITK Guide example fails on VS2005 - fixed but results are not the expected ones

Luis Ibanez luis.ibanez at kitware.com
Fri Dec 23 10:12:34 EST 2005


Hi Axel,

The values in the Software Guide don't seem to be up to date.
This is because they were typed manually from the output of
the test in an early version of ITK.

We should modify the build process of the guide in order to get
these number also automatically from the output of the test,
just as we are doing with the images.
(Hopefully for the next version of the guide).


In the meantime, for your reference, here are some of the output
values that I get with today's build of ITK.


    The Linux results are from zion.kitware which is a
    Dual processor, with Pentium IV at 2.8Ghz running
    Linux Debian: uname -a
    Linux zion 2.4.27-2-686-smp #1 SMP
    Mon May 16 16:55:31 JST 2005 i686 GNU/Linux


    The Windows results are from darwinia.kitware which is
    a Dell D810 laptop with a Pentium R (M) at 1.86GHz


---------------------------------

Windows XP, Visual Studio 8, 2005 (Beta)
Release mode

$ ./Release/MultiResImageRegistration1.exe 
BrainProtonDensitySliceBorder20.png BrainProtonDensitySliceShifted13x17y.png
   output.png
0   -0.419408   [11.0796, 11.5431]
1   -0.775143   [18.0515, 25.9442]
2   -0.621443   [15.2813, 18.4392]
3   -1.00688   [7.81465, 15.567]
4   -0.733843   [11.7844, 16.0582]
5   -1.17593   [15.2929, 17.9792]
0   -0.902265   [13.4257, 17.2627]
1   -1.21519   [11.6959, 16.2588]
2   -1.04207   [12.6029, 16.68]
3   -1.21741   [13.4286, 17.2439]
4   -1.21605   [12.9899, 17.0041]
5   -1.26825   [13.163, 16.8237]
0   -1.25692   [13.0716, 16.909]
1   -1.29465   [12.9896, 17.0033]
2   -1.30922   [13.0513, 16.9934]
3   -1.30722   [13.0205, 16.9987]
4   -1.30978   [12.9897, 17.0039]
Result =
  Translation X = 12.9897
  Translation Y = 17.0039
  Iterations    = 6
  Metric value  = -1.30921

----------------------------------------

Linux Debian with GCC 3.3
on Release mode (-O3):

0   -0.419408   [11.0796, 11.5431]
1   -0.775143   [18.0515, 25.9442]
2   -0.621443   [15.2813, 18.4392]
3   -1.00688   [7.81465, 15.567]
4   -0.733843   [11.7844, 16.0582]
5   -1.17593   [15.2929, 17.9792]
0   -0.902265   [13.4257, 17.2627]
1   -1.21519   [11.6959, 16.2588]
2   -1.04207   [12.6029, 16.68]
3   -1.21741   [13.4286, 17.2439]
4   -1.21605   [12.9899, 17.0041]
5   -1.26825   [13.163, 16.8237]
0   -1.25692   [13.0716, 16.909]
1   -1.29465   [12.9896, 17.0033]
2   -1.30922   [13.0513, 16.9934]
3   -1.30722   [13.0205, 16.9987]
4   -1.30978   [12.9897, 17.0039]
Result =
  Translation X = 12.9897
  Translation Y = 17.0039
  Iterations    = 6
  Metric value  = -1.30921

----------------------------------------

and here are the results in Linux Debian, with gcc 3.4
on normal mode (no optimization, no debug):

0   -0.419408   [11.0796, 11.5431]
1   -0.775143   [18.0515, 25.9442]
2   -0.621443   [15.2813, 18.4392]
3   -1.00688   [7.81465, 15.567]
4   -0.733843   [11.7844, 16.0582]
5   -1.17593   [15.2929, 17.9792]
0   -0.902265   [13.4257, 17.2627]
1   -1.21519   [11.6959, 16.2588]
2   -1.04207   [12.6029, 16.68]
3   -1.21741   [13.4286, 17.2439]
4   -1.21605   [12.9899, 17.0041]
5   -1.26825   [13.163, 16.8237]
0   -1.25692   [13.0716, 16.909]
1   -1.29465   [12.9896, 17.0033]
2   -1.30922   [13.0513, 16.9934]
3   -1.30722   [13.0205, 16.9987]
4   -1.30978   [12.9897, 17.0039]
Result =
  Translation X = 12.9897
  Translation Y = 17.0039
  Iterations    = 6
  Metric value  = -1.30921

----------------------------------------

Here are the results in Linux Debian, with gcc 2.95
in Release mode (-O3)

0   -0.419408   [11.0796, 11.5431]
1   -0.775143   [18.0515, 25.9442]
2   -0.621443   [15.2813, 18.4392]
3   -1.00688   [7.81465, 15.567]
4   -0.733843   [11.7844, 16.0582]
5   -1.17593   [15.2929, 17.9792]
0   -0.902265   [13.4257, 17.2627]
1   -1.21519   [11.6959, 16.2588]
2   -1.04207   [12.6029, 16.68]
3   -1.21741   [13.4286, 17.2439]
4   -1.21605   [12.9899, 17.0041]
5   -1.26825   [13.163, 16.8237]
0   -1.25692   [13.0716, 16.909]
1   -1.29465   [12.9896, 17.0033]
2   -1.30922   [13.0513, 16.9934]
3   -1.30722   [13.0205, 16.9987]
4   -1.30978   [12.9897, 17.0039]
Result =
  Translation X = 12.9897
  Translation Y = 17.0039
  Iterations    = 6
  Metric value  = -1.30921

----------------------------------------


Interestingly, these values are different
from the ones you get too, so I would
guess that your platform is performing
float computations slightly different.




Please let us know details about your platform.




We could run basic numerical tests in order
to determine if float point computations are
done differently in your particular machine.




Thanks



     Luis



-----------------------------
Axel Martinez Möller wrote:
>  Hi Luis,
> 
>  I have tried in both modes, obtaining the same results in both (the results
> I wrote in the last mail).
> 
>   axel 
> 
> -----Original Message-----
> From: Luis Ibanez [mailto:luis.ibanez at kitware.com] 
> Sent: Friday, December 23, 2005 12:25
> To: Axel Martinez Möller
> Cc: 'Karthik Krishnan'; 'Insight Users'
> Subject: Re: [Insight-users] Multiresolution ITK Guide example fails on
> VS2005 - fixed but results are not the expected ones
> 
> 
> Hi Axel,
> 
> Are you running the test in Debug mode or in Release mode ?
> 
> The result of numerical computations may differ due to the
> way in which the compiler will decide how to manipulate
> float numbers.
> 
> 
> 
> Please let us know.
> 
> 
>     Luis
> 
> 
> 
> ----------------------------
> Axel Martinez Möller wrote:
> 
>> Hello,
>>
>> The code is not crashing anymore.
>>
>> Karthik: thanks a lot for the correction.
>> Luis: thanks a lot for your help and for directing the problem to the
> 
> right
> 
>>person.
>>
>> Only one additional comment. The result I get is not the result shown in
>>the manual. I get:
>>
>> Translation X = 13.9811
>> Translation Y = 15.9065
>> Iterations    = 9
>> Metric value  = -0.666861
>>
>> In the manual it is said that I should get:
>>
>>Translation X = 13.1035
>>Translation Y = 17.19
>>
>> Which is much closer to the real displacement (13,17). The number of
>>iterations performed is also different than the one indicated in the
> 
> manual:
> 
>>0   -0.428819   [12.2116, 10.3381]
>>1   -0.711042   [13.3697, 26.2961]
>>2   -0.649285   [6.58014, 22.0651]
>>3   -0.625776   [10.5504, 21.5783]
>>4   -0.730836   [12.8036, 18.2733]
>>5   -0.840357   [11.0623, 14.6722]
>>0   -0.742633   [13.0232, 15.0656]
>>1   -0.756987   [14.3962, 16.5198]
>>2   -0.734524   [13.6065, 15.9065]
>>3   -0.743746   [13.6888, 16.3996]
>>4   -0.740966   [13.5939, 16.1683]
>>5   -0.743034   [13.5182, 15.9301]
>>0   -0.673919   [13.6369, 15.9691]
>>1   -0.672428   [13.7589, 15.9963]
>>2   -0.670211   [13.8822, 16.0172]
>>3   -0.667172   [13.9833, 15.9437]
>>4   -0.66599   [13.9184, 15.8369]
>>5   -0.669801   [13.961, 15.8826]
>>6   -0.667906   [14.0018, 15.9299]
>>7   -0.66525   [13.9811, 15.9065]
>>
>> I do not see how this might be related to the correction of the bug. I
> 
> also
> 
>>thought it might be related to the random generator, but since I am using
>>the same seed given in the example it should not have an influence... is
> 
> it
> 
>>also something related to VS2005? Luis: do you get the same results?
>>
>> Sorry that I find so many problems, and many thanks in advance in any
> 
> case,
> 
>>  axel
>>
>>
>>-----Original Message-----
>>From: Karthik Krishnan [mailto:Karthik.Krishnan at kitware.com] 
>>Sent: Thursday, December 22, 2005 19:16
>>To: Axel Martinez Möller
>>Cc: 'Luis Ibanez'; 'Insight Users'
>>Subject: Re: [Insight-users] Multiresolution ITK Guide example fails on
>>VS2005 - fixed
>>
>>Thanks for the bug report. Its been fixed. Please update your repository 
>>orthe file below.
>>
>>
> 
> http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Algorithms/itkMultiResolutionIma
> 
> geRegistrationMethod.txx?root=Insight&r1=text&tr1=1.12&r2=text&tr2=1.11&diff
> 
>>_format=h
>>
>>VS8 is stricter ( and more correct ) in catching bugs with std::vector
>>
>>vector::reserve(n) does not change the size of the vector. It only a 
>>request for allocation of additional memory. vector::size() is unchanged 
>>by reserve(). (from http://www.sgi.com/tech/stl/Vector.html)
>>
>>Earlier VS8 caught a few other bugs by checking if an iterator is 
>>dereferencible prior to derefencing it.
>>(http://www.itk.org/Bug/bug.php?op=show&bugid=2485)
>>
>>Thanks
>>-karthik
>>
>>Axel Martinez Möller wrote:
>>
>>
>>
>>>Hi Luis,
>>>
>>>I am running the program in Debug mode (ITK is also built in Debug mode),
>>>and the wrong line is the line:
>>>
>>>registration->StartRegistration();  (line 492)
>>>
>>>As I said in the first mail, while debugging I "stepped into" until I
>>>localized the problem at line 208 from
>>>itkMultiResolutionImageRegistrationMethod.txx:
>>>
>>>m_FixedImageRegionPyramid[ level ].SetSize( size );
>>>
>>>This causes an error in the "vector" class from C++, line 753 and
>>>consecutive:
>>>
>>>#if _HAS_ITERATOR_DEBUGGING
>>>		if (size() <= _Pos)
>>>			{
>>>			_DEBUG_ERROR("vector subscript out of range");
>>>			_SCL_SECURE_OUT_OF_RANGE;
>>>			}
>>>
>>>Which explains the "Expression: vector subscript out of range" error I
>>>referenced in the first mail.
>>>
>>>That's all the information I managed to extract, I hope it helps. I do not
>>>see a logical explanation if it works for you since I made no changes to
>>
>>the
>>
>>
>>>code... I have ITK release 2.4.1, working under VS2005. If you have any
>>>other suggestion, I will be happy to try it.
>>>
>>>Thanks again for the help,
>>>
>>>axel
>>>
>>>
>>>-----Original Message-----
>>>From: Luis Ibanez [mailto:luis.ibanez at kitware.com] 
>>>Sent: Thursday, December 22, 2005 16:04
>>>To: Axel Martinez Möller
>>>Cc: 'Insight Users'
>>>Subject: Re: [Insight-users] Multiresolution ITK Guide example fails on
>>>VS2005
>>>
>>>
>>>Hi Axel,
>>>
>>>Thanks for your clarification.
>>>
>>>The program runs fine for me when I pass three
>>>arguments.
>>>
>>>Something else should be going wrong then...
>>>
>>>
>>>
>>>Could you please run this program in Debug mode
>>>and let us know in what line it is crashing ?
>>>
>>>
>>> Thanks
>>>
>>>
>>>
>>>    Luis
>>>
>>>
>>>
>>>
>>>---------------------------
>>>Axel Martinez Möller wrote:
>>>
>>>
>>>
>>>
>>>>Hi Luis,
>>>>
>>>>I am using three arguments for the execution, this is the command line I
>>>>use:
>>>>
>>>>register
>>>>
>>>>  
>>>>
>>>
>>>F:\ITK\InsightToolkit-2.4.1\Examples\Data\BrainProtonDensitySliceBorder20.
> 
> p
> 
>>n
>>
>>
>>>
>>>
>>>>g
>>>>
>>>>  
>>>>
>>>
>>>F:\ITK\InsightToolkit-2.4.1\Examples\Data\BrainProtonDensitySliceR10X13Y17
> 
> .
> 
>>p
>>
>>
>>>
>>>
>>>>ng C:\axel\registertest\removeme.mhd
>>>>
>>>>"register" is the name I use for the file, but it has similar contents as
>>>>MultiResImageRegistration1.
>>>>
>>>>Do you know if anything else could explain the problem?
>>>>
>>>>Thanks,
>>>>
>>>>axel
>>>>
>>>>-----Original Message-----
>>>>From: Luis Ibanez [mailto:luis.ibanez at kitware.com] 
>>>>Sent: Thursday, December 22, 2005 14:43
>>>>To: Axel Martinez Möller
>>>>Cc: 'Insight Users'
>>>>Subject: Re: [Insight-users] Multiresolution ITK Guide example fails on
>>>>VS2005
>>>>
>>>>
>>>>
>>>>Hi Axel,
>>>>
>>>>Thanks for pointing this out.
>>>>
>>>>The example that you are using requires three arguments
>>>>in the command line.
>>>>
>>>>You are probably setting only two, and due to a bug in
>>>>the example, the program is attempting to use the third
>>>>argument, and crashes in the process.
>>>>
>>>>
>>>>   We just committed a fix in the CVS repository.
>>>>
>>>>
>>>>Please run the program as:
>>>>
>>>>
>>>>MultiResImageRegistration1  fixedImage movingImage outputImage
>>>>
>>>>
>>>>you can also add a forth and fifth arguments in order to
>>>>get the checkerboard combination of the fixed and moving
>>>>images before and after the registration.
>>>>
>>>>
>>>>Thanks
>>>>
>>>>
>>>>  Luis
>>>>
>>>>
>>>>
>>>>---------------------------
>>>>Axel Martinez Möller wrote:
>>>>
>>>>  
>>>>
>>>>
>>>>
>>>>>Hi all,
>>>>>
>>>>>I was wanting to try the MultiResImageRegistration1 example. It compiled
>>>>>fine with VS2005, but when I executed it using the images indicated in
>>
>>the
>>
>>
>>>>>example, it crashed with the error:
>>>>>
>>>>>---
>>>>>Debug Assertion Failed!
>>>>>Program: F:\ITK\Register\Debug\Register.exe
>>>>>File: C:\Program Files\Microsoft Visual Studio 8\VC\include\vector
>>>>>Line: 756
>>>>>
>>>>>Expression: vector subscript out of range
>>>>>---
>>>>>
>>>>>I do not attach the code as it is EXACTLY the one from the example. I am
>>>>>running it in Debug mode (the same way I compiled ITK), and other
>>
>>examples
>>
>>
>>>>>worked fine.
>>>>>
>>>>>Debugging, I localized the problem at line 208 from
>>>>>itkMultiResolutionImageRegistrationMethod.txx:
>>>>> m_FixedImageRegionPyramid[ level ].SetSize( size );
>>>>>
>>>>>Thank you in advance for any hint,
>>>>>
>>>>>axel
>>>>>
>>>>>_______________________________________________
>>>>>Insight-users mailing list
>>>>>Insight-users at itk.org
>>>>>http://www.itk.org/mailman/listinfo/insight-users
>>>>>
>>>>>
>>>>>    
>>>>>
>>>>
>>>>
>>>>  
>>>>
>>>
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users at itk.org
>>>http://www.itk.org/mailman/listinfo/insight-users
>>>
>>>
>>>
>>
>>
>>
>>
> 
> _______________________________________________
> 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