[Insight-users] smoothing an Histogram

Raquel Itk raquelitk at gmail.com
Wed Jul 8 12:45:40 EDT 2009


Hi Luis,
I convert the Histogram into a 1DImage in this way:

typedef unsigned short   PixelType1D;
typedef itk::GDCMImageIO ImageIOType;
typedef itk::Image< PixelType1D, 1 > ImageType1D;
typedef itk::Image< PixelType1D, 1 > ImageType1D_2;
typedef itk::ImageFileReader< ImageType1D > ReaderType1D;
typedef itk::ImageRegionIterator< ImageType1D>       IteratorType;

ReaderType::Pointer readerHis = ReaderType::New();
ImageIOType::Pointer gdcmImageIOHis= ImageIOType::New();
HistogramGeneratorType::Pointer histogramGenerator =
HistogramGeneratorType::New();
ReaderType1D::Pointer reader1D = ReaderType1D::New();
ImageType1D::Pointer line = ImageType1D::New();
ImageType1D::SizeType size1D;
ImageType1D::IndexType pixelValue;
ImageType1D::IndexType start1D;
ImageType1D::RegionType region1D;



void createImage(int *valoresHisto){

    size1D.Fill( 2286 );
    start1D.Fill( 0 );
    region1D.SetSize( size1D );
    region1D.SetIndex( start1D );
    line->SetRegions( region1D );
    line->Allocate();

    IteratorType lineIt(line, line->GetRequestedRegion());

    int i = 0;
    for (lineIt.GoToBegin(); !lineIt.IsAtEnd();
    ++lineIt)
    {
        lineIt.Set( valoresHisto[i]);

        i=i+1;
    }


    typedef itk::ImageFileWriter< ImageType1D > WriterType1D;
    WriterType1D::Pointer writer1D = WriterType1D::New();
    writer1D->SetFileName( "Image1D.png" );

    writer1D->SetInput( line );
    try
    {
        writer1D->Update();
    }
    catch (itk::ExceptionObject &e)
    {
        std::cerr << e << std::endl;

    }
}

Now I want to apply SmoothingRecursiveGaussianImageFilter2.cxx, but I have a
problem because if need a 2d Image. How can I resolve it?

Thanks

Raquel


2009/7/4 Luis Ibanez <luis.ibanez at kitware.com>

>
> Hi Raquel,
>
> You can convert the Histogram into a 1D Image,
> and use any of the ITK Smoothing filters on
> this 1D image, then convert the image back
> to a Histogram.
>
> See the class
> Insight/Code/Numerics/Statistics/itkHistogramToImageFilter.h
>
> and its related classes
>
> itkHistogramToEntropyImageFilter.h
> itkHistogramToIntensityImageFilter.h
> itkHistogramToLogProbabilityImageFilter.h
> itkHistogramToProbabilityImageFilter.h
>
> Then look at the section of Smoothing image filters
> in the ITK Software Guide
>
>
>  http://www.itk.org/ItkSoftwareGuide.pdf
>
>
>
>   Regards,
>
>
>       Luis
>
>
>
> --------------------
> Raquel Itk wrote:
>
>> Hi,
>>
>> I have computed the histogram of an image with
>> Examples/Statistics/ImageHistogram2.cxx, now I want to smooth the array ,
>> where I have saved the values of an Histogram ( valoresHisto[i]) because I
>> have a lot of peaks. I would like to use a Gaussian method, I have been read
>> about Gaussian but only for Images.
>>
>> while( itr != end )
>>
>> {
>>
>> valoresHisto[i]=itr.GetFrequency();
>>
>> ++itr;
>>
>> ++binNumber;
>>
>> ++i;
>>
>> }
>>
>> return(valoresHisto);
>>
>>
>> Thanks
>>
>>
>> Raquel
>>
>>
>> ------------------------------------------------------------------------
>>
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090708/6d2d4354/attachment-0001.htm>


More information about the Insight-users mailing list