[Insight-users] Generating Imag from Histogram using Intensity Function

Lars Nygard lnygard at yahoo.com
Tue Aug 14 18:19:11 EDT 2007


Hi Luis,

Thanks for explaining this. Ive just managed to do the
same with vtk and tcl. However vtk's ImageViewer only
supports RGB or transformations to grayscale using
SetColorWindow and SetColorLevel.
My images look quite different in vtk so I think it's better
to try ITK for this. 
regards,
Lars Nygard

----- Original Message ----
From: Luis Ibanez <luis.ibanez at kitware.com>
To: Lars Nygard <lnygard at yahoo.com>
Cc: insight-users at itk.org
Sent: Tuesday, August 14, 2007 11:06:53 AM
Subject: Re: [Insight-users] Generating Imag from Histogram using Intensity Function


Hi Lars,

Thanks for your detailed description of the problem.


The difficulty that you are facing is due to the fact that the 

              itk::ScalarImageToHistogramGenerator

                        *IS NOT* a pipeline filter.



You are using it under the assumption that Update()
calls will propagate through this class. This is not the case.

This class is equivalent to a "Calculator".

Please read carefully the description of this class in the 

ITK Software Guide

            http://www.itk.org/ItkSoftwareGuide.pdf

---

I order to use it properly you must do the following:

1) Call Update() on the filter that is going to provide the 

    input to the histogram generator

2) Set the parameters of the histogram 
    - Number of bins
    - minimum 
    - maximum

3) Call "Compute() on the histogram generator

4) Get the output and pass it to a subsequent filter

    e.g. the HistogramToImage filter

5) Call Update() on that downstream filter.


Note also that if your input image has a single
component per pixel (e.g. it is a Scalar image),
then its Histogram will be a 1-dimensional array,

and when you use the HistogramToImage filter
you will get an image of dimensions 

                       NumberOfBins X 1

If your purpose was to plot the histogram, you
may want to rather use the histogram bin 

iterator in order to recover the count values
from the bins. (as shown in the attached example).

-------------------------------------------------------------------
Note that the ITK Statistics Framework is currently

being refactored. As part of this refactoring effort,
most "Generator" and "Calculator" classes have been
converted into actual pipeline filters.  You will find
information about the refactoring at the Wiki page:

http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007

The description of the new framework can be seen at:

http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007_New_Statistics_Framework

The migration guide is available at:

http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007_Migration_Users_Guide

The source code of the refactored Framework is available at:

http://www.na-mic.org/svn/NAMICSandBox/trunk/ITKStatisticsPipelineRefactoring/
-------------------------------------------------------------------



The refactored version of the Statistics Framework is currently
experimental, and will NOT be included in ITK before the release of ITK 3.4.


In the meantime, please find attached the source code 

of your example, after all these issues have been fixed.
(using the current ITK CVS version).


Please give it a try and let us know if you have
any questions,


     Thanks


         Luis




-------------------------------------------------------------------------
On 8/14/07, Lars Nygard <lnygard at yahoo.com
> wrote:Hi all,

Im trying to make an applet where I scroll through an image and

where I can see the histogram of every slice. However Im getting
an error from windows when I try to update the HistogramToIntensityImageFilter.
Im first trying with a 2D png image.
Ive tried to catch the error but windows is giving an error and I don't know what's

wrong. The code is bellow. Anybody got an idea what's wrong??
thanks,
Lars Nygard

//Declare input Image
  typedef unsigned char      PixelType;
  const   unsigned int        Dimension = 2;
  typedef unsigned char MeasurementType ;

  typedef itk::Image< PixelType, Dimension >    ImageType;
  typedef itk::Image< unsigned char, 2> BinImageType;

  //reader
  typedef itk::ImageFileReader< ImageType >  ReaderType;
  ReaderType::Pointer reader = ReaderType::New();

  reader->SetFileName( "BrainSliceT1.png" );

  //code for generating the histogram
  typedef itk::Statistics::ScalarImageToHistogramGenerator< ImageType > HistogramGenType;
  typedef HistogramGenType::HistogramType  HistogramType;

  HistogramGenType::Pointer genhistogram = HistogramGenType::New();
  genhistogram->SetNumberOfBins( 256 );

  //code for converting histogram to image
  typedef itk::HistogramToIntensityImageFilter< HistogramType > HistogramToImageType;

  HistogramToImageType::Pointer histToImage = HistogramToImageType::New();


    //pipeline
    genhistogram->SetInput( reader->GetOutput() );
    histToImage->SetInput( genhistogram->GetOutput() );

    reader->Update();

//here windows gives an error and the program aborts
     try
    {
     histToImage->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << "Exception thrown while reading image" << excp << std::endl;

    }





_________________________________________________________
Alt i én. Få Yahoo! Mail med adressekartotek, kalender og
notisblokk. http://no.mail.yahoo.com

_______________________________________________
Insight-users mailing list
Insight-users at itk.org
http://www.itk.org/mailman/listinfo/insight-users










      
_________________________________________________________
Alt i én. Få Yahoo! Mail med adressekartotek, kalender og
notisblokk. http://no.mail.yahoo.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20070814/12267356/attachment.htm


More information about the Insight-users mailing list