[Insight-users] Multiresolution ITK Guide example fails on VS2005
- fixed but results are not the expected ones
Simon Warfield
warfield at bwh.harvard.edu
Fri Dec 23 10:28:40 EST 2005
The difference in the results is due to in one case registering to :
InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceShifted13x17y.png
and in the other to :
InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceR10X13Y17.png
/opt/x86_64/builds/itk/2.4.1/gcc-release/bin/MultiResImageRegistration1
/opt/x86_64/src/ITK/InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceBorder20.png
/opt/x86_64/src/ITK/InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceShifted13x17y.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
/opt/x86_64/builds/itk/2.4.1/gcc-release/bin/MultiResImageRegistration1
/opt/x86_64/src/ITK/InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceBorder20.png
/opt/x86_64/src/ITK/InsightToolkit-2-4-1/Examples/Data/BrainProtonDensitySliceR10X13Y17.png
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]
Result =
Translation X = 13.9811
Translation Y = 15.9065
Iterations = 9
Metric value = -0.666861
Luis Ibanez wrote:
>
> 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
>>
>>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
--
Simon K. Warfield, Ph.D. warfield at crl.med.harvard.edu
Phone: 617-732-7090 FAX: 617-582-6033
Associate Professor of Radiology, Harvard Medical School
Director, Computational Radiology Laboratory,
Departments of Radiology at Children's Hospital and
Brigham and Women's Hospital,
Thorn 329, Dept Radiology, Brigham and Women's Hospital
75 Francis St, Boston, MA, 02115
MA 280, Dept Radiology, Children's Hospital Phone: 617-355-4566
More information about the Insight-users
mailing list