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

elhadj meljane elhadj.meljane at gmail.com
Tue Nov 12 14:43:54 EST 2013


 I don't have a label image to use the example:
https://github.com/blowekamp/itkOBBLabelMap/blob/master/
test/itkOBBExample.cxx

However, I used to write the main method ... where only a binary image is
used as input.

Thanks!
EM


On Tue, Nov 12, 2013 at 2:26 PM, elhadj meljane <elhadj.meljane at gmail.com>wrote:

> 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://www.itk.org/pipermail/insight-developers/attachments/20131112/352efede/attachment.htm>


More information about the Insight-developers mailing list