[Insight-users] Text output problems in MultiResMIRegistration
Vicente Grau
vicente at robots.ox.ac.uk
Fri Nov 19 04:58:03 EST 2004
Thank you again, Luis. After "Preprocess the images...", the program
does not crash. It goes on and finally produces a valid result, which as
far as I can see is a correct registration. The times you have told me
are also consistent with what I have seen in my computer. I would say
that the only problem is the text output.
I have plenty of memory and it doesn't seem to be a problem either.
Regarding the build process, I don't think I am using optimization (I
don't remember checking that option, at least...). These are the
commands I am using. Do you think optimization might be a problem?
Should I reinstall everything, ensuring that no optimizations are
carried out?
g++ -o Common/MultiResMIRegistration.o -ftemplate-depth-50 -DNOMINMAX
-g -I/cygdrive/e/ITK/InsightToolkit-binary
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/Algorithms
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/BasicFilters
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/Common
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/Numerics
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/IO
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/Numerics/FEM
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/Numerics/Statistics
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Code/SpatialObject
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/MetaIO
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/NrrdIO
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/DICOMParser
-I/cygdrive/e/ITK/InsightToolkit-binary/Utilities/DICOMParser
-I/cygdrive/e/ITK/InsightToolkit-binary/Utilities/expat
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/expat
-I/cygdrive/e/ITK/InsightToolkit-binary/Utilities
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/vxl/vcl
-I/cygdrive/e/ITK/InsightToolkit-1.8.0/Utilities/vxl/core
-I/cygdrive/e/ITK/InsightToolkit-binary/Utilities/vxl/vcl
-I/cygdrive/e/ITK/InsightToolkit-binary/Utilities/vxl/core
-I/usr/include/w32api
-I/cygdrive/e/ITK/InsightApplications-1.8.0/MultiResMIRegistration/Common
-I/cygdrive/e/ITK/InsightApplications-1.8.0/MultiResMIRegistration/../IBSRValidation/Common
-c
/cygdrive/e/ITK/InsightApplications-1.8.0/MultiResMIRegistration/Common/MultiResMIRegistration.cxx
g++ -ftemplate-depth-50 -DNOMINMAX
Common/MultiResMIRegistration.o -o
/cygdrive/e/ITK/InsightApplications-binary/MultiResMIRegistration/MultiResMIRegistration.exe
-L/cygdrive/e/ITK/InsightToolkit-binary/bin
-L/cygdrive/e/ITK/gdcm-0.4.0/gdcm -lITKAlgorithms -lITKCommon
-lITKBasicFilters -lITKNumerics -lITKIO -lITKBasicFilters -lITKNrrdIO
-litkpng -litktiff -litkjpeg -lITKMetaIO -litkzlib -lITKDICOMParser
-lITKEXPAT -lITKCommon -litkvnl_inst -litkvnl_algo -litkvnl -litkvcl
-litknetlib -lm -litksys -lpthread -lgdi32 -lm
Luis Ibanez wrote:
>
> Hi Vincent,
>
>
> What happens after you get the message:
>
> > Preprocess the images ...
>
> ???
>
> Does it crashes ?
> Does it keeps running ?
> Does it exists ?
>
> Did you forced the program to stop ?
>
>
> It may simply be that it is still computing
> the first level of the pyramid....
>
>
> Did you checked with your Task Manager to see
> if the programs is still running and taking
> CPU cycles ?
>
> The normal output from this filter is the following:
> (fresh from a Linux run with today's CVS version)
>
> ========================================================
> Parsing input ...
> Fixed image filename: brainweb165a10f17.mha
> Moving image filename: brainweb1e5a10f17Rot10Tx15.mha
> 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: [8, 8, 1]
> Number of iterations: [2500, 2500, 2500, 2500, 2500]
> Learning rates: [1e-04, 1e-05, 5e-06, 1e-06, 5e-07]
> Translation scale: 320
> Output filename: t1tot2.mhd
>
> Preprocess the images ...
> Register the images ...
> --- Starting level 0
> No. Iterations: 2500 Learning rate: 1e-04
> --- Starting level 1
> No. Iterations: 2500 Learning rate: 1e-05
> --- Starting level 2
> No. Iterations: 2500 Learning rate: 5e-06
> --- Starting level 3
> No. Iterations: 2500 Learning rate: 1e-06
> --- Starting level 4
> No. Iterations: 2500 Learning rate: 5e-07
> Final parameters: [-1.7988e-05, 0.000144513, -0.0873063, 0.996182,
> 2.38895, -17.2621, 0.103705]
> Overall transform matrix:
> 0.984755 0.173946 0.000291063
> -0.173946 0.984755 1.06049e-05
> -0.000284781 -6.10723e-05 1
>
> Overall transform offset:
> [-15.0512, 0.0384943, 0.135935]
> Generating output ...
>
> =========================================
>
> The whole process took 109 seconds
> in a dual processor Pentium IV, 2.4Ghz
> running Debian Linux and Gcc 3.3
>
> ==========================================
>
> The time between the message:
>
> Preprocess the images ...
>
> and the message
>
> Register the images ...
>
>
> was about 3 seconds.
>
> ===============================
>
> Note that this example is memory demanding, it may
> reache a memory footprint of 750 Mbytes.
>
> You may want to double check with your Task Manager
> to see if your system is swapping memory to disk.
> If this is the case, that will explain a long
> computation time...
>
> ===================================
>
> BTW, did you compiled this program with optmization ?
>
>
>
> Please let us know what you find,
>
>
> Thanks
>
>
>
> Luis
>
>
>
> -------------------
> Vicente Grau wrote:
>
>> Luis,
>>
>> thank you very much for your help. I am sorry I didn't explain my
>> problem well enough. The fact is that I don't get any messages from
>> the Command/Observer at all. The text output I get from the program is:
>>
>> MultiResMIRegistration.exe BrainWebT1toT2b.txt
>> Parsing input ...
>> Fixed image filename: brainweb165a10f17.mha
>> brainweb1e5a10f17Rot10Tx15.mha
>> 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: [8, 8, 1]
>> Number of iterations: [2500, 2500, 2500, 2500, 2500]
>> Learning rates: [0.0001, 1e-05, 5e-06, 1e-06, 5e-07]
>> Translation scale: 320
>> Output filename: t1tot2.mha
>> Preprocess the images ...
>>
>> and that's all. There are other std::cout<< lines that should be
>> executed (in MIMApplicationBase::Execute(), std::cout << "Register
>> the images ... ") that don't seem to work (I have checked on gdb if
>> the program went through them, and it did so but with no effect.) I
>> also added other cout << lines myself, not related to the Command/
>> Observer, but directly in the function MIMPreprocessor::Execute(),
>> and I found that they stopped working right after the
>> normalizer->Update(); line. That's why I thought this could be
>> interfering with the std output. I don't know what else it could be;
>> any ideas?
>>
>> Thank you very much.
>>
>> Vicente
>>
>>
>> Luis Ibanez wrote:
>>
>>>
>>> Hi Vicente,
>>>
>>>
>>> Thanks for your detailed report.
>>>
>>> The MultiResMIRegistration application only have one
>>> Observer connected to the registration algorithm.
>>>
>>> This observer is only intended to react to the changes
>>> in resolution level. In other words, since this is a
>>> multi-resolution registration, IterationEvents are triggered
>>> *at the end* of the registration process of each level
>>> of the pyramid.
>>>
>>> What the Command/Observer does at that point is to invoke
>>> the StartNewLevel() method of the MIMRegistrator. In lines
>>> 180-202. This method *only* prints out the number of iterations
>>> and the learning rate that is going to be used for the *next*
>>> level of the pyramid.
>>>
>>> In summary: In this application you should only expect *one*
>>> printed line per change in level of the pyramid. Since you are
>>> setting your registration to use 5 levels, you will only get
>>> 4 messages.
>>>
>>> If you want to get trace output from the registration process
>>> inside each one of the pyramid level, you may want to add
>>> another Command/Observer and connect it to the optimizer.
>>>
>>> You will find multiple examples on how to do this in the
>>> ITK Software Guide
>>>
>>> http://www.itk.org/ItkSoftwareGuide.pdf
>>>
>>>
>>> in the registration chapter.
>>>
>>>
>>>
>>> Please let us konw if you have further questions,
>>>
>>>
>>>
>>> Thanks
>>>
>>>
>>>
>>> Luis
>>>
>>>
>>>
>>> -----------------------
>>> Vicente Grau wrote:
>>>
>>>> Hi everybody,
>>>>
>>>> I have recently installed ITK Release 1.8.1 on a Windows XP
>>>> platform using cygwin. Running MultiResMIRegistration on two sample
>>>> images (brainweb165a10f17.mha and brainweb1e5a10f17Rot10Tx15.mha,
>>>> both in the ftp server), the program returns a reasonable
>>>> registered image. However, I can see no text output from the
>>>> Observer. Adding some cout<< lines to check where it fails, I have
>>>> tracked the problem down to MIMPreprocessor.txx: in function
>>>> Execute(), it stops printing anything right after the line:
>>>> normalizer->Update();
>>>>
>>>> Is it possible that this command somehow interferes with text
>>>> printing in my window?
>>>> I have debugged the program with gdb and it runs correctly past
>>>> this line, only it doesn't react to cout<< lines anymore.
>>>> I have gone through the pdfs and the list, but I couldn't find
>>>> anything related. Any help will be much appreciated!
>>>>
>>>> This is the parameters file I am using as input to the program.
>>>>
>>>> brainweb165a10f17.img
>>>> brainweb1e5a10f17Rot10Tx15.img
>>>> 0 1 2
>>>> 0 0 0
>>>> 5
>>>> 4 4 1
>>>> 8 8 1
>>>> 2500 2500 2500 2500 2500
>>>> 1e-4 1e-5 5e-6 1e-6 5e-7
>>>> 320
>>>> t1tot2.mha
>>>>
>>>>
>>>> Vicente Grau
>>>>
>>>> _______________________________________________
>>>> 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