[Insight-users] Histogram modification - troubles with SetFrequency

sacrif markus_m at gmx.net
Thu Dec 3 03:12:42 EST 2009


Hi Luis!

Thank you for your reply.
The program does not compile. The exact error message is:

1>Compiling...
2>AlphaHistogram.cpp
2>..\Alpha_Histogramm\AlphaHistogram.cpp(229) : error C2663:
'itk::Statistics::Histogram<TMeasurement>::SetFrequency' : 4 overloads have
no legal conversion for 'this' pointer
2>        with
2>        [
2>            TMeasurement=double
2>        ]


So if I take the "bool SetFrequency" method my arguments should be:
1. unsigned long identifier;
2. float value; 

So what I tried now is the following but the same error still occures:
unsigned long bin = 1000;
float value = 10;
partialHistogramVector_[0]->SetFrequency(bin, value);


When I use the new Statistics Framework, are there any changes for the
creation of histograms(or are descriptions in ImageHistogram1-4.cxx and
Histogram.cxx still valid) the  and the use of the Set - GetFrequency
methods? 

Regards Mark


Luis Ibanez wrote:
> 
> Hi Sacrif,
> 
> In the old statistics framework,
> the FrequencyType of the Histogram is defined as:
> 
>                    typedef float FrequencyType;
> 
> in the file
> 
>   Insight/Code/Numerics/Statistics/itkDenseFrequencyContainer.h
> 
> 
> 
> When you say about the expression:
> 
> 
>>  histogram->SetFrequency(bin, pow(histogram->GetFrequency(bin,0),2)); //
>> pow(x,2)
> 
> 
> that:
> 
>                 "It doesn't work"...
> 
> 
> do you mean that:
> 
> A) It doesn't compile ?
> 
> B) It seg. faults at run time ?
> 
> C) It throws an exception at run time ?
> 
> D) It doesn't produce any errors, but the resulting
>     numerical value is not the expected one  ?
> 
> 
>   Please be more specific,
> 
> 
>        Thanks
> 
> 
>               Luis
> 
> ----------
> 
> BTW: Please note that the Statistics Framework was fully
> refactored and that the new version is under:
> 
>     Insight/Code/Review/Statistics
> 
> we strongly encourage you to adopt this new version.
> 
> In order to use it, you just need to reconfigure ITK with CMake
> and turn ON the following two CMake variables:
> 
>           ITK_USE_REVIEW
>           ITK_USE_REVIEW_STATISTICS
> 
> 
> 
> 
> 
> --------------------------------------------------------------------------------------------------------------
> On Wed, Dec 2, 2009 at 3:34 PM, sacrif <markus_m at gmx.net> wrote:
>>
>> Hello,
>>
>> I am new to ITK and have troubles with the histogram->SetFrequency()
>> method.
>> What I did yet was to read in a 3d Analyse image (.hdr and .img format)
>> using the filereader
>> and the AnlayseImageIO class. Then I used the
>> "itkScalarImageToHistogramGenerator.h" class to create a histogram out of
>> the image I read in. So far everything worked well. However my next step
>> is
>> to modify the histogram. I want to exponentiate the frequency value of
>> every
>> bin by a certain number.  I tried to do that with the following code.
>>
>> //-------------------------------------------
>> typedef signed short PixelType;
>> static const unsigned int Dimension = 3;
>> typedef itk::Image<PixelType, Dimension> ImageType;
>> typedef itk::Statistics::ScalarImageToHistogramGenerator< ImageType >
>> HistogramGeneratorType;
>> typedef HistogramGeneratorType::HistogramType  HistogramType;
>>  ...
>>  const HistogramType * histogram = histogramGenerator->GetOutput();
>>  const unsigned int histogramSize = histogram->Size();
>>
>>  unsigned int bin;
>>  for( bin=0; bin < histogramSize; bin++ )
>>    {
>>        histogram->SetFrequency(bin,
>> pow(histogram->GetFrequency(bin,0),2)); //
>> pow(x,2) just exponentitates x with 2.
>>    }
>> //-------------------------------------------
>>
>> Unfortunately this does not work - obviously "unsigned int" is not the
>> right
>> type to asign.
>> I also tried to define:
>>        HistogramType::IndexType index;
>>        index[0] = 1000; // just as an example
>>
>> and put "index" at the place of "bin"( histogram->SetFrequency(index,
>> pow(histogram->GetFrequency(bin,0),2));), but it did not work.
>> Could you please tell me what kind of arguments SetFrequency needs, or
>> whether there is a better way to modify the histogram.
>> (histogram->GetFrequency(bin, 0) works without any problems by the way)
>>
>> Kind Regards
>> Mark
>> --
>> View this message in context:
>> http://old.nabble.com/Histogram-modification---troubles-with-SetFrequency-tp26615939p26615939.html
>> Sent from the ITK - Users mailing list archive at Nabble.com.
>>
>> _____________________________________
>> 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
>>
> _____________________________________
> 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
> 
> 

-- 
View this message in context: http://old.nabble.com/Histogram-modification---troubles-with-SetFrequency-tp26615939p26621725.html
Sent from the ITK - Users mailing list archive at Nabble.com.



More information about the Insight-users mailing list