[Insight-developers] correct use of ImageToHistogramFilter

Richard Beare richard.beare at gmail.com
Fri May 14 07:59:51 EDT 2010


It was 3.16.

On Fri, May 14, 2010 at 9:12 PM, Bradley Lowekamp
<blowekamp at mail.nih.gov> wrote:
> This should be fixed in 3.18 with the explicit qualifier on the itk::Array constructor:
> http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/itkArray.h?root=Insight&r1=1.47&r2=1.48
>
> Was this on 3.18 or a previous version?
>
> Brad
>
> On May 10, 2010, at 8:10 PM, Richard Beare wrote:
>
>> Thankyou,
>>
>> For anyone else looking at this, it turns out that the
>> HistogramBinMinimum and HistogramBinMaximum need to be set using a
>> similar approach.
>>
>> On Mon, May 10, 2010 at 5:57 AM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>>> Hi Richard
>>>
>>>
>>> The variable:
>>>
>>>              hsize
>>>
>>> in your code, is ultimately of type
>>>
>>>              itk::Array
>>>
>>> Therefore, its number of component must be
>>> set at construction time.
>>>
>>> Instead of your current code:
>>>
>>>>      typename HistGenType::HistogramSizeType hsize;
>>>
>>> you should have
>>>
>>>>      typename HistGenType::HistogramSizeType hsize( 1 );
>>>
>>>
>>> ---
>>>
>>> What you are observing with
>>>
>>>             Hist->SetHistogramSize(100);
>>>
>>> is an accidental promotion, by which the number 100 is
>>> used as the constructor for a variable of type
>>>
>>>             HistGenType::HistogramSizeType
>>>
>>> which ends up being an itk::Array.
>>>
>>> Contrary to what you may expect in that expression, the
>>> automatic construction does not result in an array of one
>>> element with that element having the value "100", but
>>> in an array of 100 elements, all of them uninitialized.
>>>
>>> Please don't use
>>>
>>>            Hist->SetHistogramSize(100);
>>>
>>> What you should use is
>>>
>>>  typename HistGenType::HistogramSizeType hsize( 1 );
>>>  hsize.Fill( 100 );
>>>  Hist->SetHistogramSize( hsize );
>>>
>>>
>>>
>>>
>>>    Regards,
>>>
>>>
>>>            Luis
>>>
>>>
>>> --------------------------------------------------------------------------------------------
>>> On Wed, May 5, 2010 at 2:04 AM, Richard Beare <richard.beare at gmail.com> wrote:
>>>> Hello,
>>>>
>>>> I'm struggling getting this filter to work under ITK 3.16, and I
>>>> suspect I'm missing something in the histogram terminology or getting
>>>> mixed up in the decorator macros:
>>>>
>>>>      typedef typename
>>>> itk::Statistics::ImageToHistogramFilter<OutImType> HistGenType;
>>>>      typedef typename HistGenType::HistogramType HistogramType;
>>>>      typename HistGenType::Pointer Hist = HistGenType::New();
>>>>      typename HistGenType::HistogramSizeType hsize;
>>>>      typename HistGenType::HistogramMeasurementVectorType hmeas;
>>>>
>>>>      hsize.Fill(100);
>>>>      hmeas.Fill(0.1);
>>>>      Hist->SetInput(Rescaler->GetOutput());
>>>>      // one component histogram
>>>>
>>>>      Hist->SetHistogramSize(hsize);
>>>>
>>>>      typename HistGenType::HistogramMeasurementVectorType hmin, hmax;
>>>>      hmin.Fill(CmdLineObj.hmin);
>>>>      hmax.Fill(CmdLineObj.hmax);
>>>>
>>>>      Hist->SetHistogramBinMinimum(hmin);
>>>>      Hist->SetHistogramBinMaximum(hmax);
>>>>      Hist->SetMarginalScale(0.1);
>>>>      Hist->Update();
>>>>
>>>>
>>>> I get the following error:
>>>>
>>>> itk::ERROR: SampleToHistogramFilter(0x129ff2d0): Histogram number of
>>>> components: 0 doesn't match Measurement Vector Size: 1
>>>>
>>>>
>>>> if I change the call to
>>>>
>>>> Hist->SetHistogramSize(100);
>>>>
>>>> I get
>>>>
>>>> terminate called after throwing an instance of 'itk::ExceptionObject'
>>>>  what():  /usr/local/hpcmedsw/ITK/ITK-3.16/include/InsightToolkit/Review/Statistics/itkSampleToHistogramFilter.txx:185:
>>>> itk::ERROR: SampleToHistogramFilter(0x1a5ba2d0): Histogram number of
>>>> components: 100 doesn't match Measurement Vector Size: 1
>>>>
>>>>
>>>> What am I doing wrong?
>>>> _______________________________________________
>>>> 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://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-developers
>>>>
>>>
>> _______________________________________________
>> 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://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-developers
>
>


More information about the Insight-developers mailing list