[Insight-users] to divide images (sorry, one bug in my other mail)
David Llanos
gva02 at elai.upm.es
Thu, 29 Apr 2004 19:24:17 +0200
This is a multi-part message in MIME format.
------=_NextPart_000_0026_01C42E1F.902F2850
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0027_01C42E1F.902F2850"
------=_NextPart_001_0027_01C42E1F.902F2850
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
----- Original Message -----=20
From: David Llanos=20
To: insight-users at itk.org=20
Sent: Thursday, April 29, 2004 7:20 PM
Subject: to divide images
Hi all,
I am looking for classes and methods to divide a binary image in several =
binary images, in function of the I number of objects that the original =
binary image has. For example, of the image binar.png, to obtain four =
images like uno.jpg.
I have gotten the first requirement for this objective that is to label =
this objects, by means of the following code:
-------------------------------------------------------------------------=
-------------------------------------------------------------------------=
------------
.....
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();
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 have been looking for some relabeller or labeller method (in =
http://www.itk.org/Insight/Doxygen/html/classitk_1_1RelabelComponentImage=
Filter-members.html and in =
http://www.itk.org/Insight/Doxygen/html/classitk_1_1ConnectedComponentIma=
geFilter-members.html) to go keeping the different objects of the image =
in pointers, either to write files or to work with them for separate, =
but I have not found anything with that that to be able to work.
does some form exist of using these classes for my objective, or do I =
have to use another class? In that case, What relabeller or labeller =
method can I use to relate an object labeled with another class?=20
Thanks inadvange and regards,
David.
------=_NextPart_001_0027_01C42E1F.902F2850
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></FONT> </DIV>
<DIV style=3D"FONT: 10pt arial">----- Original Message -----=20
<DIV style=3D"BACKGROUND: #e4e4e4; font-color: black"><B>From:</B> <A=20
title=3Dgva02 at elai.upm.es href=3D"mailto:gva02 at elai.upm.es">David =
Llanos</A> </DIV>
<DIV><B>To:</B> <A title=3Dinsight-users at itk.org=20
href=3D"mailto:insight-users at itk.org">insight-users at itk.org</A> </DIV>
<DIV><B>Sent:</B> Thursday, April 29, 2004 7:20 PM</DIV>
<DIV><B>Subject:</B> to divide images</DIV></DIV>
<DIV><BR></DIV>
<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 =
divide a=20
binary image in several binary images, in function of the I number of =
objects=20
that the original binary image has. For example, of the image binar.png, =
to=20
obtain four images like uno.jpg.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I have gotten the first requirement for =
this=20
objective that is to label this objects, by means of the following=20
code:</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2>----------------------------------------------------------------=
-------------------------------------------------------------------------=
---------------------</FONT></DIV>
<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() =
);<BR> labeller->Update();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>itkRelabelComponentFilterType::Pointer =
relabeller =3D=20
itkRelabelComponentFilterType::New();<BR> relabeller->SetInput(=20
labeller->GetOutput() =
);<BR> relabeller->Update();</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><BR>unsigned long nObjects =3D=20
relabeller->GetNumberOfObjects();<BR> const =
std::vector<unsigned=20
long> sizeOfObjects =3D =
relabeller->GetSizeOfObjectsInPixels();</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> </DIV>
<DIV>I have been looking for some relabeller or labeller method =
(in <A=20
href=3D"http://www.itk.org/Insight/Doxygen/html/classitk_1_1RelabelCompon=
entImageFilter-members.html">http://www.itk.org/Insight/Doxygen/html/clas=
sitk_1_1RelabelComponentImageFilter-members.html</A>=20
and in <A=20
href=3D"http://www.itk.org/Insight/Doxygen/html/classitk_1_1ConnectedComp=
onentImageFilter-members.html">http://www.itk.org/Insight/Doxygen/html/cl=
assitk_1_1ConnectedComponentImageFilter-members.html</A>)=20
to go keeping the different objects of the image in pointers, either to =
write=20
files or to work with them for separate, but I have not found anything =
with that=20
that to be able to work.</DIV>
<DIV>does some form exist of using these classes for my objective, or do =
I have=20
to use another class? In that case, What relabeller or labeller =
method can=20
I use to relate an object labeled with another class? </DIV>
<DIV> </DIV>
<DIV>Thanks inadvange and regards,</DIV>
<DIV> </DIV>
<DIV>David.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV></FONT></DIV></BODY></HTML>
------=_NextPart_001_0027_01C42E1F.902F2850--
------=_NextPart_000_0026_01C42E1F.902F2850
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_0026_01C42E1F.902F2850
Content-Type: image/png;
name="uno.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="uno.png"
iVBORw0KGgoAAAANSUhEUgAAAecAAAFsCAAAAADTES6TAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
BGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VG
AAAMOUlEQVR42mJiGAUjAQAEENNoEIwIABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj
8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBA
o/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQ
QKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwA
EECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8M
ABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyP
DAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8
jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBo
PI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQ
aDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE
0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMA
BNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMD
AATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8j
AwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrP
IwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQa
zyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0
Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAAATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAAB
NBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gAAAE0Gs8jAwAE0Gg8jwwAEECj8TwyAEAAjcbzyAAA
ATQazyMDAATQaDyPDAAQQKPxPDIAQACNxvPIAAABNBrPIwMABNBoPI8MABBAo/E8MgBAAI3G88gA
AAHEMqJ9/x9EMOITGC4AIIBYRpM6IoKHMQAIoNFyGxzL/4d7nAME0Gh+xhqtw678Bgig0XgeGYU4
QACxjOCYZPw/cjwMEEBMo9l2RACAAGIZjd4RAQACaLS9PTISBEAAsYzGHT7Fw6bJDRBALKOxTLi9
Ngx8DhBALCMpghkHQPMgAQABxDKaiYk1ZkhHNEAAjah22IhsaUMAQACNtrdHBgAIoNF4HhkAIIBG
43lkAIAAGo3nkQEAAmh0vopIMMQ70QABxDQaQyOirQ4QQCMgnv8zjEY0A0AAjdbPIyOiAQJoNJ5H
BgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nolvh/3/O3QdDxBAo/FMQkQz/RmybgcIoNF4Jhow
/v83dLtWAAE0/OOZenEzlIc+AQJoeI9v/6Nm3AATzNDNFQABxDTcM/MIXkOCDAACiGm4e4+ahS3j
0G2HAQTQMC63fzMyUnXxHuP//0M3tAACaDjn5///qVxsMw7dDA0QQMM4P4NzM3XbyH+H7EgJQAAN
4/z8n5GJur77/5uJ9ecQDQyAAGIazvmZ2o1tVoY/Q7X5DhBAwzieWf5RuVvFxPCfaaiGF0AADedx
ElCGZqRiixuUav7/+MPwW3DohQVAADEN63hmYmSk5oAYMNUw/GP8OxTDDCCAhvc4yf///6lYcDMy
gZp2fxkZXg29kAAIoGEdz+AMTUXj/jMx/vnH/P/vEKzsAAJoeOdnRqqXD0zM/4dkkAEE0HCOZ2aq
ltrgdhiwvmemap1PLwAQQKP7bkgruf///f/33xAcFQMIoOEdz1TtVoGq+38MjFxDMiQAAmiYt8Oo
WsL+ByHmoRkUAAE0nOOZ2sUr4/9/DEy/h2ZYAATQMI7nP8By9j91z/BkZPg7RPMzQAAN5/z8j+Ef
dYc9GRiZWIboRAZAAA3n+Spqzz4DC27GoToBDRBAwzieQZmZyuuGQEXE0AwMgAAaxvHMRN1ohvSr
GLmHZmAABNDofgySamhGtiHqdIAAGsbxzEz9pvF/pt+/hmZgAATQsF+nT03DGP/9/z9E62eAABrm
8UzV+pmJkYmBcYhusgIIIKbhnZv/U9k8pqEazwABxDLMczN1W9z/GP4P0XESgAAa5vOS1M19Q7jw
Awig4V1uMzKMAggACKDhPS85uikWBgACaJi3w0YBFAAEENOo5wamrqczAAig0fWeIwMABNBouT0y
AEAAMQ3/7DyaqYEAIIBYhn88j1YBQAAQQKPnrI+Mmh4ggEbnn0cGAAig0XgeGQ13gAAajeeRAQAC
aHR/1cjogwME0Gh+HhkAIIBYRkaG/D+iMzMQAATQCCm3KYnrYQEAAmi03B4ZACCARlA8j+jxT4AA
GkntbUhEj8ziGyCARsttfFl/+BQBAAE02n8eGWU8QACNvPzMOCLraYAAYhnZmXXEVNYAATRaP8Nz
+LDO5wABNMLrZ0Y0zv/hGuMAATTaDkOJ2GGbpwECaLTcHhkAIIBG43lkAIAAGo3nkQEAAmg0nkcG
AAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5H
BgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSe
RwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0
nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJo
NJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQAC
aDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEA
Amg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EB
AAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeR
AQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3n
kQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN
55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAa
jeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAA
Go3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACA
ABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lkAIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQA
gAAajeeRAQACaDSeRwYACKDReB4ZACCARuN5ZACAABqN55EBAAJoNJ5HBgAIoNF4HhkAIIBG43lk
AIAAGo3nkQEAAmg0nkcGAAig0XgeGQAggEbjeWQAgAAajeeRAQACaDSeRwYACKDReB4ZACDAADcX
pAg5PBEoAAAAAElFTkSuQmCC
------=_NextPart_000_0026_01C42E1F.902F2850--