[Insight-users] ImageFilter problems

Bill Lorensen bill.lorensen at gmail.com
Sat Dec 24 21:39:59 EST 2011


I build my itk with special CXX_FLAGS (specified in the CMakeCache.txt
file) that check stl container and iterator usage. I have to make sure
I build any associated apps with the same flags. If I don't I get
crashes.

Let me ask, can you run any ITK executables at all?

On Sat, Dec 24, 2011 at 4:43 PM, Fleysher, Lazar
<lazar.fleysher at mountsinai.org> wrote:
> Hello Bill
>
> could you ellaborate on this one about the CXX_FLAGS.
> What do you mean by this and why it was not running before. Was it caused
> by differences in CXX_FLAGS?
>
> Thanks
>
> Lazar
> ________________________________________
> From: Bill Lorensen [bill.lorensen at gmail.com]
> Sent: Saturday, December 24, 2011 12:35
> To: Fleysher, Lazar
> Cc: Insight-users at itk.org
> Subject: Re: [Insight-users] ImageFilter problems
>
> Ignore my last email. I'm an idiot. It works fine on linux.
>
> Be sure to build your code with the same CXX_FLAGS that were used for
> building ITK.
>
> On Sat, Dec 24, 2011 at 12:14 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>> More info.
>>
>> I just ran it on my linux system (the other one was mingw).
>>
>> Now it is crashing.  Maybe there is something funny with your .nii file.
>>
>> I'll keep looking.
>>
>> Also, I was just able to read it into Slicer which uses ITK...
>>
>> Hmmm
>>
>> On Sat, Dec 24, 2011 at 11:05 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>> The code you sent has a typo in it, so I doubt that you ran it:
>>> writer->SetInput( shFIlter->GetOutput() );
>>> has to be
>>> writer->SetInput( shFilter->GetOutput() );
>>>
>>> After I fixed the compile error, the code works for me, at least when
>>> I use when I use the Laplacian. I ran it on your data file.
>>>
>>> How are you running the program. I find it unusual to run it as:
>>>
>>> TestFilter outputfile inputfile
>>>
>>> I would have expected
>>> TestFilter inputfile outputfile
>>>
>>> but that is how the code is written.
>>>
>>> Bill
>>>
>>> On Sat, Dec 24, 2011 at 10:18 AM, Fleysher, Lazar
>>> <lazar.fleysher at mountsinai.org> wrote:
>>>> Hello Bill
>>>>
>>>> I am definitely missing something...
>>>> Below is the code I use. There is a line with // which shows the Laplacian filter
>>>> I tried to use with the same outcome....
>>>>
>>>> Thanks
>>>>
>>>> Lazar
>>>> --------------------------------
>>>> start code
>>>> --------------------------------
>>>> #include "itkArray.h"
>>>> #include "itkVariableLengthVector.h"
>>>> #include "itkImage.h"
>>>> #include "itkImageRegionConstIterator.h"
>>>> #include "itkImageFileReader.h"
>>>> #include "itkImageFileWriter.h"
>>>> #include "itkImageRegionIteratorWithIndex.h"
>>>> #include "itkOptimalSharpeningImageFilter.h"
>>>> #include "itkLaplacianSharpeningImageFilter.h"
>>>>
>>>>
>>>> /////////////////////////////////////////////////////
>>>> template <unsigned int ImageDimension,unsigned int NVectorComponents>
>>>> int TestFilter(unsigned int argc, char *argv[])
>>>> {
>>>> std::cout << "testFilter executed" << std::endl;
>>>>
>>>>  typedef float  PixelType;
>>>>  typedef itk::Image<PixelType, ImageDimension>           ImageType;
>>>>  typedef itk::ImageRegionIteratorWithIndex<ImageType> Iterator;
>>>>  typedef itk::ImageFileReader<ImageType>  ImageFileReader;
>>>>  typedef itk::ImageFileWriter<ImageType> writertype;
>>>>
>>>>  typename ImageType::Pointer averageimage = NULL;
>>>>
>>>>  typename ImageFileReader::Pointer reader = ImageFileReader::New();
>>>>  reader->SetFileName(argv[2]); // load this image...
>>>>  reader->Update();
>>>>  averageimage=reader->GetOutput();
>>>>
>>>>    typedef itk::OptimalSharpeningImageFilter<ImageType,ImageType > sharpeningFilter;
>>>> //  typedef itk::LaplacianSharpeningImageFilter<ImageType,ImageType > sharpeningFilter;
>>>>  typename sharpeningFilter::Pointer shFilter = sharpeningFilter::New();
>>>>
>>>>    shFilter->SetInput( averageimage );
>>>>    shFilter->SetSValue(0.5);
>>>> std::cout << "before" << std::endl;
>>>>    shFilter->Update();
>>>> std::cout << "after" << std::endl;
>>>>
>>>>  std::cout << " writing output ";
>>>>  {
>>>>    typename writertype::Pointer writer = writertype::New();
>>>>    writer->SetFileName(argv[1]); // save into this name....
>>>>    writer->SetInput( shFIlter->GetOutput() );
>>>>    writer->Update();
>>>>  }
>>>>
>>>>  return 0;
>>>> }
>>>>
>>>> /////////////////////////////////////////////////////
>>>>
>>>> int main(int argc, char * argv[])
>>>> {
>>>>
>>>> TestFilter<3,1>(argc,argv);
>>>> return 0;
>>>> }
>>>> ---------------------------------------------------
>>>> end of code
>>>> --------------------------------------------------
>>>> ________________________________________
>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>> Sent: Saturday, December 24, 2011 07:52
>>>> To: Fleysher, Lazar
>>>> Cc: Insight-users at itk.org
>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>
>>>> Please send me your code.
>>>>
>>>> On Sat, Dec 24, 2011 at 6:45 AM, Fleysher, Lazar
>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>> Hello Bill
>>>>>
>>>>> Yes I am modifying your code. The only difference between your code and mine
>>>>> was the use of a pointer to access the filtered data... (was there anything else that I missed?)
>>>>>
>>>>> For laplacian example simply replace
>>>>>
>>>>> typedef itk::OptimalSharpeningImageFilter<ImageType,ImageType > sharpeningFilter;
>>>>>
>>>>> with
>>>>>
>>>>> typedef itk::LaplacianSharpeningImageFilter<ImageType,ImageType > sharpeningFilter;
>>>>>
>>>>>
>>>>> Same result: seg fault on Update...
>>>>>
>>>>> Thanks
>>>>>
>>>>> Lazar
>>>>>
>>>>> ________________________________________
>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>> Sent: Friday, December 23, 2011 17:52
>>>>> To: Fleysher, Lazar
>>>>> Cc: Insight-users at itk.org
>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>
>>>>> You are modifying my code, correct?
>>>>>
>>>>> Please send the code with the LaplacianSharpening.
>>>>>
>>>>>
>>>>> On Fri, Dec 23, 2011 at 5:47 PM, Fleysher, Lazar
>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>> Dear Bill
>>>>>>
>>>>>> I did try catching am exception, but none is generated.
>>>>>>
>>>>>> The filter was there in the code. I tried to put another one (laplacian), but
>>>>>> Result is the same: seg fault inside Update()....
>>>>>>
>>>>>> Lazar
>>>>>>
>>>>>> ________________________________________
>>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>>> Sent: Friday, December 23, 2011 17:21
>>>>>> To: Fleysher, Lazar
>>>>>> Cc: Insight-users at itk.org
>>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>>
>>>>>> Where did you get the filter: OptimalSharpeningImageFilter?
>>>>>>
>>>>>> On Fri, Dec 23, 2011 at 4:41 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>>>>>> Put a try/catch block around your code:
>>>>>>>  try
>>>>>>>    {
>>>>>>> your code
>>>>>>>  catch (itk::ExceptionObject& e)
>>>>>>>    {
>>>>>>>    std::cerr << "Exception detected: "  << e;
>>>>>>>    return EXIT_FAILURE;
>>>>>>>    }
>>>>>>>
>>>>>>> On Fri, Dec 23, 2011 at 4:23 PM, Fleysher, Lazar
>>>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>>>> Hello Bill
>>>>>>>>
>>>>>>>> Yes of course I have tried your version. As I said, I will not be
>>>>>>>> able to use your approach in the final application, but for test
>>>>>>>> purposes I did run your program with the same segmentation violation.
>>>>>>>> (in my final application I will need the pointer to filtered image as I will
>>>>>>>> do more things to it)
>>>>>>>>
>>>>>>>> ProcessObject::UpdateOutputData and calls inside it
>>>>>>>> cause segmentation violation whether update() is called directly or not.
>>>>>>>>
>>>>>>>> Thank you very much for your help
>>>>>>>>
>>>>>>>> Lazar
>>>>>>>> ________________________________________
>>>>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>>>>> Sent: Friday, December 23, 2011 16:09
>>>>>>>> To: Fleysher, Lazar
>>>>>>>> Cc: Insight-users at itk.org
>>>>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>>>>
>>>>>>>> itk does not use intermediate storage. When you say image1 = image2 it
>>>>>>>> is just assigning pointers.
>>>>>>>>
>>>>>>>> I'll try compiling and running your test program if I get a chance.
>>>>>>>>
>>>>>>>> Did you try my test program?
>>>>>>>>
>>>>>>>> On Fri, Dec 23, 2011 at 3:42 PM, Fleysher, Lazar
>>>>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>>>>> Dear Bill
>>>>>>>>>
>>>>>>>>> You suggest to feed the output of filter directly into the writer without
>>>>>>>>> the use of an intermediate storage. While in my end application
>>>>>>>>> this will not work, I have tried it here and the same thing happens.
>>>>>>>>>
>>>>>>>>> The segmentation violation is generated on filter->update() call...
>>>>>>>>>
>>>>>>>>> There is  something wong with ITK or libc
>>>>>>>>>
>>>>>>>>> What do you think?
>>>>>>>>>
>>>>>>>>> Lazar
>>>>>>>>>
>>>>>>>>> ________________________________________
>>>>>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>>>>>> Sent: Friday, December 23, 2011 15:01
>>>>>>>>> To: Fleysher, Lazar
>>>>>>>>> Cc: Insight-users at itk.org
>>>>>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>>>>>
>>>>>>>>> Try my attached version
>>>>>>>>>
>>>>>>>>> On Fri, Dec 23, 2011 at 2:48 PM, Fleysher, Lazar
>>>>>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>>>>>> Hello Bill
>>>>>>>>>>
>>>>>>>>>> Sorry for not being clear. Attached is the example which I am trying to work out.
>>>>>>>>>>
>>>>>>>>>> The way to execute is :
>>>>>>>>>>
>>>>>>>>>> TestFilter blah.nii.gz r16slice.nii.gz
>>>>>>>>>>
>>>>>>>>>> (unfortunately the image file is too large to be accepted by the mailing list)
>>>>>>>>>>
>>>>>>>>>> The function reads the file r16slice and applies filter to it and saves it on disk into blah.nii.gz
>>>>>>>>>>
>>>>>>>>>> If I do not exectute shFilter->Update(); than averageimage has no pixels just before write.
>>>>>>>>>> If I do execute shFilter->Update(); then this causes segmentation violation.
>>>>>>>>>> If I do not execute shFilter->Update(); and do not execute averageimage =  shFilter->GetOutput();
>>>>>>>>>> then the function works as copy and blah.nii.gz is identical to the r16slice.nii.gz....
>>>>>>>>>>
>>>>>>>>>> Thank you very much for your help
>>>>>>>>>>
>>>>>>>>>> Lazar
>>>>>>>>>> ________________________________________
>>>>>>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>>>>>>> Sent: Friday, December 23, 2011 12:44
>>>>>>>>>> To: Fleysher, Lazar
>>>>>>>>>> Cc: Insight-users at itk.org
>>>>>>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>>>>>>
>>>>>>>>>> itk is a demand driven pipelined system. Typically you set the input
>>>>>>>>>> to the next filter to be the output of the previous filter. Setting
>>>>>>>>>> the input/output chain just establishes the pipeline and does not
>>>>>>>>>> execute it. When you do an Updtae() on the last filter, the pipeline
>>>>>>>>>> executes.
>>>>>>>>>>
>>>>>>>>>> averageimage=shFilter->GetOutput() is OK, but in your first email you had said:
>>>>>>>>>> shFilter->SetInput( averageimage );
>>>>>>>>>> shFilter->SetSValue(0.5);
>>>>>>>>>> //  shFilter->Update();
>>>>>>>>>> averageimage =  shFilter->GetOutput();
>>>>>>>>>>
>>>>>>>>>> This modified averageimage was was the input to shFilter.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Please post a complete small, compilable example that fails. Including
>>>>>>>>>> snippets in e-mails is too prone to error and misinterpretation.
>>>>>>>>>>
>>>>>>>>>> thanks,
>>>>>>>>>>
>>>>>>>>>> Bill
>>>>>>>>>>
>>>>>>>>>> On Fri, Dec 23, 2011 at 11:39 AM, Fleysher, Lazar
>>>>>>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>>>>>>> Dear Bill Lorensen
>>>>>>>>>>>
>>>>>>>>>>> averageimage is decleared as float 3D and then it is read from a (NIFTI) file....
>>>>>>>>>>>
>>>>>>>>>>>  typename ImageFileReader::Pointer reader = ImageFileReader::New();
>>>>>>>>>>>  reader->SetFileName(argv[bigimage]);
>>>>>>>>>>>  reader->Update();
>>>>>>>>>>>  averageimage=reader->GetOutput();
>>>>>>>>>>>
>>>>>>>>>>> If I understood you correctly, I should run filter-> Update()
>>>>>>>>>>> than to save the image do writer->SetInput(shFilter->GetOutput());
>>>>>>>>>>> What is wrong with doing averageimage=shFilter->GetOutput()
>>>>>>>>>>> followed by writer->SetInput(averageimage) ?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Regardless, shFilter->Update() generates a segmentation violation.
>>>>>>>>>>> If I comment out the filter part, the image gets saved in to a file
>>>>>>>>>>> and everything seem to work correctly.
>>>>>>>>>>>
>>>>>>>>>>> So there is something strange with the filter ... but what?
>>>>>>>>>>>
>>>>>>>>>>> Here is the output of gdb. Definitely there is a problem with some threads...
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> [New Thread 2122320192 (LWP 15648)]
>>>>>>>>>>> [New Thread 46912496267840 (LWP 15512)]
>>>>>>>>>>> [New Thread 46913547483456 (LWP 15649)]
>>>>>>>>>>> [New Thread 46914596063552 (LWP 15650)]
>>>>>>>>>>> [Thread 2122320192 (LWP 15648) exited]
>>>>>>>>>>> [Thread 46914596063552 (LWP 15650) exited]
>>>>>>>>>>> [Thread 46913547483456 (LWP 15649) exited]
>>>>>>>>>>>
>>>>>>>>>>> Program received signal SIGSEGV, Segmentation fault.
>>>>>>>>>>> [Switching to Thread 46912496267840 (LWP 15512)]
>>>>>>>>>>> 0x0000003482c076e8 in pthread_join () from /lib64/libpthread.so.0
>>>>>>>>>>>
>>>>>>>>>>> Here we see that the filter created 4 threads, but could not join them correctly.
>>>>>>>>>>> Furthermore:
>>>>>>>>>>>
>>>>>>>>>>> (gdb) where
>>>>>>>>>>> #0  0x0000003482c076e8 in pthread_join () from /lib64/libpthread.so.0
>>>>>>>>>>> #1  0x00000000007dd2b5 in itk::MultiThreader::WaitForSingleMethodThread (this=0x1a11160, threadHandle=3)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkMultiThreaderPThreads.cxx:210
>>>>>>>>>>> #2  0x00000000007dd9af in itk::MultiThreader::SingleMethodExecute (this=0x1a11160)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkMultiThreader.cxx:332
>>>>>>>>>>> #3  0x00000000007207fb in itk::ImageSource<itk::Image<double, 3u> >::GenerateData (this=0x19cf700)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/include/itkImageSource.hxx:275
>>>>>>>>>>> #4  0x00000000007d36a6 in itk::ProcessObject::UpdateOutputData (this=0x19cf700)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkProcessObject.cxx:1500
>>>>>>>>>>> #5  0x00000000007e18f8 in itk::DataObject::UpdateOutputData (this=0x19c3830) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkDataObject.cxx:434
>>>>>>>>>>> #6  0x0000000000705f43 in itk::ImageBase<3u>::UpdateOutputData (this=0x19c3830) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/include/itkImageBase.hxx:285
>>>>>>>>>>> #7  0x00000000007e1816 in itk::DataObject::Update (this=0x19c3830) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkDataObject.cxx:359
>>>>>>>>>>> #8  0x00000000007d3bc1 in itk::ProcessObject::Update (this=0x19cf700) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkProcessObject.cxx:1096
>>>>>>>>>>> #9  0x000000000077a82a in itk::OptimalSharpeningImageFilter<itk::Image<float, 3u>, itk::Image<float, 3u> >::GenerateData (this=0x19ce520)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ANTS_SOURCE/ANTS/Examples/../Utilities/itkOptimalSharpeningImageFilter.hxx:142
>>>>>>>>>>> #10 0x00000000007d36a6 in itk::ProcessObject::UpdateOutputData (this=0x19ce520)
>>>>>>>>>>>    at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkProcessObject.cxx:1500
>>>>>>>>>>> #11 0x00000000007e18f8 in itk::DataObject::UpdateOutputData (this=0x19b52b0) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkDataObject.cxx:434
>>>>>>>>>>> #12 0x0000000000705f43 in itk::ImageBase<3u>::UpdateOutputData (this=0x19b52b0) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/include/itkImageBase.hxx:285
>>>>>>>>>>> #13 0x00000000007e1816 in itk::DataObject::Update (this=0x19b52b0) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkDataObject.cxx:359
>>>>>>>>>>> #14 0x00000000007d3bc1 in itk::ProcessObject::Update (this=0x19ce520) at /work/home/xxx/ANTS/ITK_SOURCE/ITK/Modules/Core/Common/src/itkProcessObject.cxx:1096
>>>>>>>>>>> #15 0x000000000077d9ad in AverageImages1<3u, 1u> (argc=10, argv=0x7fffffffd7f8) at /work/home/xxx/ANTS/ANTS_SOURCE/ANTS/Examples/AverageImages.cxx:121
>>>>>>>>>>> #16 0x0000000000633770 in main (argc=10, argv=0x7fffffffd7f8) at /work/home/xxx/ANTS/ANTS_SOURCE/ANTS/Examples/AverageImages.cxx:308
>>>>>>>>>>>
>>>>>>>>>>> Does this provide some information about what is happening????
>>>>>>>>>>>
>>>>>>>>>>> The system I am running on is CentOS5, I guess:
>>>>>>>>>>>
>>>>>>>>>>> cat /etc/redhat-release
>>>>>>>>>>> Red Hat Enterprise Linux ES release 5
>>>>>>>>>>>
>>>>>>>>>>> cat /etc/redhat-release.CENTOS5.orig
>>>>>>>>>>> CentOS release 5.4 (Final)
>>>>>>>>>>>
>>>>>>>>>>> yum gives me this:
>>>>>>>>>>>
>>>>>>>>>>> yum list|grep libc
>>>>>>>>>>> glibc.i686                                  2.5-42                     installed
>>>>>>>>>>> glibc.x86_64                                2.5-42                     installed
>>>>>>>>>>> glibc-common.x86_64                         2.5-42                     installed
>>>>>>>>>>> glibc-devel.i386                            2.5-42                     installed
>>>>>>>>>>> glibc-devel.x86_64                          2.5-42                     installed
>>>>>>>>>>> glibc-headers.x86_64                        2.5-42                     installed
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Is this a problem with libc6?
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>>
>>>>>>>>>>> Lazar
>>>>>>>>>>>
>>>>>>>>>>> ________________________________________
>>>>>>>>>>> From: Bill Lorensen [bill.lorensen at gmail.com]
>>>>>>>>>>> Sent: Friday, December 23, 2011 08:37
>>>>>>>>>>> To: Fleysher, Lazar
>>>>>>>>>>> Cc: Insight-users at itk.org
>>>>>>>>>>> Subject: Re: [Insight-users] ImageFilter problems
>>>>>>>>>>>
>>>>>>>>>>> For a filter to run, you must either explicitly call Update() on it,
>>>>>>>>>>> or a filter down stream.
>>>>>>>>>>>
>>>>>>>>>>> Can you show the code that creates averageimage?
>>>>>>>>>>>
>>>>>>>>>>> Also, you should remove the statement:
>>>>>>>>>>> averageimage =  shFilter->GetOutput();
>>>>>>>>>>>
>>>>>>>>>>> It is already used as input to your filter. You are probably
>>>>>>>>>>> introducing some sort of cycle in the pipeline.
>>>>>>>>>>>
>>>>>>>>>>> Try
>>>>>>>>>>> writer->SetInput(shFilter->GetOutput());
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Dec 23, 2011 at 8:19 AM, Fleysher, Lazar
>>>>>>>>>>> <lazar.fleysher at mountsinai.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hello insight-users at itk.org.
>>>>>>>>>>>>
>>>>>>>>>>>> I am new to ITK and I am experiencing a strange problem with the image filters.
>>>>>>>>>>>> So I was wondering if someone could shed some light on this.
>>>>>>>>>>>>
>>>>>>>>>>>> I have this code
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>  typedef itk::OptimalSharpeningImageFilter<ImageType,ImageType > sharpeningFilter;
>>>>>>>>>>>>  typename sharpeningFilter::Pointer shFilter = sharpeningFilter::New();
>>>>>>>>>>>>  shFilter->SetInput( averageimage );
>>>>>>>>>>>>  shFilter->SetSValue(0.5);
>>>>>>>>>>>> //  shFilter->Update();
>>>>>>>>>>>>  averageimage =  shFilter->GetOutput();
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> which should filter the averageimage.
>>>>>>>>>>>>
>>>>>>>>>>>> Unfortunately, when I run this code the resulting averageimage contains zero pixels.
>>>>>>>>>>>> If I uncomment the "Update()" call (which I do not know if is needed) then
>>>>>>>>>>>> the Update() generates a segmentation violation.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I have ITK installed from sources using git clone git://itk.org/ITK.git from
>>>>>>>>>>>> 2 days ago. I think it is version 4.1.
>>>>>>>>>>>>
>>>>>>>>>>>> Also, I have noticed that if I do not call Update() and try to save the image with
>>>>>>>>>>>>
>>>>>>>>>>>> typename writertype::Pointer writer = writertype::New();
>>>>>>>>>>>> writer->SetFileName("aaa");
>>>>>>>>>>>> writer->SetInput( averageimage );
>>>>>>>>>>>> writer->Update();
>>>>>>>>>>>>
>>>>>>>>>>>> writer->Update() never returns. That is, it cannot write an empty image.
>>>>>>>>>>>>
>>>>>>>>>>>> Am I doing something wrong? What is going on?
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you very much for your help
>>>>>>>>>>>>
>>>>>>>>>>>> Lazar
>>>>>>>>>>>> _____________________________________
>>>>>>>>>>>> Powered by www.kitware.com
>>>>>>>>>>>>
>>>>>>>>>>>> Visit other Kitware open-source projects at
>>>>>>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>>>>>>
>>>>>>>>>>>> Kitware offers ITK Training Courses, for more information visit:
>>>>>>>>>>>> http://www.kitware.com/products/protraining.html
>>>>>>>>>>>>
>>>>>>>>>>>> Please keep messages on-topic and check the ITK FAQ at:
>>>>>>>>>>>> http://www.itk.org/Wiki/ITK_FAQ
>>>>>>>>>>>>
>>>>>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Unpaid intern in BillsBasement at noware dot com
>>>>
>>>>
>>>>
>>>> --
>>>> Unpaid intern in BillsBasement at noware dot com
>>>
>>>
>>>
>>> --
>>> Unpaid intern in BillsBasement at noware dot com
>>
>>
>>
>> --
>> Unpaid intern in BillsBasement at noware dot com
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com



-- 
Unpaid intern in BillsBasement at noware dot com


More information about the Insight-users mailing list