[Insight-users] characteristics
David Llanos
gva02 at elai.upm.es
Thu, 22 Apr 2004 19:17:13 +0200
This is a multi-part message in MIME format.
------=_NextPart_000_0016_01C4289E.6ACADCC0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0017_01C4289E.6ACADCC0"
------=_NextPart_001_0017_01C4289E.6ACADCC0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
hi all,
I am looking for classes and methods to obtain characteristic of several =
objects on a binary image, being the objects separate white parts on =
black bottom. Of each object I want to obtain the radius and the gravity =
center. =20
With Ivan Macia's help I believe that I have gotten the first =
requirement for this objective that is to label this objects, by means =
of the following code (please, indicate me you if there is some error or =
if the one labeled is not correct):
-------------------------------------------------------------------------=
---------------------------------
.....
xorfilter->SetInput1( grindpeak->GetOutput() );
xorfilter->SetInput2( binaryDilate->GetOutput() );
imgEsperBWsin->SetInput( xorfilter->GetOutput() );
imgEsperBWsin->Update();
std::cout << "Numero de iteraciones: " << =
grindpeak->GetNumberOfIterationsUsed() << " .....bordes borrados" << =
std::endl;
std::cout << "Imagen imgEsperBWsin.jpg creada... " << std::endl;
// Etiquetado de la imagen
itkConnectedComponentFilterType::Pointer labeller =3D=20
itkConnectedComponentFilterType::New();
labeller->SetInput( xorfilter->GetOutput() );
labeller->Update();
itkRelabelComponentFilterType::Pointer relabeller =3D =
itkRelabelComponentFilterType::New();
relabeller->SetInput( labeller->GetOutput() );
relabeller->Update();
// Muestra de resultados
unsigned long nObjects =3D relabeller->GetNumberOfObjects();
const std::vector<unsigned long> sizeOfObjects =3D =
relabeller->GetSizeOfObjectsInPixels();
std::cout << "Number of objects : " << nObjects << std::endl;
std::vector<unsigned long>::const_iterator it;
int i; =20
for(i =3D 0, it =3D sizeOfObjects.begin(); it !=3D =
sizeOfObjects.end(); ++i, ++it) {=20
std::cout << "Size of object " << i+1 << ": " << (*it) << " pixels" << =
std::endl;
}
-------------------------------------------------------------------------=
-------------------------------------
I now need to obtain the radius and the gravity center (two coordinates) =
of each object, but the classes itkRelabelComponentImageFilter and =
itkConnectedComponentImageFilter they don't have the methods for it, I =
eat for example -> GetRadius (). =20
Do I have that instantiate "labeller" or "relabeller" with another =
class? which advise me you that it uses?
I attach an example image so that you see to that refer
Thanks in advange and regards,
David
------=_NextPart_001_0017_01C4289E.6ACADCC0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1400" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>hi all,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>I am looking for classes and methods to =
obtain=20
characteristic of several objects on a binary image, being the objects =
separate=20
white parts on black bottom. Of each object I want to obtain the radius =
and the=20
gravity center. <BR>With Ivan Macia's help I believe that I have =
gotten=20
the first requirement for this objective that is to label this objects, =
by means=20
of the following code (please, indicate me you if there is some error or =
if the=20
one labeled is not correct):</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2>----------------------------------------------------------------=
------------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2> =20
=
.....</FONT></DIV>
<DIV><FONT face=3DArial size=3D2> xorfilter->SetInput1(=20
grindpeak->GetOutput() );<BR> xorfilter->SetInput2(=20
binaryDilate->GetOutput() );<BR> imgEsperBWsin->SetInput(=20
xorfilter->GetOutput() =
);<BR> imgEsperBWsin->Update();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2> std::cout << "Numero de =
iteraciones: "=20
<< grindpeak->GetNumberOfIterationsUsed() << " =
.....bordes=20
borrados" << std::endl;<BR> std::cout << =
"Imagen=20
imgEsperBWsin.jpg creada... " << std::endl;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>// Etiquetado de la=20
imagen<BR> itkConnectedComponentFilterType::Pointer labeller =3D=20
<BR> itkConnectedComponentFilterType::New();<BR> labeller=
->SetInput(=20
xorfilter->GetOutput()=20
);<BR> labeller->Update();<BR><BR> itkRelabelComponentFilter=
Type::Pointer=20
relabeller =3D=20
itkRelabelComponentFilterType::New();<BR> relabeller->SetInput(=20
labeller->GetOutput() =
);<BR> relabeller->Update();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><BR> // Muestra de=20
resultados<BR> unsigned long nObjects =3D=20
relabeller->GetNumberOfObjects();<BR> const =
std::vector<unsigned=20
long> sizeOfObjects =3D =
relabeller->GetSizeOfObjectsInPixels();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2> std::cout << "Number of =
objects : "=20
<< nObjects << std::endl;<BR> std::vector<unsigned=20
long>::const_iterator it;<BR> int i; <BR> for(i =
=3D 0, it=20
=3D sizeOfObjects.begin(); it !=3D sizeOfObjects.end(); ++i,=20
++it) { <BR> std::cout << "Size of object " =
<<=20
i+1 << ": " << (*it) << " pixels" <<=20
std::endl;<BR> }</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2>----------------------------------------------------------------=
----------------------------------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>I now need to obtain the radius and the =
gravity=20
center (two coordinates) of each object, but the classes=20
itkRelabelComponentImageFilter and itkConnectedComponentImageFilter they =
don't=20
have the methods for it, I eat for example -> GetRadius (). =
<BR>Do I=20
have that instantiate "labeller" or "relabeller" with another class? =
which=20
advise me you that it uses?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>I attach an example image so that you =
see to that=20
refer</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advange and =
regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>David</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2> </DIV>
<DIV><BR> </FONT></DIV></BODY></HTML>
------=_NextPart_001_0017_01C4289E.6ACADCC0--
------=_NextPart_000_0016_01C4289E.6ACADCC0
Content-Type: image/png;
name="binar.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="binar.png"
iVBORw0KGgoAAAANSUhEUgAAAecAAAFsCAAAAADTES6TAAAACXBIWXMAAC4jAAAuIwF4pT92AAAE
bUlEQVR4nO3dy1ZVMRBFUf7/p7EhooLIeSSVnVNzdmyyU0s6cMfg5QUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAADo6vWD1XuY42NnpR/pc2axH+Utp86P9lVenZ/k28o6P8GBzELv71Bmnbd3rLPU
uzvcWemdncgs9K5ORdZ6P1cC67wfnXu40VnojdzprPQ+dO5B5x507uFeZ6l3ofPj3U6s8xZ07kHn
HnTuYUxnocMNyqx0uHGdpU42tLPQsXTuQecWxmbWOZXOLcjcgsw96NyDzj3o3IPOPajchM496NyD
zj2M7Cx0Lp170LkHnXvQuQeZe9C5CZ170LkHnXvQuQuZm9C5B5170LkHmXuQuAedu5C5B5270LkH
nXuQuQed29C5EZF70LkHnRtRuQeRe9C5B5170LiL954f8sr8ML9yfvw2lvmhfAMDAAAAAFT69ENZ
P6V9pN9Z/db0yf79azWhn+bLj0HI/Shff+JF50f46+MtOj/WN4V1foBDjXXe3uHOQu/reGSl93Wy
stinBBzrLdi1zmp/J+Jif3zhO52F/lrE3W7F1fmIiMvpPF3E5XSeLuJ4Ok8XcT2d50o535aV379o
/H+znAPuGHr5gKNyDjgmc9Gd1y84J+iEN9LWnnn5gAuCLnixavmZY4acEXTBc1PWnTdmyAlJNzy9
Zc15Y4Ycl3XDC2sWnDdoylFhN7wyp3plzpIToi44tPOsmTFDTsm64QadY4acE3XDoZnnbMxaM313
zpLSjRv/DZmY1TdOWDVx58+sxay+c8MdJo6fUzE9ZEbhxK3/NGfK6nsnrNmo88IdhRs7dk7ZUboy
a03J9JQdhSuz1hSNjxlStzJrTdX4mCFlQ6PGlI2PGVI2NGpM2fiYIVVLk7YUro8ZUrQ0aUvl/Jgh
RUuTtlTOz1lSsjRpS+n+nCUlS5O2VO7PWVIzM25Q1f6cJRUr4waVPSFkRtHKuEFlb4gYUbYyb1HV
GyJGlK3MW1T1hogRZSvzFlW9IWJE2cq8RVVviBhRNTJwUs071i8oXZm3qOIhAROKp6btqXlIwITi
qXGDKh4SMOHIypFbR+5aKmDpwFu+vup89yEBE47tHLt24LDFVo8cd8kZS2OHzXnK4i+/7pyxwy5Z
OXLcJWcsjR121bKR4y45Y2nssKuWTRx3yRlTc5ddtGzduEvO2Bs77IY164Zdcsrg2GE31Y97+0qh
5xw0K67zMqHHHDJryrI9pR5zyK4507aUeswhu+ZM21LqLUfsmrVtR6m3HLFr1rYdpZ5xSGSV36Ue
UubxEs+o8xx5Z9R5hrwzyjxF3B01nijolvc6C/1fhy5YdUmdp4m6oM4TJV1Q5xLLL6hzibd7/fxH
56d7P1v5AXXuQeceVO5B5iZEbkLnRnTuQecedO5C4DZk7kHnHnRu4j+BdX4W38OtaNyDygAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NAP9SymMqfm
gH8AAAAASUVORK5CYII=
------=_NextPart_000_0016_01C4289E.6ACADCC0--