[Insight-users] Is there a limit for the number of Landmarks -Pairs for Thin Plate Spline Transform ?

Siwei Yang s.yang at dkfz-heidelberg.de
Wed Jul 20 12:24:59 EDT 2005


Hi Luis,
I did it  as you said, and used gdb to debug this program under Linux.
the call stack was put out as following:

.....................       0 146.81281        0 146.50938        0 
145.98630        0 145.52319        0 145.12064        0 
144.77914        0 144.49913        0 144.28098        0 
144.12494        0 144.03125        0 144.00000        0 
144.03125        0 146.53668        0 145.91093        0 
143.08739        0 143.22360        0 143.42245        0 
143.68369        0 144.00694        0 147.52628        0 
146.74127        0 146.01370        0 143.40154        0 
143.85062        0 146.84004        0 143.19916        0 
143.75327        0 146.16429        0 143.39107        0 
146.41380        0 145.49915        0 143.09787        0 
142.12671        0 142.87407        0 145.49915        0 
142.72000        0 143.58969        0 144.89996        0 142.94055        0
Program received signal SIGINT, Interrupt.
[Switching to Thread 182985787712 (LWP 31553)]
0x0000002a9aa5afc2 in __write_nocancel () from /lib64/tls/libc.so.6
(gdb) backtrace  /////////////////CALL STACK
#0  0x0000002a9aa5afc2 in __write_nocancel () from /lib64/tls/libc.so.6
#1  0x0000002a9aa134b3 in _IO_new_file_write () from /lib64/tls/libc.so.6
#2  0x0000002a9aa13200 in new_do_write () from /lib64/tls/libc.so.6
#3  0x0000002a9aa13436 in _IO_new_file_xsputn () from /lib64/tls/libc.so.6
#4  0x0000002a9aa09fec in fwrite () from /lib64/tls/libc.so.6
#5  0x0000002a9a7657b7 in std::__basic_file<char>::xsputn () from 
/usr/lib64/libstdc++.so.5
#6  0x0000002a9a71d918 in std::basic_filebuf<char, 
std::char_traits<char> >::_M_convert_to_external () from 
/usr/lib64/libstdc++.so.5
#7  0x0000002a9a71dae0 in std::basic_filebuf<char, 
std::char_traits<char> >::_M_really_overflow () from 
/usr/lib64/libstdc++.so.5
#8  0x0000002a9a71dcf1 in std::basic_filebuf<char, 
std::char_traits<char> >::overflow () from /usr/lib64/libstdc++.so.5
#9  0x0000002a9a758305 in std::basic_streambuf<char, 
std::char_traits<char> >::xsputn () from /usr/lib64/libstdc++.so.5
#10 0x0000002a9a71d3b6 in std::basic_filebuf<char, 
std::char_traits<char> >::xsputn () from /usr/lib64/libstdc++.so.5
#11 0x0000002a9a74eea6 in std::ostream::write () from 
/usr/lib64/libstdc++.so.5
#12 0x0000002a9a74f0c5 in std::operator<< <std::char_traits<char> > () 
from /usr/lib64/libstdc++.so.5
#13 0x0000002a97c87c12 in vnl_matlab_print<float> () from 
/usr/local/lib/InsightToolkit/libitkvnl.so
#14 0x0000002a97c87db9 in vnl_matlab_print<float> () from 
/usr/local/lib/InsightToolkit/libitkvnl.so
#15 0x0000002a978f88e0 in vnl_svd<float>::vnl_svd () from 
/usr/local/lib/InsightToolkit/libitkvnl_algo.so
#16 0x000000000049c008 in itk::KernelTransform<float, 
2u>::ComputeWMatrix (this=0x7cefd0) at itkKernelTransform.txx:196
#17 0x00000000004966ef in SetupKernelTransform (_source=0x7cf190, 
df=0x7d02a0, downsamplingfactor=3) at 
/home/yang/workspace2/TPS/main_18_Juli.cpp:1053
#18 0x0000000000498c46 in main (argc=18, argv=0x7fbfffe198) at 
/home/yang/workspace2/TPS/main_18_Juli.cpp:1408

It seems to be an error in vnl library, and it lies in 
vnl_linpack_svdc() of vnl_svd.txx, but I can not find out the reason .
Do you have any idea?

Thanks
Siwei








Luis Ibanez wrote:

>
> Hi Siwei,
>
> There is no explicit limit to the number of landmarks in your
> KernelTransform class.
>
> The only limitation may arise from the VNL mathematical libraries
> that are used for computing the matrix operations of the Transform.
>
>
>
>
>
> Please do the following:
>
>
> 1) Compile your program in Debug mode,
>
> 2) Run it again and interrupt it as soon as you
>    start seeing the output in the console.
>
> 3) Then look at the callstack.
>    (if possible post it to the mailing list).
>
>
>
> From it we should be able to figure out where the
> messages are comming from.
>
>
>
>    Thanks
>
>
>      Luis
>
>
> ------------------
> Siwei Yang wrote:
>
>> Hi every body,
>> when I 'was using itk::ThinPlateSplineKernelTransform(actually 
>> include all the classes inherited from itk::KernelTransform), I found 
>> ,that there might be  an upper limit for the number of 
>> landmark-pairs. This limit is about 150-200 pairs. Sorry , that I can 
>> 't say exactly, how much.
>> If I exceed this limt, for example 300, then I will get huge amount 
>> of standard outputs, which almost floods my screen, just like 
>> ............................................................
>>        0 52.00000        0 53.00000        0 53.00000        0 
>> 54.00000        0 55.00000        0 55.00000        0 56.00000        
>> 0 56.00000        0 57.00000        0 57.00000        0 
>> 58.00000        0 58.00000        0 59.00000        0 59.00000        
>> 0 60.00000        0 60.00000        0 61.00000        0 
>> 61.00000        0 61.00000        0 62.00000        0 63.00000        
>> 0 64.00000        0 64.00000        0 64.00000        0 
>> 65.00000        0 66.00000        0 66.00000        0 67.00000        
>> 0 68.00000        0 69.00000        0 70.00000        0 
>> 70.00000        0 71.00000        0 72.00000        0 73.00000        
>> 0 73.00000        0 74.00000        0 75.00000        0 
>> 76.00000        0 77.00000        0 77.00000        0 78.00000        
>> 0 79.00000        0 81.00000        0 82.00000        0 
>> 83.00000        0 83.00000        0 84.00000        0 85.00000        
>> 0 87.00000        0 88.00000        0 89.00000        0 
>> 90.00000        0 91.00000        0 92.00000        0 93.00000        
>> 0 94.00000        0 95.00000        0 96.00000        0 
>> 98.00000        0 99.00000        0 100.00000        0 
>> 101.00000        0 102.00000        0 1.00000        0  
>> 1.00000        0  1.00000        0  1.00000        0  1.00000        
>> 0 .................................................................
>> ..................................................................................................................................................................................................................................................................................................................................... 
>>
>> and I don't know , where they come from. Finally I 'll obtain a wrong 
>> interpolation.
>> Because my application uses usually more than 3000 pairs landmarks 
>> (3D), it would be ideal, if this could be allowed.
>> Did anyone have this problem? How can I do ?
>>
>>
>> Thank you very much
>> best wishes
>>
>> Siwei
>> _______________________________________________
>> 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