[Insight-users] OTSU test code

Luis Ibanez luis.ibanez@kitware.com
Fri, 20 Sep 2002 18:11:56 -0400


Hi Uday,


The IO factories were added as default several weeks ago.
(for PNG, Meta, Dicom and VTK).


What version of ITK are you using ?
if it is a CVS checkout, how recent it is ?

You may want to risk updating from cvs. Just
double check the ITK Dashboard before updating
to make sure that you get a green version.


   Thanks,


     Luis


====================================================================

Uday Kurkure wrote:

> 
> Hi Louis,
> 
> I am wondering how I forgot about Update() function. Thanks for 
> explaining me the pipeline. Will keep that in mind.
> I added the Update() function and removed the writer part and BINGO! it 
> is working perfectly. But I get run-time error if I don't explicitly 
> specify the IO object/factory. It's fine with me to explicitly specify 
> them but since you mentioned that now we don't need to specify them, I 
> am curious how to make it work. Can you throw some light on it?
> 
> Thanks,
> Uday Kurkure.
> 
> 
> 
>> Also, note that for PNG, VTK, Meta and Dicom you no
>> longer need to explicity specify the IO object nor
>> the IO factory. Default factories for these formats
>> are now registered at construction time in the IO
>> framework.
>>
>> The following code should be enough:
>>
>>
>>
>>   reader->SetFileName("input.png");
>>   reader->Update();
>>   calculator->SetInput( reader->GetOutput() );
>>   calculator->Compute();
>>   PixelType threshold = calculator->GetThreshold();
>>
>>
>>
>>
>> Please let us know if you find further problems
>>
>>   Thanks
>>
>>
>>    Luis
>>
>>
>> ==========================================
>>
>>
>> Uday Kurkure wrote:
>>
>>>
>>>
>>> Hello all,
>>>
>>> Thanks Louis and Sayan for your suggestions.
>>>
>>> I could successfully run the OTSU test code. Now I have modified it 
>>> to take a PNG image as input. It is working fine for this part of code:
>>>
>>> //----------------------------------------------------------------
>>>   // Read in the image
>>>   itk::PNGImageIO::Pointer io;
>>>   io = itk::PNGImageIO::New();
>>>   typedef unsigned char PixelType;
>>>   typedef itk::Image<PixelType, 2> myImage;
>>>   itk::ImageFileReader<myImage>::Pointer input
>>>     = itk::ImageFileReader<myImage>::New();
>>>   input->SetFileName(av[0]);
>>>   input->SetImageIO(io);// comment it if using factory
>>>
>>>   // write the input image
>>>   itk::ImageFileWriter<myImage>::Pointer writer1;
>>>   writer1 = itk::ImageFileWriter<myImage>::New();
>>>   writer1->SetInput(input->GetOutput());
>>>   writer1->SetFileName("myinput.png");
>>>   writer1->SetImageIO(io);// comment it if using factory
>>>   writer1->Write();
>>>   // Create and initialize the calculator
>>>   CalculatorType::Pointer calculator = CalculatorType::New();
>>>   calculator->SetImage(input->GetOutput());
>>>   calculator->SetNumberOfHistogramBins( 256);
>>>   calculator->Compute();
>>> //--------------------------------------------------------------
>>>
>>> But if I don't write out the image (comment the writer1 code lines)
>>> it always give threshold 0. I want to remove the writing part. Can 
>>> some one suggest something.
>>>
>>> Thanks,
>>> Uday Kurkure.
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users@public.kitware.com
>>> http://public.kitware.com/mailman/listinfo/insight-users
>>>
>>
>>
>>
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>