[Insight-users] to compare binary images
Miller, James V (Research)
millerjv at crd.ge.com
Wed Jul 7 12:07:23 EDT 2004
David,
You need to pass the output of the readers as the input to the
AND filter.
and->SetInput1( im1->GetOutput() );
and->SetInput2( im2->GetOutput() );
(note that some compilers and precompilers may not like you having a
variable called "and")
Jim
-----Original Message-----
From: David Llanos [mailto:gva02 at elai.upm.es]
Sent: Wednesday, July 07, 2004 12:01 PM
To: insight-users at itk.org; Luis Ibanez (ITK); Zachary Pincus
Subject: Re: [Insight-users] to compare binary images
Hi, can you help me with the code? I have some errors...
----------------
////////////////////////////////
#include "itkAndImageFilter.h"
#include <itkImageRegionIteratorWithIndex.h>
//////////////////////////////////
#include "itkImageMomentsCalculator.h"
///////////////// CREACION DE ITERATORS //////////////////////////////
//lectura de la imagen
typedef unsigned char PixelType;
const unsigned int dimension = 2;
typedef itk::Image<PixelType,dimension> ImageType;
typedef itk::ImageFileReader< ImageType > ReaderType;
//Escritura
typedef itk::ImageFileWriter< ImageType> WriterType;
//filtro AND
typedef itk::AndImageFilter<ImageType,ImageType,ImageType> FiltroAND;
typedef FiltroAND::Pointer PunteroFiltroAND;
///////////////////////////////////////////////////////////////////////
////////////////// PROGRAMA PRINCIPAL ///////////////////////////////
int main( int argc, char * argv[] )
{
if( argc < 3 )
{
std::cerr << "Modo de uso: " << std::endl;
std::cerr << argv[0] << " ImagenDeEntrada1" << std::endl;
return -1;
}
const char * ImagenDeEntrada1 = argv[1];
const char * ImagenDeEntrada2 = argv[2];
//Lectura de la imagen
std::cerr << "*Leyendo imagenes... " << std::endl;
ReaderType::Pointer im1 = ReaderType::New();
im1->SetFileName( ImagenDeEntrada1 );
im1->Update();
ReaderType::Pointer im2 = ReaderType::New();
im2->SetFileName( ImagenDeEntrada2 );
im2->Update();
PunteroFiltroAND and = FiltroAND::New();
and->SetInput1( im1 );
and->SetInput2( im2 );
//Escritura de imagen
WriterType::Pointer imgCoreBWsin = WriterType::New();
imgCoreBWsin->SetFileName( "imgCoreBWsin.PNG" );
//WriterType::Pointer imgCoreBWsin = and->GetOutput();
imgCoreBWsin = and->GetOutput();
and->Update();
std::cout << " Imagen imgCoreBWsin.PNG creada" << std::endl;
std::cout << std::endl;
////////////////////////////////////////////////////////////////////////////
std::cout << "...Fin de la ejecucion" << std::endl;
return(0);
}
////////////////////////////////////////////////////////////////////////////
//
-------------
E:\FiltroAND\Espermas.cpp(102) : error C2664: 'SetInput1' : cannot convert
parameter 1 from 'class itk::SmartPointer<class itk::ImageFileReader<class
itk::Image<unsigned char,2>,class itk::DefaultConvertPixelTraits<unsigned
char> > >' to 'const clas
s itk::Image<unsigned char,2> *'
No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
E:\FiltroAND\Espermas.cpp(103) : error C2664: 'SetInput2' : cannot convert
parameter 1 from 'class itk::SmartPointer<class itk::ImageFileReader<class
itk::Image<unsigned char,2>,class itk::DefaultConvertPixelTraits<unsigned
char> > >' to 'const clas
s itk::Image<unsigned char,2> *'
No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
E:\FiltroAND\Espermas.cpp(109) : error C2679: binary '=' : no operator
defined which takes a right-hand operand of type 'class itk::Image<unsigned
char,2> *' (or there is no acceptable conversion)
Error executing cl.exe.
Espermas.exe - 3 error(s), 0 warning(s)
-------------------------------------------------------
Thanks in advange and regards,
David.
----- Original Message -----
From: "Zachary Pincus" <zpincus at stanford.edu>
To: "David Llanos" <gva02 at elai.upm.es>
Sent: Tuesday, July 06, 2004 7:55 PM
Subject: Re: [Insight-users] to compare binary images
> You appear to be trying to do a boolean AND operation on two image. Try
> using the AndImageFilter.
>
> (Note that boolean AND outputs 1 and 0... so 255 && 255 returns "true"
> or 1. So the outputs of the image filter will be 1's and 0's, not 255's
> and 0's, as in the images you provide. To get that, you'd need to do
> some rescaling or other operation.)
>
>
> Zach Pincus
>
> Department of Biochemistry and Program in Biomedical Informatics
> Stanford University School of Medicine
>
>
> On Jul 6, 2004, at 9:25 AM, David Llanos wrote:
>
> > Hi all,
> >
> > I am trying to compare two binary images pixel to pixel to obtain a
> > third image that contains common pixels. To explain to it better
> > assistant three images: the main ones, a.png and b.png, with those
> > that I want to obtain the image, c.png. This way, c.png has to have
> > the pixels of the image b.png that are in the image a.png.
> >
> > Thanks in advange and regards.
> > <a.png><b.png><c.png>_______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
>
>
_______________________________________________
Insight-users mailing list
Insight-users at itk.org
http://www.itk.org/mailman/listinfo/insight-users
More information about the Insight-users
mailing list