[Insight-users] crashes N-D Linear Time Exact Signed Euclidean Distance Transform

Oleksandr Dzyubak adzyubak at gmail.com
Tue Jun 3 15:36:01 EDT 2008


Hi Gaëtan,

Thanks for your help.

I have rebuilt ITK to include all the changes made recently.
Following the link you provided, I downloaded your version of the filter.
During the compilation I got some warnings but was able to get an 
executable (see below).
However when I ran the executable, the program crashed again
with a different error message though (before it was malloc() from 
AnalyzeIO).

**************** Begin Error Message *********
dzyubak at debian: /Lehmann$ ./SignedMaurerDistanceMapImageFilterTest 
SquareBinary201.hdr test.hdr
SignedMaurerDistanceMapImageFilterTest: 
/usr/local/include/InsightToolkit/Utilities/vxl/core/vnl/vnl_vector.h:168: 
T& vnl_vector<T>::operator()(unsigned int) [with T = double]: Assertion 
`i<size()' failed.
Aborted
************** End Error Message ********


*********** Begin Compilation Warnings ****
dzyubak at debian: /BUILD$ make
Scanning dependencies of target SignedMaurerDistanceMapImageFilterTest
[100%] Building CXX object 
CMakeFiles/SignedMaurerDistanceMapImageFilterTest.dir/itkSignedMaurerDistanceMapImageFilterTest.cxx.o
/home/dzyubak/Test/N-D_Linear_Time_Exact_Signed_Euclidean_Distance_Transform/Lehmann/itkBinaryBorderImageFilter.txx: 
In member function 'void itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::CompareLines(std::vector<itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::runLength, 
std::allocator<itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::runLength> >&, const 
std::vector<itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::runLength, 
std::allocator<itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::runLength> >&) [with TInputImage = itk::Image<double, 
3u>, TOutputImage = itk::Image<double, 3u>]':
/home/dzyubak/Test/N-D_Linear_Time_Exact_Signed_Euclidean_Distance_Transform/Lehmann/itkBinaryBorderImageFilter.txx:250:   
instantiated from 'void itk::BinaryBorderImageFilter<TInputImage, 
TOutputImage>::ThreadedGenerateData(const typename 
TOutputImage::RegionType&, int) [with TInputImage = itk::Image<double, 
3u>, TOutputImage = itk::Image<double, 3u>]'
/home/dzyubak/Test/N-D_Linear_Time_Exact_Signed_Euclidean_Distance_Transform/Lehmann/itkSignedMaurerDistanceMapImageFilterTest.cxx:69:   
instantiated from here
/home/dzyubak/Test/N-D_Linear_Time_Exact_Signed_Euclidean_Distance_Transform/Lehmann/itkBinaryBorderImageFilter.txx:405: 
warning: unused variable 'ee1'
Linking CXX executable SignedMaurerDistanceMapImageFilterTest
[100%] Built target SignedMaurerDistanceMapImageFilterTest

********* End Compilation Warnings *******

Gaëtan Lehmann wrote:
>
> Hi,
>
> The SignedMaurerDistanceMapImageFilter won't work when the input image 
> is 2D but the filter is 3D — the size is 1 on one dimension.
> I have fixed that in an external repository, with some other changes to
>
>   a. avoid spending so much time in the border detection
>   b. multithread it
>   c. make it work with any sizes on all the dimensions
>
> That work is available at
>
>   http://voxel.jouy.inra.fr/darcs/contrib-itk/watershed
>
> You'll have to take the classes SignedMaurerDistanceMapImageFilter and 
> BinaryBorderImageFilter.
>
> I'll try to put b. and c. in ITK before the next release.
> a. has to pass through the process of the peer review in the insight 
> journal before being integrated in ITK.
>
> Regards,
>
> Gaëtan
>
>
> Le 2 juin 08 à 21:18, Oleksandr Dzyubak a écrit :
>
>> Hi Bill,
>>
>> Now I am a bit confused by what you are saying.
>>
>> 1) You say that it works for 3D but does not for 2D.
>> I cannot understand that since 2D dimensionality is a particular case 
>> of 3D.
>> Lets say 2D is a 3D with just one z-component. From my prospective, 
>> it has to work
>> for 2D if it does for 3D. Opposite is not necessary true though.
>>
>> 2) If I comment the writer out, the program still crashes with the 
>> same error.
>>
>> 3) All my images are in the Analyze75 format
>> and while using the other ITK filters I have not had any problems so 
>> far.
>> (I mean with ITK Analyze reader/writer, except orientations, of course).
>>
>> Do you mean that even though my executables did not complain,
>> the results I was getting could be wrong since I used ITK Analyze 
>> reader/writer?
>>
>> If so, in what fashion could the final results be wrong?
>>
>> Is it error-prone for some particular platform/compiler
>> (Linux Debian with gcc 4.1.2 in my case) or it is more general case?
>>
>> How severe does it affect the final results?
>>
>> Thanks for your help,
>>
>> Alex
>>
>>
>> Bill Lorensen wrote:
>>> Oleksandr,
>>>
>>> There are some known problems in the ITK Analyze reader/writer when
>>> the images are 2D and not 3D. I think the read part has been fixed
>>> recently. However, the write part still has problems. If your images
>>> are 3D, then all should be fine. Until we fix this 2D Analyze image
>>> problem, I'm afraid you cannot run the filters.
>>>
>>> Bill
>>>
>>> On Sun, Jun 1, 2008 at 1:07 PM, Oleksandr Dzyubak 
>>> <adzyubak at gmail.com> wrote:
>>>
>>>> Hi Bill,
>>>>
>>>> This time I try to be more accurate.
>>>>
>>>> 1) I downloaded ITK from CVS, compiled with the RelWithDeb flag, and
>>>> installed on my Linux box.
>>>> 2) I have Debian Etch with gcc 4.1.2
>>>> 3) The example itkSignedMaurerDistanceMapImageFilterTest.cxx was taken
>>>> from ITK distro and not from IJ.
>>>>
>>>> Insight/Testing/Code/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest.cxx 
>>>>
>>>>
>>>> 4) Example was compiled in debug mode.
>>>> 5) As you advised, the example was run on both SquareBinary201.png and
>>>> SquareBinary201.hdr.
>>>>
>>>> Results.
>>>> As you predicted, the example has processed the *.png image taken 
>>>> from ITK
>>>> distro resulting
>>>> in a nice looking map.
>>>>
>>>> dzyubak at debian: /BUILD$ ./SignedMaurerDistanceMapImageFilterTest
>>>> SquareBinary201.png test_png.hdr
>>>> WARNING: In /root/Insight/Code/IO/itkAnalyzeImageIO.cxx, line 1280
>>>> AnalyzeImageIO (0x8169a98): ERROR: Analyze 7.5 File Format Only 
>>>> Allows RPI,
>>>> PIR, and RIP Orientation
>>>>
>>>> However when I tried to run it on a real stuff (all my images in 
>>>> Analyze75
>>>> format), the same image but
>>>> taken from IJ archive (SquareBinary201.hdr), it crashes.
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users
>
> --Gaëtan Lehmann
> Biologie du Développement et de la Reproduction
> INRA de Jouy-en-Josas (France)
> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
> http://voxel.jouy.inra.fr  http://www.mandriva.org
> http://www.itk.org  http://www.clavier-dvorak.org
>



More information about the Insight-users mailing list