[Insight-users] reply to adaptive threshold filter

robert tamburo robert.tamburo at gmail.com
Fri May 20 09:36:59 EDT 2011


Thanks for sending the code. Your input image wasn't attached, but I was
able to recreate the error with my own image. I lowered the number of
control points to 10 and the code executed without error.

2011/5/19 Quan <mrvillage at 163.com>

> oh,i retry once more but failed again.my environment is
> Windows7+win32+VS2010+itk.i can get through the compile and bulid
> process.however,when i run the prog,the error occures.i cut a picture that
> descibes the error in attachment .also,my input image HE.png is 2D unsigned
> char type.
> i list my source code bellow:
> #include "itkImage.h"
> #include <iostream>
> #include "itkAdaptiveOtsuThresholdImageFilter.h"
> #include "itkImageFileReader.h"
> #include "itkImageFileWriter.h"
> using namespace std;
>  void AdaptiveOtsuThresholdImage(
>    const std::string & inputFileName,
>    const std::string & outputFileName,
>    const unsigned int & radius,
>    const unsigned int & bins,
>    const unsigned int & controlPoints,
>    const unsigned int & levels,
>    const unsigned int & samples,
>    const unsigned int & splineOrder );
> int main()
> {
>  AdaptiveOtsuThresholdImage("HE.png","Output.png",20,256,30,3,12,3);
>  return 1;
> }
>  void AdaptiveOtsuThresholdImage(
>    const std::string & inputFileName,
>    const std::string & outputFileName,
>    const unsigned int & radius,
>    const unsigned int & bins,
>    const unsigned int & controlPoints,
>    const unsigned int & levels,
>    const unsigned int & samples,
>    const unsigned int & splineOrder )
>  {
>    /** Typedef's. */
>    const     unsigned int    ImageDimension = 2;
>    typedef unsigned char                                 OutputPixelType;
>    typedef itk::Image< OutputPixelType, ImageDimension > InputImageType;
>    typedef itk::Image< OutputPixelType, ImageDimension > OutputImageType;
>    typedef itk::ImageFileReader< InputImageType >        ReaderType;
>    typedef itk::AdaptiveOtsuThresholdImageFilter<
>      InputImageType, OutputImageType>                    ThresholderType;
>    typedef itk::ImageFileWriter< OutputImageType >       WriterType;
>    typedef ThresholderType::InputSizeType                RadiusType;
>    /** Declarations. */
>    ReaderType::Pointer reader = ReaderType::New();
>    ThresholderType::Pointer thresholder = ThresholderType::New();
>    WriterType::Pointer writer = WriterType::New();
>    RadiusType Radius; Radius.Fill( radius );
>    /** Read in the inputImage. */
>    reader->SetFileName( inputFileName.c_str() );
>    thresholder->SetInput( reader->GetOutput() );
>    /** Apply the threshold. */
>    thresholder->SetRadius( Radius );
>    thresholder->SetNumberOfHistogramBins( bins );
>    thresholder->SetNumberOfControlPoints( controlPoints );
>    thresholder->SetNumberOfLevels( levels );
>    thresholder->SetNumberOfSamples( samples );
>    thresholder->SetSplineOrder( splineOrder );
>    thresholder->SetInsideValue( 1 );
>    thresholder->SetOutsideValue( 0 );
>    /** Write the output image. */
>    writer->SetInput( thresholder->GetOutput() );
>    writer->SetFileName( outputFileName.c_str() );
>    try
>     {
>     writer->Update();
>     }
>   catch( itk::ExceptionObject & excep )
>     {
>     std::cerr << "Exception caught !" << std::endl;
>     std::cerr << excep << std::endl;
>     }
>  }
>
> At 2011-05-20 00:42:58,"robert tamburo" <robert.tamburo at gmail.com> wrote:
>
> I have not encountered this error. I have used this filter on a 2D,
> unsigned char image with the following chunk of code:
>    AdaptiveThresholdFilterType::Pointer adaptiveThresholder=
> AdaptiveThresholdFilterType::New();
>   adaptiveThresholder->SetInput(image);
>   adaptiveThresholder->SetInsideValue(255); // foreground of output image
>   adaptiveThresholder->SetOutsideValue(0); // background of output image
>   adaptiveThresholder->SetNumberOfHistogramBins(256);
>   adaptiveThresholder->SetNumberOfControlPoints(10); // b-spline control
> points
>   adaptiveThresholder->SetNumberOfLevels(3); // number of b-spline levels
> for reconstruction (3-5)
>   adaptiveThresholder->SetNumberOfSamples(12); // number of points to
> randomly sample
>   CharImageType::SizeType radius;
>   radius[0] = 20;
>   radius[1] = 20;
>   adaptiveThresholder->SetRadius(radius); // radius of sampling region
>   adaptiveThresholder->Update();
>
> It would be helpful if you could make available (minimal) code and an image
> that exhibits your problem (code and pictures are close to universal!).
> Also, keep the discussion on the list.
>
> 2011/5/19 Quan <mrvillage at 163.com>
>
>> hi robert tamburo:
>> thanks for your help.in fact ,i also read the paper,and downnload the
>> code at
>> http://praxix.googlecode.com/svn/trunk/src/thresholdimage/
>> but what bothers me is that some errors occured when i run the project,it
>> makes so
>> upset as i don't know much about itk ,so i don't know how to debug it.
>>
>> the error is located at *itkBSplineScatteredDataPointSetToImageFilter.txx
>> *"  *Description:itk::ERROR::PointSetToImageFilter<027CFD18>:The Collapse
>> point component 108 is outside the corrseponding parametric domain of
>> [0,108] " *.have you ever met this kind of error,it seems that some other
>> guy has the same problem with this filer,so i wanna a alternative mathod.Can
>> u point out where is wrong and give me some advice?as i not native english
>> speeker so it's hard for me  to get the useful infomation by searching the
>> internet,and also ,you may fell hard to read my e-mail,but i will be
>> appreaciate for your help.
>>
>> in addition ,how do you think about my english,bad,so-so,good,excellent,or
>> D,C,B,A?
>>
>> thanks.
>>
>>
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110520/5a723b40/attachment.htm>


More information about the Insight-users mailing list