[ITK Community] [Insight-developers] select an item from a binary image

elhadj meljane elhadj.meljane at gmail.com
Tue Nov 12 14:26:18 EST 2013


Hello!
I am using your github extension (I included the files manually in my
project)... and wrote the main method below. The code compile but at the
run time I got the error:

"program.exe has stopped working. A problem caused the program to stop
working correctly. Windows will close the program and notify you if a
solution is available. "
When I click to debug with MS Visual Studio, I got the warning:
Unhandled exception at 0x01... in program.exe: 0xC00000005: Acces violation
reading location 0x18...

Here's the code:


#include "itkImageFileReader.h"

#include "itkImageFileWriter.h"

#include "itkBoundingBoxImageLabelMapFilter.h"

#include "itkAttributeImageLabelObject.h"

#include "itkBinaryImageToShapeLabelMapFilter.h"

 const unsigned int Dimension = 2;

typedef unsigned char LabelPixelType;

typedef itk::Image< LabelPixelType, Dimension > LabelImageType;

typedef unsigned char OutputPixelType;

typedef itk::Image< OutputPixelType, Dimension > OutputImageType;

typedef itk::ImageFileReader< OutputImageType > ReaderType;

typedef itk::ImageFileWriter< OutputImageType > WriterType;

typedef itk::AttributeImageLabelObject< LabelPixelType, Dimension,
OutputImageType > LabelObjectAttributeType;

typedef itk::LabelMap<LabelObjectAttributeType> LabelMapAttributeType;

typedef itk::BinaryImageToShapeLabelMapFilter

<OutputImageType, LabelMapAttributeType> LabelMapperAttributeType;

typedef itk::LabelMapToLabelImageFilter<LabelMapAttributeType,
OutputImageType> LabelMapToLabelImageFilterType;

typedef itk::BoundingBoxImageLabelMapFilter<LabelMapAttributeType>
BBILabelMapFilter;

  int main( int argc, char *argv[] )

{

 ReaderType::Pointer reader = ReaderType::New();

typedef itk::ImageFileWriter< OutputImageType > WriterType;

 //input

reader->SetFileName( argv[1] );

 //label image

LabelMapperAttributeType::Pointer labelerAttribute =
LabelMapperAttributeType::New();

labelerAttribute->SetInput( reader->GetOutput() );

labelerAttribute->SetComputePerimeter( false );

labelerAttribute->SetOutputBackgroundValue(0);

labelerAttribute->Update();

LabelMapAttributeType::Pointer labelMapAttribute =
labelerAttribute->GetOutput();

 //extract the component with the label 1

BBILabelMapFilter::Pointer toBBILabelMap = BBILabelMapFilter::New();

toBBILabelMap->SetInput(labelMapAttribute);

toBBILabelMap->Update();

const LabelObjectAttributeType* labelObjectAttribute =
toBBILabelMap->GetOutput()->GetLabelObject(1);

 //write

WriterType::Pointer writer = WriterType::New();

writer->SetFileName( "copy_input.jpg" );

writer->SetInput( reader->GetOutput());

writer->Update();

 return 0;

}






On Tue, Nov 12, 2013 at 1:53 PM, Bradley Lowekamp <blowekamp at mail.nih.gov>wrote:

> Hello,
>
> It appears that you are trying to use some code from my github extension:
>
> https://github.com/blowekamp/itkOBBLabelMap
>
> I am not sure where to begin helping you. You didn't include the run-time
> error message, and your code fragment is missing key parts. Can you post a
> minimal compilable example which illustrates the problem? Sometime just
> narrowing down you code to this part help you figure out your issue.
>
> Do the tests for the extension pass for you?
>
> Are you able to run the example?
>
>
> https://github.com/blowekamp/itkOBBLabelMap/blob/master/test/itkOBBExample.cxx
>
> Brad
>
>
> On Nov 12, 2013, at 1:43 PM, elhadj meljane <elhadj.meljane at gmail.com>
> wrote:
>
> Hi all,
> I am trying to use itk to select a component from a binary image. The
> binary image contains several items and I want to separate them in
> different images.
>
> I used the code below but it doesn't work. I got an error message at the
> run time. It looks from the debugger that the line
>
> labelerAttribute->Update()
>
> causes the error. I gave a valid file as input and  checked that ITK reads
> correctly this file.  I would appreciate your help to fix this!
>
>
> #include "itkAttributeImageLabelObject.h"
>
> const      unsigned int    Dimension = 2;
> typedef  unsigned char LabelPixelType;
> typedef  itk::Image< LabelPixelType, Dimension >  LabelImageType;
> typedef  unsigned char                           OutputPixelType;
> typedef  itk::Image< OutputPixelType, Dimension > OutputImageType;
> typedef   itk::ImageFileReader< OutputImageType > ReaderType;
> typedef   itk::ImageFileWriter<  OutputImageType  > WriterType;
> typedef  itk::AttributeImageLabelObject< LabelPixelType, Dimension,
> OutputImageType > LabelObjectAttributeType;
> typedef  itk::LabelMap<LabelObjectAttributeType> LabelMapAttributeType;
> typedef  itk::BinaryImageToShapeLabelMapFilter
>    <OutputImageType, LabelMapAttributeType>  LabelMapperAttributeType;
> typedef  itk::LabelMapToLabelImageFilter<LabelMapAttributeType,
> OutputImageType> LabelMapToLabelImageFilterType;
> typedef  itk::BoundingBoxImageLabelMapFilter<LabelMapAttributeType>
> BBILabelMapFilter;
> typedef   itk::ImageFileWriter<  OutputImageType  > WriterType;
>
> ReaderType::Pointer reader = ReaderType::New();
>
> reader->SetFileName( argv[1] );
>
> LabelMapperAttributeType::Pointer labelerAttribute =
> LabelMapperAttributeType::New();
>
> labelerAttribute->SetInput( reader->GetOutput() );
> labelerAttribute->SetComputePerimeter( false );
> labelerAttribute->SetOutputBackgroundValue(0);
> labelerAttribute->Update();
>
>
> //select the item with the label 1
>
> const LabelObjectAttributeType* labelObjectAttribute =
> toBBILabelMap->GetOutput()->GetLabelObject(1);
>
> BBILabelMapFilter::Pointer toBBILabelMap =  BBILabelMapFilter::New();
> toBBILabelMap->SetInput(labelMapAttribute);
> toBBILabelMap->Update();
>
>
> Thanks.
> Best
> EM
> _______________________________________________
> 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.php
>
> 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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20131112/c1c422b1/attachment.html>
-------------- next part --------------
_______________________________________________
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.php

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 Community mailing list