From dean.inglis@on.aibn.com Tue Oct 1 06:25:13 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 1 Oct 2002 1:25:13 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary Message-ID: <20021001052514.EIQU28662.tomts8-srv.bellnexxia.net@[209.226.175.10]> Hi, after tinkering for a bit, I've got Auxiliary built but could someone check these suggested changes, and, if correct, commit them? 1) /Auxiliary/CMakeLists.txt - add IF (WIN32) ADD_DEFINITIONS (-DWIN32) ENDIF (WIN32) before INCLUDE_DIRECTORIES( ${ITK_SOURCE_DIR}/Auxiliary/FltkImageViewer ${ITK_BINARY_DIR}/Auxiliary/FltkImageViewer ${FLTK_INCLUDE_PATH} ) to fix the WINGDIAPI declaration pb. 2) Auxiliary/fltkTimeProbesCollectorGUI.h - add using namespace itk; before the class definition: class TimeProbesCollectorGUI : public itk::TimeProbesCollectorBase { 3) Borland doesn't like un-named typedef enums: typedef enum{ BLAH_1, BLAH_2 }; should be typedef enum{ BLAH_1, BLAH_2 } blahs; so, in /Auxialiary/fltkImageViewer/ fltkRGBImage2DViewerWindow.cxx ~ line 418 and fltkImage2DViewerWindow.cxx ~ line 449 the typedef enums should be named. Then the building of examples will continue until a crash at /Examples/ITKRegistrationLib ... getting closer, closer ... regards, Dean From t.boettger@dkfz-heidelberg.de Tue Oct 1 10:40:26 2002 From: t.boettger@dkfz-heidelberg.de (Th. Boettger) Date: Tue, 1 Oct 2002 11:40:26 +0200 Subject: [Insight-users] DeformableMeshFilter Message-ID: Hi, could someone please tell me on which segmentation model the DeformableMeshFilter is based? Is it already usable? I'm asking because it doesn't do anything to the input mesh the way I use it. Thanks Thomas From salah@gris.uni-tuebingen.de Tue Oct 1 12:38:27 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Tue, 1 Oct 2002 13:38:27 +0200 Subject: [Insight-users] flood fill? Message-ID: <00e601c2693f$0f463270$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_00E3_01C2694F.D2C7D680 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello all, is there some class, function, ... that does floodfilling for a 3d image = (volume)?? Thanks, Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_00E3_01C2694F.D2C7D680 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello all,
is there some class, function, ... that = does=20 floodfilling for a 3d image (volume)??
 
Thanks,
 
Zein
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_00E3_01C2694F.D2C7D680-- From dmshelto@andrew.cmu.edu Tue Oct 1 14:49:17 2002 From: dmshelto@andrew.cmu.edu (Damion Shelton) Date: Tue, 01 Oct 2002 09:49:17 -0400 Subject: [Insight-users] flood fill? References: <00e601c2693f$0f463270$aeb00286@wsigris.unituebingen.de> Message-ID: <3D99A7DD.8050109@andrew.cmu.edu> Zein Salah wrote: Hi, take a look at the FloodFilledFunctionConditionalIterator and derived classes. The ImageFunction variant of this class allows flood fills based on functions of pixel data (an example being a flood based on pixel intensity) and the SpatialFunction variant will flood based on pixel "inclusion" inside a N-d function defined in physical space (a sphere for instance). Note that in both cases you will need to supply an appropriate function to the iterator in order to define the flood. You can either supply a seed pixel to the iterator or let it find it's own. You may be interested in looking at /Examples/itkFloodFilledSpatialFunctionExample.cxx to get started. -Damion- > Hello all, > is there some class, function, ... that does floodfilling for a > 3d image (volume)?? > > Thanks, > > Zein > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 From luis.ibanez@kitware.com Tue Oct 1 15:08:07 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 01 Oct 2002 10:08:07 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary References: <20021001052514.EIQU28662.tomts8-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3D99AC47.2040007@kitware.com> Hi Dean, Thanks for the detailed report. I'll make this changes later today. Luis. =================================== dean.inglis@on.aibn.com wrote: >Hi, > >after tinkering for a bit, I've got Auxiliary built >but could someone check these suggested changes, >and, if correct, commit them? > >1) /Auxiliary/CMakeLists.txt - add > IF (WIN32) > ADD_DEFINITIONS (-DWIN32) > ENDIF (WIN32) >before > INCLUDE_DIRECTORIES( > ${ITK_SOURCE_DIR}/Auxiliary/FltkImageViewer > ${ITK_BINARY_DIR}/Auxiliary/FltkImageViewer > ${FLTK_INCLUDE_PATH} > ) >to fix the WINGDIAPI declaration pb. > >2) Auxiliary/fltkTimeProbesCollectorGUI.h - add >using namespace itk; >before the class definition: >class TimeProbesCollectorGUI : public >itk::TimeProbesCollectorBase { > >3) Borland doesn't like un-named typedef enums: > typedef enum{ > BLAH_1, > BLAH_2 > }; >should be > typedef enum{ > BLAH_1, > BLAH_2 > } blahs; >so, in /Auxialiary/fltkImageViewer/ >fltkRGBImage2DViewerWindow.cxx ~ line 418 >and >fltkImage2DViewerWindow.cxx ~ line 449 >the typedef enums should be named. > >Then the building of examples will continue until >a crash at /Examples/ITKRegistrationLib ... > >getting closer, closer ... > >regards, >Dean > > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Tue Oct 1 15:23:22 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 01 Oct 2002 10:23:22 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary References: <20021001052514.EIQU28662.tomts8-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3D99AFDA.9010100@kitware.com> Hi Dean, Could you give us more details on the need of opening the namespace itk ? Normally it is not a good idea to open the namespace with "using namespace itk" since this is almost like not using namespaces at all. Probably was is missing is to specify the full namespace in some ITK class used inside the TimeProbesCollectorGUI. in that case it will be better to add something like ::itk::Foo Please let us know, Thanks Luis ======================================== dean.inglis@on.aibn.com wrote: > >2) Auxiliary/fltkTimeProbesCollectorGUI.h - add >using namespace itk; >before the class definition: >class TimeProbesCollectorGUI : public >itk::TimeProbesCollectorBase { > From bill.hoffman@kitware.com Tue Oct 1 16:13:55 2002 From: bill.hoffman@kitware.com (Bill Hoffman) Date: Tue, 01 Oct 2002 11:13:55 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary In-Reply-To: <3D99AC47.2040007@kitware.com> References: <20021001052514.EIQU28662.tomts8-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <5.0.2.1.0.20021001111326.018b9da8@pop.biz.rr.com> At 10:08 AM 10/1/2002 -0400, Luis Ibanez wrote: >Hi Dean, > >Thanks for the detailed report. >I'll make this changes later today. > >Luis. > >=================================== > >dean.inglis@on.aibn.com wrote: > >>Hi, >> >>after tinkering for a bit, I've got Auxiliary built >>but could someone check these suggested changes, >>and, if correct, commit them? >> >>1) /Auxiliary/CMakeLists.txt - add IF (WIN32) >> ADD_DEFINITIONS (-DWIN32) >> ENDIF (WIN32) This should not be needed. What is the problem here? -Bill From dean.inglis@on.aibn.com Tue Oct 1 21:09:28 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 1 Oct 2002 16:09:28 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary Message-ID: <20021001200928.GTOR3879.tomts7-srv.bellnexxia.net@[209.226.175.10]> ADD_DEFINITIONS (-DWIN32) fixed the WINGDIAPI pb seen on http://www.itk.org/Testing/Sites/moxel2.crd/WinNT-bcc32/20020930-0500-Nightly/BuildError.html and was also present on my Borland release build. > >>1) /Auxiliary/CMakeLists.txt - add IF (WIN32) > >> ADD_DEFINITIONS (-DWIN32) > >> ENDIF (WIN32) > > > This should not be needed. What is the problem here? > > -Bill > As far as the using namespace itk: it worked, but I just tried the full ::itk in the class declaration without 'using namespace itk' and that works also. Dean From luis.ibanez@kitware.com Tue Oct 1 22:12:30 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 01 Oct 2002 17:12:30 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary References: <20021001200928.GTOR3879.tomts7-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3D9A0FBE.8090609@kitware.com> Dean, 1) The Win3D declaration was added to the CMakeLists.txt file in Auxiliary/FltkImageViewer. 2) The anonymous enums were also fixed. 3) The "using namespace itk" is pending. Could you please give us more details on this error ? Thanks Luis ==================================== dean.inglis@on.aibn.com wrote: >ADD_DEFINITIONS (-DWIN32) >fixed the WINGDIAPI pb seen on >http://www.itk.org/Testing/Sites/moxel2.crd/WinNT-bcc32/20020930-0500-Nightly/BuildError.html > >and was also present on my Borland release build. > > >>>>1) /Auxiliary/CMakeLists.txt - add IF (WIN32) >>>> ADD_DEFINITIONS (-DWIN32) >>>> ENDIF (WIN32) >>>> >> >>This should not be needed. What is the problem here? >> >>-Bill >> > >As far as the using namespace itk: it worked, >but I just tried the full ::itk in the class >declaration without 'using namespace itk' and >that works also. > >Dean > > From Hannu.Helminen.0001@dosetek.varian.com Wed Oct 2 08:42:17 2002 From: Hannu.Helminen.0001@dosetek.varian.com (Hannu Helminen) Date: Wed, 02 Oct 2002 10:42:17 +0300 Subject: [Insight-users] Thread safety of itkMultiThreader Message-ID: <5.1.0.14.1.20021002103436.00b98aa0@maila.dosetek.varian.com> --=====================_409460421==_ Content-Type: text/plain; charset="us-ascii"; format=flowed Hello all, Overall, the exception safety of itk is very good. But one area where exceptions are not gracefully handled is the itkMultiThreader. If any of the worker thread throws, this causes at least in Win32 a program fault, since each thread is expected to catch its own exceptions. And also if the main thread fails, it does not clean up the worker threads correctly, as it should. I think that the correct behavior would be for each worker thread to catch all exceptions using the catch(...) construct, and then signal the main thread that a failure has occurred. And if the main thread notices the problem, it first cleans up the other threads and then re-throws an exception. I have been bitten by this recently: I have created a progress reporter which also lets the user abort the algorithm, which is implemented with an exception. This seems to work OK otherwise but not from within the multi-threaded algorithms. To illustrate my point, I have attached a patch. This change has been compiled and tested only against Win32 and no threading models, because I only have access to those. Nevertheless I attempted to make the code work also in the pthreads and sproc threading models. While I was at it, I also re-structured the code so that the exception handling will only be written once, and all the threading model specific extensions are more grouped together. Since the idea is to illustrate a point, only the SingleMethodExecute method was re-touched. But if this patch is accepted, I can create another one which also fixes the MultipleMethodExecute. Best regards, Hannu Helminen Varian Medical Systems Finland Oy --=====================_409460421==_ Content-Type: application/zip; name="ExceptionSafeMultiThreader.zip"; x-mac-type="705A4950"; x-mac-creator="705A4950" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ExceptionSafeMultiThreader.zip" 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 --=====================_409460421==_ Content-Type: text/plain; charset="us-ascii"; format=flowed Hannu Helminen Varian Medical Systems Finland Oy This is a temporary mail account that may get deleted after spambots harvest the email address. --=====================_409460421==_-- From salah@gris.uni-tuebingen.de Wed Oct 2 10:20:56 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Wed, 2 Oct 2002 11:20:56 +0200 Subject: [Insight-users] error with SetLabel of fltk viewer Message-ID: <009d01c269f5$03afc4b0$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_0099_01C26A05.C72CADD0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_009A_01C26A05.C72CADD0" ------=_NextPart_001_009A_01C26A05.C72CADD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi friends, I have written a small function that display a volume using the fltk = meta image viewer (The code in blue), it worked always fine. I tried = then to add the label to the viewer window and to pass it as a parameter = to my function (the code in red). the program always terminates = abnormally, exactly at the SetLabel instruction. The error message is = attacked to this email.=20 header file:=20 virtual void ShowImage(itk::Image::Pointer m_Image, const char *m_Label ); source file: void Tester::ShowImage(itk::Image::Pointer m_AnyImage, const char *m_Label ) { typedef fltk::ImageViewer< unsigned short, unsigned char > = ImageViewerType; ImageViewerType *m_AnyViewer=3D new ImageViewerType; m_editViewer->SetLabel(m_Label); /// the program terminates here. m_AnyViewer->SetImage( m_AnyImage ); m_AnyViewer->Show(); } Do anybody have an idea, what the problem could be??? Thanks in advanced..... Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_001_009A_01C26A05.C72CADD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi friends,
I have written a small function that = display a=20 volume using the fltk meta image viewer (The code in blue), it worked=20 always fine. I tried then to add the label to the viewer window and = to pass=20 it as a parameter to my function (the code in red). the program always=20 terminates abnormally, exactly at the SetLabel instruction. The error = message is=20 attacked to this email.
 
header file:
 virtual void=20 ShowImage(itk::Image<unsigned short,ImageDimension>::Pointer = m_Image, const char *m_Label );
 
source file:
void Tester::ShowImage(itk::Image<unsigned=20 short,ImageDimension>::Pointer m_AnyImage, = const char=20 *m_Label )
{
   typedef fltk::ImageViewer< = unsigned=20 short, unsigned char >     =20 ImageViewerType;
   = ImageViewerType =20 *m_AnyViewer=3D new ImageViewerType;
  =20 m_editViewer->SetLabel(m_Label);   /// the program = terminates=20 here.
  =20 m_AnyViewer->SetImage( m_AnyImage );
  =20 m_AnyViewer->Show();
}
 
Do anybody have an idea, what the = problem could=20 be???
 
Thanks in advanced.....
 
Zein
 
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_001_009A_01C26A05.C72CADD0-- ------=_NextPart_000_0099_01C26A05.C72CADD0 Content-Type: application/octet-stream; name="err2.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="err2.gif" R0lGODdhPAKMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAg AOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCA AECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDA AKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAA QAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBg QGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCg QMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAA gCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBA gIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCA gOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDg gEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAg wKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBg wACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDA wGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAA8AowA AAj/ABEIFHgAwYGDCBMWNHiQocKHCAdKnEixosWLGDNqnJhwY0WIDR06fEgw4sWGIFNC5GiyZEqW KhUynBmz5suPK3GS9HgyJ0WbHQ0SdOkSqEqiC3VGlMmzqdOnUFkKTWqRasGCUhD8O/Cvq9evYMOK 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 ------=_NextPart_000_0099_01C26A05.C72CADD0-- From salah@gris.uni-tuebingen.de Wed Oct 2 12:19:16 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Wed, 2 Oct 2002 13:19:16 +0200 Subject: [Insight-users] Fw: error with SetLabel of fltk viewer Message-ID: <00c401c26a05$8b2873a0$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_00C0_01C26A16.4E9BBFD0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_00C1_01C26A16.4E9BBFD0" ------=_NextPart_001_00C1_01C26A16.4E9BBFD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Thanks all,=20 Do do not need to look at my last email (this email). I found the = problem. It was just a writing error. ----- Original Message -----=20 From: Zein Salah=20 To: ITK Users=20 Sent: Wednesday, October 02, 2002 11:20 AM Subject: error with SetLabel of fltk viewer Hi friends, I have written a small function that display a volume using the fltk = meta image viewer (The code in blue), it worked always fine. I tried = then to add the label to the viewer window and to pass it as a parameter = to my function (the code in red). the program always terminates = abnormally, exactly at the SetLabel instruction. The error message is = attacked to this email.=20 header file:=20 virtual void ShowImage(itk::Image::Pointer m_Image, const char *m_Label ); source file: void Tester::ShowImage(itk::Image::Pointer m_AnyImage, const char *m_Label ) { typedef fltk::ImageViewer< unsigned short, unsigned char > = ImageViewerType; ImageViewerType *m_AnyViewer=3D new ImageViewerType; m_editViewer->SetLabel(m_Label); /// the program terminates here. m_AnyViewer->SetImage( m_AnyImage ); m_AnyViewer->Show(); } Do anybody have an idea, what the problem could be??? Thanks in advanced..... Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_001_00C1_01C26A16.4E9BBFD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Thanks all,
 
Do do not need to look at my last = email (this=20 email). I found the problem. It was just a writing error.
 
----- Original Message -----=20
From: Zein=20 Salah
Sent: Wednesday, October 02, 2002 11:20 AM
Subject: error with SetLabel of fltk viewer

Hi friends,
I have written a small function that = display a=20 volume using the fltk meta image viewer (The code in blue), it worked=20 always fine. I tried then to add the label to the viewer window and = to pass=20 it as a parameter to my function (the code in red). the program always=20 terminates abnormally, exactly at the SetLabel instruction. The error = message is=20 attacked to this email.
 
header file:
 virtual void=20 ShowImage(itk::Image<unsigned short,ImageDimension>::Pointer = m_Image, const char *m_Label );
 
source file:
void Tester::ShowImage(itk::Image<unsigned=20 short,ImageDimension>::Pointer m_AnyImage, = const char=20 *m_Label )
{
   typedef fltk::ImageViewer< = unsigned=20 short, unsigned char >     =20 ImageViewerType;
   = ImageViewerType =20 *m_AnyViewer=3D new ImageViewerType;
  =20 m_editViewer->SetLabel(m_Label);   /// the program = terminates=20 here.
  =20 m_AnyViewer->SetImage( m_AnyImage );
  =20 m_AnyViewer->Show();
}
 
Do anybody have an idea, what the = problem could=20 be???
 
Thanks in advanced.....
 
Zein
 
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_001_00C1_01C26A16.4E9BBFD0-- ------=_NextPart_000_00C0_01C26A16.4E9BBFD0 Content-Type: application/octet-stream; name="err2.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="err2.gif" R0lGODdhPAKMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAg AOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCA AECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDA AKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAA QAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBg QGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCg QMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAA gCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBA gIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCA gOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDg gEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAg wKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBg wACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDA wGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAA8AowA AAj/ABEIFHgAwYGDCBMWNHiQocKHCAdKnEixosWLGDNqnJhwY0WIDR06fEgw4sWGIFNC5GiyZEqW KhUynBmz5suPK3GS9HgyJ0WbHQ0SdOkSqEqiC3VGlMmzqdOnUFkKTWqRasGCUhD8O/Cvq9evYMOK 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 ------=_NextPart_000_00C0_01C26A16.4E9BBFD0-- From luis.ibanez@kitware.com Wed Oct 2 15:18:53 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 02 Oct 2002 10:18:53 -0400 Subject: [Insight-users] Re: request info..!! : Morphological Operators References: <20021002082015.74427.qmail@web13708.mail.yahoo.com> Message-ID: <3D9B004D.1030509@kitware.com> Hi Digvijay, The morphological operators in ITK are implemented for both binary (two level images) and gray level images. They use a customizable structuring element. The basic classes are: http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryDilateImageFilter.html http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryErodeImageFilter.html http://www.itk.org/Insight/Doxygen/html/classitk_1_1GrayscaleDilateImageFilter.html http://www.itk.org/Insight/Doxygen/html/classitk_1_1GrayscaleErodeImageFilter.html There is currently no Openning or Closing operator implemeted. you could get them through the connection of Dilation and Erosion. (It may be worth to add them as filters on their own in the future...) Please let us know if you need more information. Thanks Luis ======================================== digvijay singh wrote: >hi luis ... >could you give me some information on the >morphological operators in itk...opening , closing >connector components >thanks > >__________________________________________________ >Do you Yahoo!? >New DSL Internet Access from SBC & Yahoo! >http://sbc.yahoo.com > From luis.ibanez@kitware.com Wed Oct 2 16:32:43 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 02 Oct 2002 11:32:43 -0400 Subject: [Insight-users] fixes for Borland build of /Auxiliary References: <20021002023145.CIIX24834.tomts23-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3D9B119B.6040402@kitware.com> Hi Dean, The changes in the TimeProbesCollector have been checked in. The base class has now a fully specified namespace ( ::itk:: ) where the methods in the base class are invoked. Please let us know if that solves the problem under Borland. Thanks Luis =============================================== dean.inglis@on.aibn.com wrote: >Luis, > >hope this build log helps, > > >Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland >c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx: >Error E2090 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 44: Qualifier 'TimeProbesCollectorBase' is not a class or namespace name in function TimeProbesCollector::Clear() >Error E2379 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 44: Statement missing ; in function TimeProbesCollector::Clear() >Error E2090 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 58: Qualifier 'TimeProbesCollectorBase' is not a class or namespace name in function TimeProbesCollector::Stop(const char *) >Error E2379 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 58: Statement missing ; in function TimeProbesCollector::Stop(const char *) >Warning W8057 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 63: Parameter 'nameid' is never used in function TimeProbesCollector::Stop(const char *) >Error E2090 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 73: Qualifier 'TimeProbesCollectorBase' is not a class or namespace name in function TimeProbesCollector::Start(const char *) >Error E2379 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 73: Statement missing ; in function TimeProbesCollector::Start(const char *) >Warning W8057 c:\Builder\Insight\Auxiliary\FltkImageViewer\fltkTimeProbesCollector.cxx 78: Parameter 'nameid' is never used in function TimeProbesCollector::Start(const char *) >*** 6 errors in Compile *** > >Dean > > >>3) The "using namespace itk" is pending. Could you please >> give us more details on this error ? >> > > > From millerjv@crd.ge.com Wed Oct 2 17:48:26 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Wed, 2 Oct 2002 12:48:26 -0400 Subject: [Insight-users] Thread safety of itkMultiThreader Message-ID: I think your model of the "correct behavior" sounds good. I haven't looked though your changes enough to determine how the worker threads communicate the exception to the main thread. Is it merely the return status indicating an exception occurred or is the actual exception object passed to the main thread? Would we need to change the ThreadedGenerateData() methods in each filter to catch the exceptions or is that catch encapsulated in the Multithreader code? A note on your use of exceptions. We decided internally to restrict our use of exceptions to events that were truely exceptional (ran out of memory, disk error, etc.) and to use Observers/Events to capture operations like a user aborting a filter. Would ITK's events have worked for you here? > -----Original Message----- > From: Hannu Helminen [mailto:Hannu.Helminen.0001@dosetek.varian.com] > Sent: Wednesday, October 02, 2002 3:42 AM > To: insight-users@public.kitware.com > Subject: [Insight-users] Thread safety of itkMultiThreader > > > > Hello all, > > Overall, the exception safety of itk is very good. But one area where > exceptions are not gracefully handled is the > itkMultiThreader. If any of > the worker thread throws, this causes at least in Win32 a > program fault, > since each thread is expected to catch its own exceptions. > And also if the > main thread fails, it does not clean up the worker threads > correctly, as it > should. > > I think that the correct behavior would be for each worker > thread to catch > all exceptions using the catch(...) construct, and then > signal the main > thread that a failure has occurred. And if the main thread > notices the > problem, it first cleans up the other threads and then > re-throws an exception. > > I have been bitten by this recently: I have created a > progress reporter > which also lets the user abort the algorithm, which is > implemented with an > exception. This seems to work OK otherwise but not from within the > multi-threaded algorithms. > > To illustrate my point, I have attached a patch. This change has been > compiled and tested only against Win32 and no threading > models, because I > only have access to those. Nevertheless I attempted to make > the code work > also in the pthreads and sproc threading models. While I was > at it, I also > re-structured the code so that the exception handling will > only be written > once, and all the threading model specific extensions are > more grouped > together. > > Since the idea is to illustrate a point, only the SingleMethodExecute > method was re-touched. But if this patch is accepted, I can > create another > one which also fixes the MultipleMethodExecute. > > Best regards, > Hannu Helminen > Varian Medical Systems Finland Oy > From GIordanescu@cc.nih.gov Wed Oct 2 23:04:42 2002 From: GIordanescu@cc.nih.gov (Iordanescu, Gheorghe (CC/DRD)) Date: Wed, 2 Oct 2002 18:04:42 -0400 Subject: [Insight-users] ctn and ITK Message-ID: <0856166C2F7DE0488BB312A2BD3D58CB4BD56B@cyan2.CC.NIH.GOV> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26A5F.B5B8F4F0 Content-Type: text/plain Hello everybody, I would like to ask if anybody has any experience using ctn library and ITK. I am trying to use ITK in my projects which use ctn to read dicom images from disk. So far I've been able to do it but sometimes I get strange run time errors (like Dicom function DCM_OpenFile returning DCM_FILEOPENFAILED error). Before adding ITK classes everything worked fine. I am using ctn version 3.0.4 on a Windows 2K machine (Visual C 6) Thank you, George ------_=_NextPart_001_01C26A5F.B5B8F4F0 Content-Type: text/html Content-Transfer-Encoding: quoted-printable

Hello everybody,

 

I would like to ask if anybody has any experience = using ctn library and ITK. =

 

I am trying to use ITK in my projects which use = ctn to read dicom = images from disk. So far I've been able to do it but sometimes I get strange run = time errors (like Dicom function DCM_OpenFile returning DCM_FILEOPENFAILED error). Before adding ITK classes = everything worked fine.

 

 I am = using ctn version 3.0.4 on a Windows 2K machine (Visual = C 6)

 

Thank you,

 

George

 

------_=_NextPart_001_01C26A5F.B5B8F4F0-- From Hannu.Helminen.0001@dosetek.varian.com Thu Oct 3 11:34:16 2002 From: Hannu.Helminen.0001@dosetek.varian.com (Hannu Helminen) Date: Thu, 03 Oct 2002 13:34:16 +0300 Subject: Fwd: RE: [Insight-users] Thread safety of itkMultiThreader Message-ID: <5.1.0.14.1.20021003122205.00b85918@maila.dosetek.varian.com> In my suggested patch, I only store an exception flag in the worker thread to ThreadInfoStruct, which is then read by the main thread. Better option would be to store the actual exception object. But there are some difficulties in this approach: 1) It is not possible to determine which exception occurred in run time. Even though ITK only throws itk::ExceptionObject, user code or the operating system can throw std::exception or even something else. Catching these objects by correct type and then re-throwing them will be quite tedious. 2) Copying the exception object usually requires allocating new memory from the heap. If the original exception was caused by a low memory condition, this may cause another exception, which will not be handled. If the intent is to propagate the reason of the exception up, probably best option would be to catch for both std::exception (which is also a superclass of itk::ExceptionObject) and the ellipsis construct "catch(...)". The reason code from std::exception::what() function is then stored to a (perhaps pre-allocated) buffer, which is then re-thrown in the main thread as an itk::ExceptionObject. There should be no need to modify the ThreadedGenerateData() functions, since the exception handling is in a separate function within the itk::MultiThreader. However, as a consequence of this change, it *could* be possible to clean up the interface of the multitheader callback function. Currently it is ITK_THREAD_RETURN_TYPE CallbackFunction(void *argument) where the return type depends on the threading model used, and the argument has to be cast with reinterpret_cast. In interest of code clarity, both the cast and the return value could be moved to inside itk::MultiTheader, and the signature could be e.g. void CallbackFunction(MultiThreader::ThreadInfoStruct *argument) This would also allow for the possibility of compiling in support for two or more threading models simultaneously. Currently this is not possible, since the choice of ITK_THREAD_RETURN_TYPE is made at compile time. I am not familiar enough with the ITK's event model to know how to use it to interrupt a lengthy calculation. In general the problem with such voluntary methods of aborting an algorithm is that abortion has to be anticipated in each algorithm separately. Taking a concrete example, how should I interrupt the code in itkStatisticsImageFilter::ThreadedGenerateData()? As far as I can see, the only way to interrupt this code before iteration is complete is to throw an exception from within the progress reporter. Hannu PS. The subject line should of course read "exception safety", not "thread safety" ;-) But that was probably obvious. >From: "Miller, James V (Research)" >To: "'Hannu Helminen'" , > insight-users@public.kitware.com >Subject: RE: [Insight-users] Thread safety of itkMultiThreader >Date: Wed, 2 Oct 2002 12:48:26 -0400 >X-Mailer: Internet Mail Service (5.5.2653.19) > >I think your model of the "correct behavior" sounds good. >I haven't looked though your changes enough to determine how the >worker threads communicate the exception to the main thread. Is >it merely the return status indicating an exception occurred or >is the actual exception object passed to the main thread? > >Would we need to change the ThreadedGenerateData() methods >in each filter to catch the exceptions or is that catch >encapsulated in the Multithreader code? > >A note on your use of exceptions. We decided internally to >restrict our use of exceptions to events that were truely >exceptional (ran out of memory, disk error, etc.) and to use >Observers/Events to capture operations like a user aborting >a filter. Would ITK's events have worked for you here? Hannu Helminen Varian Medical Systems Finland Oy This is a temporary mail account that may get deleted after spambots harvest the email address. From affable@hd2.dot.net.in Thu Oct 3 14:38:13 2002 From: affable@hd2.dot.net.in (cspl) Date: Thu, 3 Oct 2002 19:08:13 +0530 Subject: [Insight-users] Re: Insight-users digest, Vol 1 #279 - 1 msg References: <20021003104007.9202.50654.Mailman@public.kitware.com> Message-ID: <000701c26ae2$22fe9ce0$01000001@macinfo.net> Hi Luis, First, have you made any changes to ResampleImageFilter or AffineTransform during last 45 days. 2 days back i updated my ITK with the latest, and suddenly my old Transform code is not showing the same result as i posted on our website. anyway, I experimented with IdentityTransform and the result is the same as the old AffineTransform output.Absolutely no change. This is the code i'm using. NOTE: Before this i'm rescaling the volume to unsigned char data type. with min intensity 0 and max 254. Does this affect the result??? **************************************************************************** *********** typedef BufferToImageConversion ConverterType; // Volume - Image converetr typedef ConverterType::ImageType UCharImage; // typedef itk::AffineTransform TransformType; typedef itk::IdentityTransform TransformType; itk::SmartPointer< TransformType> transform; typedef itk::ResampleImageFilter ResampleFilter; typedef UCharImage::SizeType ImageSizeType; //////////////////////////////////////////////////////////////////////////// /////////////// // // initializations // //////////////////////////////////////////////////////////////////////////// /////////////// // this is the matrix i use to store the regitration result.Now commented // double result[12]; // memcpy(result, mat->Mat, sizeof(double)*12); ConverterType converter ; ConverterType ::ImagePointer spectImage = converter.GetImage(pMoving); ConverterType ::ImagePointer mriImage = converter.GetImage(pFixed); ImageSizeType size; size[0]=pTemp->width, size[1]= pTemp->height, size[2] = pTemp->depth; ResampleFilter::Pointer resampleFilter = ResampleFilter::New(); transform = TransformType::New(); TransformType::ParametersType params(transform->GetNumberOfParameters()) ; // for (int pi=0;pi<12;pi++) // params[pi] = result[pi]; // transform->SetParameters( params); // no params set for IdentityTransform UCharImage::Pointer outImage = NULL; resampleFilter ->SetTransform(transform.GetPointer()); resampleFilter->SetInput(spectImage ); resampleFilter->SetSize( mriImage->GetLargestPossibleRegion().GetSize()); resampleFilter->SetOutputOrigin( mriImage->GetOrigin() ); resampleFilter->SetOutputSpacing( mriImage->GetSpacing() ); try { resampleFilter->Update(); }catch(itk::ExceptionObject &Eo){ AfxMessageBox(Eo.GetDescription()); } outImage = resampleFilter->GetOutput(); ******************************************************* Thanks, Looking forward for your help on this, cspl From luis.ibanez@kitware.com Thu Oct 3 15:15:22 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 03 Oct 2002 10:15:22 -0400 Subject: [Insight-users] Re: thresholding References: <20021003113625.80854.qmail@web13705.mail.yahoo.com> Message-ID: <3D9C50FA.8050006@kitware.com> Hi Digvijay, Assuming that you have an image with a bimodal distribution of gray levels, you may use the OtsuThresholdImageCalculator. http://www.itk.org/Insight/Doxygen/html/classitk_1_1OtsuThresholdImageCalculator.html This class will compute a threshold based on the values of image histogram. The threshold can then be used to feed the BinaryThresholdImageFilter http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryThresholdImageFilter.html Note that this last filter has a Lower and Upper thresholds. You may want to put the lower threshold to zero and the upper to the value resulting from the Otsu calculator. Also, keep in mind that Calculators are not pipeline objects. That is, They are not updated by the pipeline. You have to explicitly call "Compute()" on the calculator in order to get a valid result. You will have examples on the use of these classes under: Insight/Testing/Code/BasicFilters/itkBinaryThresholdImageFilterTest.cxx Insight/Testing/Code/Algorithms/itkOtsuThresholdImageCalculatorTest.cxx Please let us know if you have any questions regarding the use of these classes. Thanks Luis ============================ digvijay singh wrote: >hi luis !! >are there any methods in itk implementing histogram >based image thresholding ... >Thanks for the morphological operators info >digvijay > >__________________________________________________ >Do you Yahoo!? >New DSL Internet Access from SBC & Yahoo! >http://sbc.yahoo.com > From luis.ibanez@kitware.com Thu Oct 3 15:30:06 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 03 Oct 2002 10:30:06 -0400 Subject: Fwd: RE: [Insight-users] Thread safety of itkMultiThreader : Aborting filter execution References: <5.1.0.14.1.20021003122205.00b85918@maila.dosetek.varian.com> Message-ID: <3D9C546E.3010100@kitware.com> Hi Hannu, About the mechanism for stopping filters during execution: The itkProcessObject has a boolean member variable: m_AbortGenerateData That can be Set/Get with SetAbortGeneratData( ); GetAbortGeneratData( ); Since all ITK filters derive from the ProcessObject, users can stop filter from a GUI by invoking myFilter->SetAbortGenerateData( true ); or myFilter->AbortGenerateDataOn(); The problem is that filters are not checking for this condition in their inner loops..... Right now, this condition is only tested in the itkStreamingImageFilter. So, it seems that we will have to visit all the filters and add this checking in order to allow users to abort a process.... Once the filters are aborted they will send an StopEvent() that a GUI can use to keep the user informed. In this way you can exit a filter nicely... without throwing exceptions. Thanks for pointing this out Luis =================================== Hannu Helminen wrote: > In my suggested patch, I only store an exception flag in the worker > thread to ThreadInfoStruct, which is then read by the main thread. > > Better option would be to store the actual exception object. But there > are some difficulties in this approach: > > 1) It is not possible to determine which exception occurred in run > time. Even though ITK only throws itk::ExceptionObject, user code or > the operating system can throw std::exception or even something else. > Catching these objects by correct type and then re-throwing them will > be quite tedious. > > 2) Copying the exception object usually requires allocating new memory > from the heap. If the original exception was caused by a low memory > condition, this may cause another exception, which will not be handled. > > If the intent is to propagate the reason of the exception up, probably > best option would be to catch for both std::exception (which is also a > superclass of itk::ExceptionObject) and the ellipsis construct > "catch(...)". The reason code from std::exception::what() function is > then stored to a (perhaps pre-allocated) buffer, which is then > re-thrown in the main thread as an itk::ExceptionObject. > > > There should be no need to modify the ThreadedGenerateData() > functions, since the exception handling is in a separate function > within the itk::MultiThreader. > > However, as a consequence of this change, it *could* be possible to > clean up the interface of the multitheader callback function. > Currently it is > > ITK_THREAD_RETURN_TYPE CallbackFunction(void *argument) > > where the return type depends on the threading model used, and the > argument has to be cast with reinterpret_cast. In interest of code > clarity, both the cast and the return value could be moved to inside > itk::MultiTheader, and the signature could be e.g. > > void CallbackFunction(MultiThreader::ThreadInfoStruct *argument) > > This would also allow for the possibility of compiling in support for > two or more threading models simultaneously. Currently this is not > possible, since the choice of ITK_THREAD_RETURN_TYPE is made at > compile time. > > > I am not familiar enough with the ITK's event model to know how to use > it to interrupt a lengthy calculation. In general the problem with > such voluntary methods of aborting an algorithm is that abortion has > to be anticipated in each algorithm separately. Taking a concrete > example, how should I interrupt the code in > itkStatisticsImageFilter::ThreadedGenerateData()? As far as I can see, > the only way to interrupt this code before iteration is complete is to > throw an exception from within the progress reporter. > > Hannu > > > PS. The subject line should of course read "exception safety", not > "thread safety" ;-) But that was probably obvious. > > > >> From: "Miller, James V (Research)" >> To: "'Hannu Helminen'" , >> insight-users@public.kitware.com >> Subject: RE: [Insight-users] Thread safety of itkMultiThreader >> Date: Wed, 2 Oct 2002 12:48:26 -0400 >> X-Mailer: Internet Mail Service (5.5.2653.19) >> >> I think your model of the "correct behavior" sounds good. >> I haven't looked though your changes enough to determine how the >> worker threads communicate the exception to the main thread. Is >> it merely the return status indicating an exception occurred or >> is the actual exception object passed to the main thread? >> >> Would we need to change the ThreadedGenerateData() methods >> in each filter to catch the exceptions or is that catch >> encapsulated in the Multithreader code? >> >> A note on your use of exceptions. We decided internally to >> restrict our use of exceptions to events that were truely >> exceptional (ran out of memory, disk error, etc.) and to use >> Observers/Events to capture operations like a user aborting >> a filter. Would ITK's events have worked for you here? > > > Hannu Helminen > Varian Medical Systems Finland Oy > This is a temporary mail account that may get deleted after spambots > harvest the email address. > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Thu Oct 3 16:14:31 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 03 Oct 2002 11:14:31 -0400 Subject: [Insight-users] Resampling images References: <20021003104007.9202.50654.Mailman@public.kitware.com> <000701c26ae2$22fe9ce0$01000001@macinfo.net> Message-ID: <3D9C5ED7.8000404@kitware.com> Hi cspl, If the IdentityTransform is producing the same effect of the AffineTransform resulting from your registration, this may be a bug in the resample image filter. No major changes have been done on the AffineTransform. You can always check on modification using the CVS web portal: http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/?cvsroot=Insight In particular, for the AffineTransform you can check the Common directory: http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Code/Common/?cvsroot=Insight the AffineTransform.h file : http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Code/Common/itkAffineTransform.h?cvsroot=Insight and the AffineTransform.txx file: http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Code/Common/itkAffineTransform.txx?cvsroot=Insight The Intesity rescaling shouldn't make any difference in the geometrical resampling of the images. I'll run a try with synthetic images having similar size and spacing to yours, and see what happens,... Thanks Luis ======================================================================= cspl wrote: >Hi Luis, > >First, have you made any changes to ResampleImageFilter or AffineTransform >during last 45 days. >2 days back i updated my ITK with the latest, and suddenly my old Transform >code is not showing the same result as i posted on our website. > >anyway, >I experimented with IdentityTransform and the result is the same as the old >AffineTransform output.Absolutely no change. > >This is the code i'm using. > > >NOTE: Before this i'm rescaling the volume to unsigned char data type. with >min intensity 0 and max 254. > Does this affect the result??? > >**************************************************************************** >*********** > typedef BufferToImageConversion ConverterType; // Volume - >Image converetr > typedef ConverterType::ImageType UCharImage; > >// typedef itk::AffineTransform TransformType; > typedef itk::IdentityTransform TransformType; > itk::SmartPointer< TransformType> transform; > > typedef itk::ResampleImageFilter ResampleFilter; > typedef UCharImage::SizeType ImageSizeType; > > >//////////////////////////////////////////////////////////////////////////// >/////////////// > // > // initializations > // > >//////////////////////////////////////////////////////////////////////////// >/////////////// > >// this is the matrix i use to store the regitration result.Now commented >// double result[12]; >// memcpy(result, mat->Mat, sizeof(double)*12); > > ConverterType converter ; > ConverterType ::ImagePointer spectImage = converter.GetImage(pMoving); > ConverterType ::ImagePointer mriImage = converter.GetImage(pFixed); > ImageSizeType size; > size[0]=pTemp->width, size[1]= pTemp->height, size[2] = pTemp->depth; > > ResampleFilter::Pointer resampleFilter = ResampleFilter::New(); > > transform = TransformType::New(); > TransformType::ParametersType params(transform->GetNumberOfParameters()) ; > >// for (int pi=0;pi<12;pi++) >// params[pi] = result[pi]; > >// transform->SetParameters( params); // no params set for IdentityTransform > > UCharImage::Pointer outImage = NULL; > > resampleFilter ->SetTransform(transform.GetPointer()); > resampleFilter->SetInput(spectImage ); > > resampleFilter->SetSize( >mriImage->GetLargestPossibleRegion().GetSize()); > resampleFilter->SetOutputOrigin( mriImage->GetOrigin() ); > resampleFilter->SetOutputSpacing( mriImage->GetSpacing() ); > > try > { > resampleFilter->Update(); > > }catch(itk::ExceptionObject &Eo){ > > AfxMessageBox(Eo.GetDescription()); > } > > outImage = resampleFilter->GetOutput(); > > >******************************************************* > >Thanks, Looking forward for your help on this, > >cspl > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From millerjv@crd.ge.com Thu Oct 3 17:56:35 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Thu, 3 Oct 2002 12:56:35 -0400 Subject: Fwd: RE: [Insight-users] Thread safety of itkMultiThreader : Aborting filter execution Message-ID: Luis, Could this check be put into the progress reporter? The progress reporter would return the value of m_AbortGenerateData. > -----Original Message----- > From: Luis Ibanez [mailto:luis.ibanez@kitware.com] > Sent: Thursday, October 03, 2002 10:30 AM > To: Hannu Helminen > Cc: insight-users@public.kitware.com; Miller, James V (Research) > Subject: Re: Fwd: RE: [Insight-users] Thread safety of > itkMultiThreader > : Aborting filter execution > > > Hi Hannu, > > About the mechanism for stopping filters during execution: > > The itkProcessObject has a boolean member variable: > > m_AbortGenerateData > > That can be Set/Get with > > SetAbortGeneratData( ); > GetAbortGeneratData( ); > > Since all ITK filters derive from the ProcessObject, users can > stop filter from a GUI by invoking > > myFilter->SetAbortGenerateData( true ); > > or > > myFilter->AbortGenerateDataOn(); > > > The problem is that filters are not checking for this condition > in their inner loops..... > > Right now, this condition is only tested in the > itkStreamingImageFilter. > > So, it seems that we will have to visit all the filters and add this > checking in order to allow users to abort a process.... > > Once the filters are aborted they will send an StopEvent() that > a GUI can use to keep the user informed. > > In this way you can exit a filter nicely... without throwing > exceptions. > > Thanks for pointing this out > > > Luis > > =================================== > > Hannu Helminen wrote: > > > In my suggested patch, I only store an exception flag in the worker > > thread to ThreadInfoStruct, which is then read by the main thread. > > > > Better option would be to store the actual exception > object. But there > > are some difficulties in this approach: > > > > 1) It is not possible to determine which exception occurred in run > > time. Even though ITK only throws itk::ExceptionObject, > user code or > > the operating system can throw std::exception or even > something else. > > Catching these objects by correct type and then re-throwing > them will > > be quite tedious. > > > > 2) Copying the exception object usually requires allocating > new memory > > from the heap. If the original exception was caused by a low memory > > condition, this may cause another exception, which will not > be handled. > > > > If the intent is to propagate the reason of the exception > up, probably > > best option would be to catch for both std::exception > (which is also a > > superclass of itk::ExceptionObject) and the ellipsis construct > > "catch(...)". The reason code from std::exception::what() > function is > > then stored to a (perhaps pre-allocated) buffer, which is then > > re-thrown in the main thread as an itk::ExceptionObject. > > > > > > There should be no need to modify the ThreadedGenerateData() > > functions, since the exception handling is in a separate function > > within the itk::MultiThreader. > > > > However, as a consequence of this change, it *could* be possible to > > clean up the interface of the multitheader callback function. > > Currently it is > > > > ITK_THREAD_RETURN_TYPE CallbackFunction(void *argument) > > > > where the return type depends on the threading model used, and the > > argument has to be cast with reinterpret_cast. In interest of code > > clarity, both the cast and the return value could be moved > to inside > > itk::MultiTheader, and the signature could be e.g. > > > > void CallbackFunction(MultiThreader::ThreadInfoStruct *argument) > > > > This would also allow for the possibility of compiling in > support for > > two or more threading models simultaneously. Currently this is not > > possible, since the choice of ITK_THREAD_RETURN_TYPE is made at > > compile time. > > > > > > I am not familiar enough with the ITK's event model to know > how to use > > it to interrupt a lengthy calculation. In general the problem with > > such voluntary methods of aborting an algorithm is that > abortion has > > to be anticipated in each algorithm separately. Taking a concrete > > example, how should I interrupt the code in > > itkStatisticsImageFilter::ThreadedGenerateData()? As far as > I can see, > > the only way to interrupt this code before iteration is > complete is to > > throw an exception from within the progress reporter. > > > > Hannu > > > > > > PS. The subject line should of course read "exception safety", not > > "thread safety" ;-) But that was probably obvious. > > > > > > > >> From: "Miller, James V (Research)" > >> To: "'Hannu Helminen'" , > >> insight-users@public.kitware.com > >> Subject: RE: [Insight-users] Thread safety of itkMultiThreader > >> Date: Wed, 2 Oct 2002 12:48:26 -0400 > >> X-Mailer: Internet Mail Service (5.5.2653.19) > >> > >> I think your model of the "correct behavior" sounds good. > >> I haven't looked though your changes enough to determine how the > >> worker threads communicate the exception to the main thread. Is > >> it merely the return status indicating an exception occurred or > >> is the actual exception object passed to the main thread? > >> > >> Would we need to change the ThreadedGenerateData() methods > >> in each filter to catch the exceptions or is that catch > >> encapsulated in the Multithreader code? > >> > >> A note on your use of exceptions. We decided internally to > >> restrict our use of exceptions to events that were truely > >> exceptional (ran out of memory, disk error, etc.) and to use > >> Observers/Events to capture operations like a user aborting > >> a filter. Would ITK's events have worked for you here? > > > > > > Hannu Helminen > > Varian Medical Systems Finland Oy > > This is a temporary mail account that may get deleted after > spambots > > harvest the email address. > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > From luis.ibanez@kitware.com Thu Oct 3 18:14:22 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 03 Oct 2002 13:14:22 -0400 Subject: Fwd: RE: [Insight-users] Thread safety of itkMultiThreader : Aborting filter execution References: Message-ID: <3D9C7AEE.9040007@kitware.com> Jim, Yes, that's a good idea, otherwise it will add another check to the inner loops and probably slow things down more than necesary. Looking into the UnaryFunctorFilter for example, it looks like we may even absorb the ImageIterator into the ProgressReporter. In that way the loop while( !it.IsAtEnd() && !this->GetAbortGenerateData() ) { // do something ++it; reporter.CompletedPixel(); } could rather look like do { // do something } while( reporter.NextPixel() ); "NextPixel() in the reporter will contain: ++it; CompletedPixel(); and will check for the GenerateAbortData only every NUpdate pixels, the return will be boolean for NextPixel() could be !it.IsAtEnd() or just "false" when the test for GenerateAbortData() returns true; The price for this is that the ProgressReporter will have to be templated over the IteratorType and its constructor will require an Iterator as input. The constructor will look ok because the NumberOfPixels can now be obtained internally from the Iterator. Also, recently an "IteratorReporter" was also added for those filters that perform iterations and cannot know in advance how long it will take for them to run. A similar approach could be followed in this IteratorReporter. Another option is to integrate the role of the ProgressReporter into the Iterators. That could in fact be cleaner. The iterators will then have to receive the "this" pointer of the "ProcessObject" on which they are running. I guess that this is something to be done after next week meeting.... Luis ================================================= Miller, James V (Research) wrote: >Luis, > >Could this check be put into the progress reporter? > >The progress reporter would return the value of m_AbortGenerateData. > > > >>-----Original Message----- >>From: Luis Ibanez [mailto:luis.ibanez@kitware.com] >>Sent: Thursday, October 03, 2002 10:30 AM >>To: Hannu Helminen >>Cc: insight-users@public.kitware.com; Miller, James V (Research) >>Subject: Re: Fwd: RE: [Insight-users] Thread safety of >>itkMultiThreader >>: Aborting filter execution >> >> >>Hi Hannu, >> >>About the mechanism for stopping filters during execution: >> >>The itkProcessObject has a boolean member variable: >> >> m_AbortGenerateData >> >>That can be Set/Get with >> >> SetAbortGeneratData( ); >> GetAbortGeneratData( ); >> >>Since all ITK filters derive from the ProcessObject, users can >>stop filter from a GUI by invoking >> >> myFilter->SetAbortGenerateData( true ); >> >>or >> >> myFilter->AbortGenerateDataOn(); >> >> >>The problem is that filters are not checking for this condition >>in their inner loops..... >> >>Right now, this condition is only tested in the >>itkStreamingImageFilter. >> >>So, it seems that we will have to visit all the filters and add this >>checking in order to allow users to abort a process.... >> >>Once the filters are aborted they will send an StopEvent() that >>a GUI can use to keep the user informed. >> >>In this way you can exit a filter nicely... without throwing >>exceptions. >> >>Thanks for pointing this out >> >> >> Luis >> >>=================================== >> >> From Hannu.Helminen.0001@dosetek.varian.com Fri Oct 4 08:28:42 2002 From: Hannu.Helminen.0001@dosetek.varian.com (Hannu Helminen) Date: Fri, 04 Oct 2002 10:28:42 +0300 Subject: [Insight-users] Thread safety of itkMultiThreader : Aborting filter execution Message-ID: <5.1.0.14.1.20021004101122.00ba6e58@maila.dosetek.varian.com> Luis & James, The idea of having the progress reporter contain an abort flag seems a very good one. At least I would welcome this change, it would make my life much easier. But please do not forget my original hope of making the multithreader more robust. Of course one could be careful never to throw any exceptions from within ThreadedGenerateData(). But I feel that exception safety is always a good goal to have, and in this case it could be relatively easily achieved. ITK is already almost everywhere exception safe. Hannu Hannu Helminen Varian Medical Systems Finland Oy This is a temporary mail account that may get deleted after spambots harvest the email address. From srodrigu@gbt.tfo.upm.es Fri Oct 4 10:10:40 2002 From: srodrigu@gbt.tfo.upm.es (=?iso-8859-1?Q?Samuel_Rodr=EDguez_Bescos?=) Date: Fri, 4 Oct 2002 11:10:40 +0200 Subject: [Insight-users] Algorithm for creating a Volumetric Mesh Message-ID: <001101c26b85$e95a8040$5f0a048a@sisifo> This is a multi-part message in MIME format. ------=_NextPart_000_000E_01C26B96.ACB0CE90 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello everybody, Could anybody know an algorithm for creating a Volumetric Mesh from a = set of points? and if It is implemented in MATLAB?. Thanks in advance, Sam ------=_NextPart_000_000E_01C26B96.ACB0CE90 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello everybody,
 
Could anybody know an = algorithm for creating=20  a Volumetric Mesh from a set of points?  and if It is = implemented in=20 MATLAB?.
 
Thanks in advance,
 
Sam
------=_NextPart_000_000E_01C26B96.ACB0CE90-- From ferrari@debian Thu Oct 3 23:24:34 2002 From: ferrari@debian (Ricardo Ferrari) Date: Thu, 3 Oct 2002 16:24:34 -0600 Subject: [Insight-users] ITK on a Debian GNU/Linux machine Message-ID: Hi all, Is anybody could give me any help in installing ITK in a Debian GNU/Linux Machine. I'm getting the following error. Thanks, Ricardo c++ -rdynamic -ftemplate-depth-50 itkNumericsHeaderTest.o -L/home/ferrari/Insight/Util ities/zlib -L/home/ferrari/Insight/Utilities/png -L/home/ferrari/Insight/Code/Common -L /home/ferrari/Insight/Code/IO -L/home/ferrari/Insight/Code/Numerics/vxl -L/home/ferrari /Insight/Code/Numerics -lpthread -ldl -lVXLNumerics -lm -lITKCommon -lITKNumerics -lVXL Numerics -lpthread -lm -ldl -Wl,-rpath,/home/ferrari/Insight/Utilities/zlib:/home/ferra ri/Insight/Utilities/png:/home/ferrari/Insight/Code/Common:/home/ferrari/Insight/Code/I O:/home/ferrari/Insight/Code/Numerics/vxl:/home/ferrari/Insight/Code/Numerics -o itkNu mericsHeaderTest /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::Optimizer(void)': itkOptimizer.o(.text+0xf): undefined reference to `itk::Object::Object(void)' itkOptimizer.o(.text+0xcc): undefined reference to `itk::Object::~Object(void)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::SetScales(itk::Array const &)': itkOptimizer.o(.text+0xff): undefined reference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.text+0x111): undefined reference to `itk::Object::GetGlobalWarningDispl ay(void)' itkOptimizer.o(.text+0x221): undefined reference to `itk::OutputWindowDisplayDebugText( char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::PrintSelf(ostream &, itk::Indent) const': itkOptimizer.o(.text+0x2e3): undefined reference to `itk::Object::PrintSelf(ostream &, itk::Indent) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x8): undefined reference to `itk::LightObject::Delete(void)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x10): undefined reference to `itk::Object::Register(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x14): undefined reference to `itk::Object::UnRegister(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x18): undefined reference to `itk::LightObject::GetReferenceCount( void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x1c): undefined reference to `itk::Object::SetReferenceCount(int)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x28): undefined reference to `itk::LightObject::PrintHeader(ostrea m &, itk::Indent) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x2c): undefined reference to `itk::LightObject::PrintTrailer(ostre am &, itk::Indent) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x30): undefined reference to `itk::Object::DebugOn(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x34): undefined reference to `itk::Object::DebugOff(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x38): undefined reference to `itk::Object::GetMTime(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ vt_Q23itk9Optimizer+0x3c): undefined reference to `itk::Object::Modified(void) const' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer type_info function': itkOptimizer.o(.gnu.linkonce.t.__tfQ23itk9Optimizer+0x10): undefined reference to `itk: :Object type_info function' itkOptimizer.o(.gnu.linkonce.t.__tfQ23itk9Optimizer+0x1a): undefined reference to `itk: :Object type_info node' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::SetInitialPosition(itk::Array)': itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 x17): undefined reference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 x29): undefined reference to `itk::Object::GetGlobalWarningDisplay(void)' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 x136): undefined reference to `itk::OutputWindowDisplayDebugText(char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::GetInitialPosition(void) const': itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) const+0x17): un defined reference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) const+0x29): un defined reference to `itk::Object::GetGlobalWarningDisplay(void)' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) const+0x14c): u ndefined reference to `itk::OutputWindowDisplayDebugText(char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::GetScales(void) const': itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x17): undefined r eference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x29): undefined r eference to `itk::Object::GetGlobalWarningDisplay(void)' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x14c): undefined reference to `itk::OutputWindowDisplayDebugText(char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::GetCurrentPosition(void) const': itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) const+0x17): un defined reference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) const+0x29): un defined reference to `itk::Object::GetGlobalWarningDisplay(void)' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) const+0x14c): u ndefined reference to `itk::OutputWindowDisplayDebugText(char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::~Optimizer(void)': itkOptimizer.o(.gnu.linkonce.t._._Q23itk9Optimizer+0x4e): undefined reference to `itk:: Object::~Object(void)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :Optimizer::SetCurrentPosition(itk::Array)': itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 x17): undefined reference to `itk::Object::GetDebug(void) const' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 x29): undefined reference to `itk::Object::GetGlobalWarningDisplay(void)' itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 x136): undefined reference to `itk::OutputWindowDisplayDebugText(char const *)' /home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In function `itk: :ObjectFactory::Create(void)': itkOptimizer.o(.itk::ObjectFactory::gnu.linkonce.t.Create(void)+0x2a): undefined reference to `itk::ObjectFactoryBase::CreateInstance(char const *)' itkOptimizer.o(.itk::ObjectFactory::gnu.linkonce.t.Create(void)+0x55): undefined reference to `itk::LightObject type_info function' collect2: ld returned 1 exit status make[7]: *** [itkNumericsHeaderTest] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Numerics] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Code] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Testing] Error 2 make: *** [default_target] Error 2 bash-2.05b$ From dean.inglis@on.aibn.com Fri Oct 4 14:49:41 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Fri, 4 Oct 2002 9:49:41 -0400 Subject: [Insight-users] linker error with Borland Message-ID: <20021004134940.WKLW24834.tomts23-srv.bellnexxia.net@[209.226.175.10]> Hi, I'm getting a pb with linking of the sort: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Error detected (LME351) Warning: Cannot reserve virtual memory at addr 720C0000 for -786432 bytes (errcode 87) ** error 1 ** deleting c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe The Borland incremental linker seems to conk out when the .tds file ( associated with the exe) containing debug info etc. gets to around 35 Mb. I have increase virtual memory on a system that already has 768 Mb physical RAM. Dean From luis.ibanez@kitware.com Fri Oct 4 15:05:28 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 04 Oct 2002 10:05:28 -0400 Subject: [Insight-users] ITK on a Debian GNU/Linux machine References: Message-ID: <3D9DA028.60403@kitware.com> Hi Ricardo, Could you please provide a bit more of information, Are you using the CVS version ? if yes, when did you last updated ? -- The errors that you are getting seem to be related to linking problems. For example: itk::Object is the very basic class in ITK, it should be found in the libITKCommon.a library.. Your link line has the ITKCommon library on it but doesn't seems to fine the object inside. Did you configured ITK using CMake from the top ITK directory ? What is your GCC version ? Thanks Luis =================================================== Ricardo Ferrari wrote: >Hi all, > >Is anybody could give me any help in installing ITK in a Debian GNU/Linux >Machine. I'm getting the following error. > >Thanks, >Ricardo > > c++ -rdynamic -ftemplate-depth-50 itkNumericsHeaderTest.o >-L/home/ferrari/Insight/Util >ities/zlib -L/home/ferrari/Insight/Utilities/png >-L/home/ferrari/Insight/Code/Common -L >/home/ferrari/Insight/Code/IO -L/home/ferrari/Insight/Code/Numerics/vxl >-L/home/ferrari >/Insight/Code/Numerics -lpthread -ldl -lVXLNumerics -lm -lITKCommon >-lITKNumerics -lVXL >Numerics -lpthread -lm -ldl >-Wl,-rpath,/home/ferrari/Insight/Utilities/zlib:/home/ferra >ri/Insight/Utilities/png:/home/ferrari/Insight/Code/Common:/home/ferrari/Insight/Code/I >O:/home/ferrari/Insight/Code/Numerics/vxl:/home/ferrari/Insight/Code/Numerics > -o itkNu >mericsHeaderTest >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::Optimizer(void)': >itkOptimizer.o(.text+0xf): undefined reference to `itk::Object::Object(void)' >itkOptimizer.o(.text+0xcc): undefined reference to >`itk::Object::~Object(void)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::SetScales(itk::Array const &)': >itkOptimizer.o(.text+0xff): undefined reference to >`itk::Object::GetDebug(void) const' >itkOptimizer.o(.text+0x111): undefined reference to >`itk::Object::GetGlobalWarningDispl >ay(void)' >itkOptimizer.o(.text+0x221): undefined reference to >`itk::OutputWindowDisplayDebugText( >char const *)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::PrintSelf(ostream &, itk::Indent) const': >itkOptimizer.o(.text+0x2e3): undefined reference to >`itk::Object::PrintSelf(ostream &, >itk::Indent) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x8): undefined reference to >`itk::LightObject::Delete(void)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x10): undefined reference to >`itk::Object::Register(void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x14): undefined reference to >`itk::Object::UnRegister(void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x18): undefined reference to >`itk::LightObject::GetReferenceCount( >void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x1c): undefined reference to >`itk::Object::SetReferenceCount(int)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x28): undefined reference to >`itk::LightObject::PrintHeader(ostrea >m &, itk::Indent) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x2c): undefined reference to >`itk::LightObject::PrintTrailer(ostre >am &, itk::Indent) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x30): undefined reference to `itk::Object::DebugOn(void) >const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x34): undefined reference to >`itk::Object::DebugOff(void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x38): undefined reference to >`itk::Object::GetMTime(void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o)(.gnu.linkonce.d.__ >vt_Q23itk9Optimizer+0x3c): undefined reference to >`itk::Object::Modified(void) const' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer type_info function': >itkOptimizer.o(.gnu.linkonce.t.__tfQ23itk9Optimizer+0x10): undefined >reference to `itk: >:Object type_info function' >itkOptimizer.o(.gnu.linkonce.t.__tfQ23itk9Optimizer+0x1a): undefined >reference to `itk: >:Object type_info node' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::SetInitialPosition(itk::Array)': >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 >x17): undefined reference to `itk::Object::GetDebug(void) const' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 >x29): undefined reference to `itk::Object::GetGlobalWarningDisplay(void)' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetInitialPosition(itk::Array)+0 >x136): undefined reference to `itk::OutputWindowDisplayDebugText(char const >*)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::GetInitialPosition(void) const': >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) >const+0x17): un >defined reference to `itk::Object::GetDebug(void) const' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) >const+0x29): un >defined reference to `itk::Object::GetGlobalWarningDisplay(void)' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetInitialPosition(void) >const+0x14c): u >ndefined reference to `itk::OutputWindowDisplayDebugText(char const *)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::GetScales(void) const': >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x17): >undefined r >eference to `itk::Object::GetDebug(void) const' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x29): >undefined r >eference to `itk::Object::GetGlobalWarningDisplay(void)' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetScales(void) const+0x14c): >undefined >reference to `itk::OutputWindowDisplayDebugText(char const *)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::GetCurrentPosition(void) const': >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) >const+0x17): un >defined reference to `itk::Object::GetDebug(void) const' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) >const+0x29): un >defined reference to `itk::Object::GetGlobalWarningDisplay(void)' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.GetCurrentPosition(void) >const+0x14c): u >ndefined reference to `itk::OutputWindowDisplayDebugText(char const *)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::~Optimizer(void)': >itkOptimizer.o(.gnu.linkonce.t._._Q23itk9Optimizer+0x4e): undefined reference >to `itk:: >Object::~Object(void)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:Optimizer::SetCurrentPosition(itk::Array)': >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 >x17): undefined reference to `itk::Object::GetDebug(void) const' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 >x29): undefined reference to `itk::Object::GetGlobalWarningDisplay(void)' >itkOptimizer.o(.itk::Optimizer::gnu.linkonce.t.SetCurrentPosition(itk::Array)+0 >x136): undefined reference to `itk::OutputWindowDisplayDebugText(char const >*)' >/home/ferrari/Insight/Code/Numerics/libITKNumerics.a(itkOptimizer.o): In >function `itk: >:ObjectFactory::Create(void)': >itkOptimizer.o(.itk::ObjectFactory::gnu.linkonce.t.Create(void)+0x2a): >undefined reference to `itk::ObjectFactoryBase::CreateInstance(char const *)' >itkOptimizer.o(.itk::ObjectFactory::gnu.linkonce.t.Create(void)+0x55): >undefined reference to `itk::LightObject type_info function' >collect2: ld returned 1 exit status >make[7]: *** [itkNumericsHeaderTest] Error 1 >make[6]: *** [default_target] Error 2 >make[5]: *** [default_target_Numerics] Error 2 >make[4]: *** [default_target] Error 2 >make[3]: *** [default_target_Code] Error 2 >make[2]: *** [default_target] Error 2 >make[1]: *** [default_target_Testing] Error 2 >make: *** [default_target] Error 2 >bash-2.05b$ >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 4 15:21:41 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 04 Oct 2002 10:21:41 -0400 Subject: [Insight-users] linker error with Borland References: <20021004134940.WKLW24834.tomts23-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3D9DA3F5.3080805@kitware.com> Hi Dean, Does the Borland linker has an option for increasing the size of the stack ? For VC++ we have to set it quite large.....= 0x989680 This may be related to the error you are getting... Just a guess. Luis ======================================================== dean.inglis@on.aibn.com wrote: >Hi, > >I'm getting a pb with linking of the sort: >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland >Fatal: Error detected (LME351) >Warning: Cannot reserve virtual memory at addr >720C0000 for -786432 bytes (errcode 87) >** error 1 ** deleting c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe > >The Borland incremental linker seems to conk out >when the .tds file ( associated with the exe) >containing debug info etc. gets to around 35 Mb. > >I have increase virtual memory on a system that >already has 768 Mb physical RAM. > >Dean > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From ferrari@ucalgary.ca Fri Oct 4 16:19:18 2002 From: ferrari@ucalgary.ca (Ricardo Ferrari) Date: Fri, 4 Oct 2002 08:19:18 -0700 Subject: [Insight-users] ITK on a Debian GNU/Linux machine Message-ID: Hi Luis, Sorry for not providing the necessary information. The version that I am trying to install is the ITK..Beta2. This is the first time I'm trying to install the ITK in my machine. I have configured ITK by using ccmake and cmake although I was not sure about the some of the parameters there, such as DART_ROOT ?? ITK_EXECUTE_PATH or something like that. To compile the software I'm using the gcc 3.1. Thank you very much, Ricardo From luis.ibanez@kitware.com Fri Oct 4 16:51:20 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 04 Oct 2002 11:51:20 -0400 Subject: [Insight-users] ITK on a Debian GNU/Linux machine References: Message-ID: <3D9DB8F8.3020901@kitware.com> Hi Ricardo, The Beta 2 version was never tested with GCC 3.1, There is no known reason why it shouldn't work though.... Do you have several gcc versions installed ? e.g. a 3.02 and 3.1 The command line in the error that you posted is using "c++" as compiler/linker. I wonder if for some reason you may have compiled part of the toolkit with one compiler and part with another compiler. You may want to wipe out the binary tree, and make sure that the environment variables CC, CXX are setup with the compiler you want to use (3.1, I assume). Then reconfigure using CMake. (CMake will use the compiler defined in the CC and CXX environment variables). About the CMake variables you asked for: 1) DART_ROOT this is the path to the place where you installed Dart. This is OPTIONAL. You only need this is if you want to make experimental builds and eventually submitted to the ITK dashboard. http://www.itk.org/Testing/Dashboard/20021004-0500-Nightly/Dashboard.html Note that anybody can submit builds to the dashboard. If you want to install Dart (this is open source too) just follow the instructions from: http://public.kitware.com/Dart/HTML/Index.shtml 2) ITK_EXECUTE_PATH will define where you want the executables to be set. For the Beta version is better to leave this empty. We are about to release version 1.0, you may want to give it a try to the CVS checkout which is quite stable at this point. Please let us know if you continue experiencing problems with the installation. Thanks Luis ===================================== Ricardo Ferrari wrote: > > Hi Luis, > > Sorry for not providing the necessary information. The version that I > am trying to install is the ITK..Beta2. This is the first time I'm > trying to install the ITK in my machine. I have configured ITK by > using ccmake and cmake although I was not sure about the some of the > parameters there, such as > > DART_ROOT ?? > ITK_EXECUTE_PATH or something like that. > > To compile the software I'm using the gcc 3.1. > > Thank you very much, > > Ricardo > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From millerjv@crd.ge.com Fri Oct 4 16:52:04 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Fri, 4 Oct 2002 11:52:04 -0400 Subject: [Insight-users] linker error with Borland Message-ID: Looks like we have been able to get a build going here that uses the MinSizeRel build configuration. This seems to keep the tds files about an order of magnitude smaller. So we have a little more room before we hit the Borland ceiling. We may still have issues with the examples. Unfortunately, we may be limited to using to using the MinSizeRel configuration only. Don't know if this can be set as the default in CMake. Also don't know whether the newer Borland Builder suite still has this tds size issue. Jim > -----Original Message----- > From: Luis Ibanez [mailto:luis.ibanez@kitware.com] > Sent: Friday, October 04, 2002 10:22 AM > To: dean.inglis@on.aibn.com > Cc: insight-users@public.kitware.com > Subject: Re: [Insight-users] linker error with Borland > > > > Hi Dean, > > Does the Borland linker has an option for increasing the size > of the stack ? > > For VC++ we have to set it quite large.....= 0x989680 > > This may be related to the error you are getting... > > Just a guess. > > Luis > > ======================================================== > > dean.inglis@on.aibn.com wrote: > > >Hi, > > > >I'm getting a pb with linking of the sort: > >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland > >Fatal: Error detected (LME351) > >Warning: Cannot reserve virtual memory at addr > >720C0000 for -786432 bytes (errcode 87) > >** error 1 ** deleting > c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe > > > >The Borland incremental linker seems to conk out > >when the .tds file ( associated with the exe) > >containing debug info etc. gets to around 35 Mb. > > > >I have increase virtual memory on a system that > >already has 768 Mb physical RAM. > > > >Dean > > > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From bill.hoffman@kitware.com Fri Oct 4 17:30:58 2002 From: bill.hoffman@kitware.com (Bill Hoffman) Date: Fri, 04 Oct 2002 12:30:58 -0400 Subject: [Insight-users] linker error with Borland In-Reply-To: Message-ID: <5.1.1.6.0.20021004123046.07999330@pop.biz.rr.com> Can we turn off incremental linking? At 11:52 AM 10/4/2002 -0400, Miller, James V (Research) wrote: >Looks like we have been able to get a build going here that >uses the MinSizeRel build configuration. This seems to keep the >tds files about an order of magnitude smaller. > >So we have a little more room before we hit the Borland ceiling. >We may still have issues with the examples. Unfortunately, we may >be limited to using to using the MinSizeRel configuration only. > >Don't know if this can be set as the default in CMake. > >Also don't know whether the newer Borland Builder suite still has >this tds size issue. > >Jim > > > >> -----Original Message----- >> From: Luis Ibanez [mailto:luis.ibanez@kitware.com] >> Sent: Friday, October 04, 2002 10:22 AM >> To: dean.inglis@on.aibn.com >> Cc: insight-users@public.kitware.com >> Subject: Re: [Insight-users] linker error with Borland >> >> >> >> Hi Dean, >> >> Does the Borland linker has an option for increasing the size >> of the stack ? >> >> For VC++ we have to set it quite large.....= 0x989680 >> >> This may be related to the error you are getting... >> >> Just a guess. >> >> Luis >> >> ======================================================== >> >> dean.inglis@on.aibn.com wrote: >> >> >Hi, >> > >> >I'm getting a pb with linking of the sort: >> >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland >> >Fatal: Error detected (LME351) >> >Warning: Cannot reserve virtual memory at addr >> >720C0000 for -786432 bytes (errcode 87) >> >** error 1 ** deleting >> c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe >> > >> >The Borland incremental linker seems to conk out >> >when the .tds file ( associated with the exe) >> >containing debug info etc. gets to around 35 Mb. >> > >> >I have increase virtual memory on a system that >> >already has 768 Mb physical RAM. >> > >> >Dean >> > >> >_______________________________________________ >> >Insight-users mailing list >> >Insight-users@public.kitware.com >> >http://public.kitware.com/mailman/listinfo/insight-users >> > >> >> >> >> >> >> _______________________________________________ >> Insight-users mailing list >> Insight-users@public.kitware.com >> http://public.kitware.com/mailman/listinfo/insight-users >> >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users From millerjv@crd.ge.com Fri Oct 4 17:41:29 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Fri, 4 Oct 2002 12:41:29 -0400 Subject: [Insight-users] linker error with Borland Message-ID: I couldn't see where to do that. There is a /Gn link option to turn off incremental linking But only the linker ilink32 accepts this option. It looks like the generated makefile uses bcc32 to link executables. I don't see an entry in the CMakeCache to force ilink32 to be used. > -----Original Message----- > From: Bill Hoffman [mailto:bill.hoffman@kitware.com] > Sent: Friday, October 04, 2002 12:31 PM > To: Miller, James V (Research); 'Luis Ibanez'; dean.inglis@on.aibn.com > Cc: insight-users@public.kitware.com > Subject: RE: [Insight-users] linker error with Borland > > > Can we turn off incremental linking? > > > At 11:52 AM 10/4/2002 -0400, Miller, James V (Research) wrote: > >Looks like we have been able to get a build going here that > >uses the MinSizeRel build configuration. This seems to keep the > >tds files about an order of magnitude smaller. > > > >So we have a little more room before we hit the Borland ceiling. > >We may still have issues with the examples. Unfortunately, we may > >be limited to using to using the MinSizeRel configuration only. > > > >Don't know if this can be set as the default in CMake. > > > >Also don't know whether the newer Borland Builder suite still has > >this tds size issue. > > > >Jim > > > > > > > >> -----Original Message----- > >> From: Luis Ibanez [mailto:luis.ibanez@kitware.com] > >> Sent: Friday, October 04, 2002 10:22 AM > >> To: dean.inglis@on.aibn.com > >> Cc: insight-users@public.kitware.com > >> Subject: Re: [Insight-users] linker error with Borland > >> > >> > >> > >> Hi Dean, > >> > >> Does the Borland linker has an option for increasing the size > >> of the stack ? > >> > >> For VC++ we have to set it quite large.....= 0x989680 > >> > >> This may be related to the error you are getting... > >> > >> Just a guess. > >> > >> Luis > >> > >> ======================================================== > >> > >> dean.inglis@on.aibn.com wrote: > >> > >> >Hi, > >> > > >> >I'm getting a pb with linking of the sort: > >> >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland > >> >Fatal: Error detected (LME351) > >> >Warning: Cannot reserve virtual memory at addr > >> >720C0000 for -786432 bytes (errcode 87) > >> >** error 1 ** deleting > >> c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe > >> > > >> >The Borland incremental linker seems to conk out > >> >when the .tds file ( associated with the exe) > >> >containing debug info etc. gets to around 35 Mb. > >> > > >> >I have increase virtual memory on a system that > >> >already has 768 Mb physical RAM. > >> > > >> >Dean > >> > > >> >_______________________________________________ > >> >Insight-users mailing list > >> >Insight-users@public.kitware.com > >> >http://public.kitware.com/mailman/listinfo/insight-users > >> > > >> > >> > >> > >> > >> > >> _______________________________________________ > >> Insight-users mailing list > >> Insight-users@public.kitware.com > >> http://public.kitware.com/mailman/listinfo/insight-users > >> > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > From dean.inglis@on.aibn.com Fri Oct 4 22:50:23 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Fri, 4 Oct 2002 17:50:23 -0400 Subject: [Insight-users] linker error with Borland Message-ID: <20021004215022.UWMT3718.tomts17-srv.bellnexxia.net@[209.226.175.72]> Hi, according to a post I did to borland.public.cppbuilder.commandlinetools from Russel Hind: "According to many reports on the groups, BCB6 fixes the bug. There is no fix for BCB5. If you have C++Builder, not just the command line tools then you may have success by disabling debugging on some units (i.e. edit local options for many cpp files in the IDE and set it to no debug info)." So, I will do MinSizRel builds, and purchase BCB6 aaaaaargh! I tried /Gn -Gn, /v-, -v- but no luck. ITK cannot be built as shared libs/dll's, right? Dean > > From: Luis Ibanez > Date: 2002/10/04 Fri AM 10:21:41 EST > To: dean.inglis@on.aibn.com > CC: insight-users@public.kitware.com > Subject: Re: [Insight-users] linker error with Borland > > > Hi Dean, > > Does the Borland linker has an option for increasing the size of the stack ? > > For VC++ we have to set it quite large.....= 0x989680 > > This may be related to the error you are getting... > > Just a guess. > > Luis > > ======================================================== > > dean.inglis@on.aibn.com wrote: > > >Hi, > > > >I'm getting a pb with linking of the sort: > >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland > >Fatal: Error detected (LME351) > >Warning: Cannot reserve virtual memory at addr > >720C0000 for -786432 bytes (errcode 87) > >** error 1 ** deleting c:\Builder\itkRelease\bin\itkAlgorithmsTests.exe > > > >The Borland incremental linker seems to conk out > >when the .tds file ( associated with the exe) > >containing debug info etc. gets to around 35 Mb. > > > >I have increase virtual memory on a system that > >already has 768 Mb physical RAM. > > > >Dean > > > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > From bill.hoffman@kitware.com Fri Oct 4 22:56:59 2002 From: bill.hoffman@kitware.com (Bill Hoffman) Date: Fri, 04 Oct 2002 17:56:59 -0400 Subject: [Insight-users] linker error with Borland In-Reply-To: <20021004215022.UWMT3718.tomts17-srv.bellnexxia.net@[209.22 6.175.72]> Message-ID: <5.1.1.6.0.20021004175624.079b8918@pop.biz.rr.com> At 05:50 PM 10/4/2002 -0400, dean.inglis@on.aibn.com wrote: >ITK cannot be built as shared libs/dll's, right? Unfortunately, it can not be built as dll's right now... -Bill From dean.inglis@on.aibn.com Sat Oct 5 03:28:53 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Fri, 4 Oct 2002 22:28:53 -0400 Subject: [Insight-users] linker error with Borland Message-ID: <20021005022853.VGEH15333.tomts16-srv.bellnexxia.net@[209.226.175.72]> what I don't understand is why there are linker flags in cmake but if I try disabling the incremental linker so that state files are not generated (.tds) with -Gn I get an invalid command line error? So, is ilink32 being called indirectly by borland compiler 5.5.1 and not passing linker flags? Even if I explicilty disable debug info with -v- the .tds files are still there and the same size as with debug full on, and I am trying MinSizeRel builds. with regard to James' comment about setting the stack size in VC++, how is that done? (i.e., what might I look for in Borland) Dean From R.Fureder@exeter.ac.uk Mon Oct 7 17:35:53 2002 From: R.Fureder@exeter.ac.uk (=?iso-8859-1?Q?Reinhold_F=FCreder?=) Date: Mon, 7 Oct 2002 17:35:53 +0100 Subject: [Insight-users] Linking error - ProgressReporter Message-ID: <002501c26e1f$9ac3f410$b0f4ad90@janus> Hi, I have troubles compiling the project after getting the lattest CVS version of ITK (which was built successful - are the build options somehow helpful?). Although the necessary library (ITKCommon.lib) is included I receive the error message below. Could anyone help me with my C++ or ITK problem? Thanks, Reinhold ---------------------------------------------------------------------- Linking... Creating library ..\bin\Debug\OurProjectUsingITK.lib and object ..\bin\Debug\OurProjectUsingITK.exp DownsampleFilterInterface.obj : error LNK2001: unresolved external symbol "public: __thiscall itk::ProgressReporter::~ProgressReporter(void)" (??1ProgressReporter@itk@@QAE@XZ) ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved external symbol "public: __thiscall itk::ProgressReporter::~ProgressReporter(void)" (??1ProgressReporter@itk@@QAE@XZ) DownsampleFilterInterface.obj : error LNK2001: unresolved external symbol "public: __thiscall itk::ProgressReporter::ProgressReporter(class ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" (??0ProgressReporter@itk@@QAE@PAVProces sObject@1@HKK@Z) ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved external symbol "public: __thiscall itk::ProgressReporter::ProgressReporter(class ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" (??0ProgressReporter@itk@@QAE@ PAVProcessObject@1@HKK@Z) ..\bin\Debug\OurProjectUsingITK.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. OurProjectUsingITK.exe - 5 error(s), 0 warning(s) ---------------------------------------------------------------------- Object/Lib modules: kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib wxxrcd.lib ITKBasicFilters.lib ITKCommon.lib VXLNumerics.lib ITKIO.lib MetaIO.lib itkpng.lib itkzlib.lib fld.lib ---------------------------------------------------------------------- From suresh " Hi Luis, Hi all, I'm working on MRI-SPECT registration problem.I'm experimenting on MultiResMIRegistration example, with my images which or of sizes SPECT 128, 128, 48 MRI 256, 256, 120 it is throwing an ITK exception itk::Error MutualInformationImageToImageMetric(00E04B0);All the sampled point mapped to outside of the moving Image. I tried changing the number of iterations and learning rates.but could not get rid of the exception. please anybody elaborate more on this exception and on how to fix this. Thank you, suresh From John Biddiscombe" Message-ID: <002b01c26eab$182fe450$0100a8c0@tigger> > I'll try building itk with BCB6 when I get home next week As usual there are shed loads of errors. trivial stuff like not finding = atof()=20 diff -r1.6 metaUtils.cxx 0a1 > #include complete failure of complex - use _USE_OLD_RW_STL or whatever it is = fixes this (but is a bad solution),=20 trouble with vcl_cmath diff -r1.2 vcl_cmath.h 6a7 > #if (__BORLANDC__<0x0561) 9a11 > #endif 13c15 < #define vcl_abs ::abs --- > #define vcl_abs std::abs but the best one... CMake Error: The Borland command line tools do not support path names = that have - in them. Please re-name your output directory and use _ instead of -. Your path currently is: = D:/cmakebuild/Insight/Code/Numerics/vxl/vcl/gcc-295 Fatal: Unable to execute command: = D:\cmakebuild\cmake\Source\Debug\cmake.exe But this is strange because yesterday it compiled numerics fine and died = on the FEM stuff with some error about not returning functions as = params...(Aha...of course, I updated cmake...) hmmm JB From zhao_c_g@263.net Tue Oct 8 14:06:01 2002 From: zhao_c_g@263.net (zhao) Date: Tue, 8 Oct 2002 21:06:01 +0800 Subject: [Insight-users] How to set the input to LevelSetNeighborhoodExtractor? Message-ID: <000901c26ecb$753ddc40$941278ca@VirtualHospital> This is a multi-part message in MIME format. ------=_NextPart_000_0006_01C26F0E.81AE3C20 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgTHVpcywNCiAgICANCiAgICBJdCBzZWVtcyB0aGF0IGl0a1NldENvbnN0T2JqZWN0TWFjcm8g Y2FuIGRvIHRoaXMgam9iLCBidXQgaG93IHRvIHVzZSBpdD8gVGhhbmtzOikNCg0KWmhhbw0K ------=_NextPart_000_0006_01C26F0E.81AE3C20 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4w MC4yNjAwLjAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9E WSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPjxGT05UIHNpemU9Mj5IaSBMdWlzLDwvRk9OVD48L0RJ Vj4NCjxESVY+PEZPTlQgc2l6ZT0yPiZuYnNwOyZuYnNwOyZuYnNwOyA8L0ZPTlQ+PC9ESVY+DQo8 RElWPjxGT05UIHNpemU9Mj4mbmJzcDsmbmJzcDsmbmJzcDsgSXQgc2VlbXMgdGhhdCA8QSBjbGFz cz1lbCANCmhyZWY9ImZpbGU6Ly8vRTovVmlzdWFsJTIwSHVtYW4vSVRLRG94eWdlbkJldGEyL0lU S0RveHlnZW5CZXRhMi9Eb3h5Z2VuL2h0bWwvY2xhc3NpdGtfMV8xTGV2ZWxTZXROZWlnaGJvcmhv b2RFeHRyYWN0b3IuaHRtbCNhMSI+PEZPTlQgDQpzaXplPTM+aXRrU2V0Q29uc3RPYmplY3RNYWNy bzwvRk9OVD48L0E+Jm5ic3A7Y2FuIGRvIHRoaXMgam9iLCBidXQgaG93IHRvIHVzZSANCml0PyBU aGFua3M6KTwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgc2l6ZT0yPjwvRk9OVD4mbmJzcDs8L0RJ Vj4NCjxESVY+PEZPTlQgc2l6ZT0yPlpoYW88L0ZPTlQ+PC9ESVY+PC9CT0RZPjwvSFRNTD4NCg== ------=_NextPart_000_0006_01C26F0E.81AE3C20-- From ferrari@debian Sat Oct 5 03:01:22 2002 From: ferrari@debian (Ricardo Ferrari) Date: Fri, 4 Oct 2002 20:01:22 -0600 Subject: [Insight-users] ITK on Debian GNU/Linux Message-ID: Hi Luis, Thanks for your hints about the compilation of the ITK. The problem was occuring because I had a few gcc versions installed in my computer. However, I could not get the Watershed and the Metaimage installed. Ricardo PS: Luis, could you please tell me what is the procedure to become I developer . I mean, I would like to contribute (in a next future) by coding some Pattern Recognition techniques. Right now, in my working I am using Mac OS X. We could not get the ITK running on that machine. My main goal will be code PR techniques with Altivec support. The error list for the watershed is bellow. bash-2.05b$ make /usr/bin/cmake -S/home/ferrari/Insight -O/home/ferrari/Insight -H/home/fe rrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Utilities: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Utilities -O/home/ferrari/Insight/ Utilities -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Utilities/zlib: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Utilities/zlib -O/home/ferrari/Ins ight/Utilities/zlib -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Utilities/png: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Utilities/png -O/home/ferrari/Insi ght/Utilities/png -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Code: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code -O/home/ferrari/Insight/Code -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Code/Numerics: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Numerics -O/home/ferrari/Insi ght/Code/Numerics -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Code/Numerics/vxl: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Numerics/vxl -O/home/ferrari/ Insight/Code/Numerics/vxl -H/home/ferrari/Insight -B/home/ferrari/Insight /home/ferrari/Insight/Code/Numerics/Statistics: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Numerics/Statistics -O/home/f errari/Insight/Code/Numerics/Statistics -H/home/ferrari/Insight -B/home/f errari/Insight /home/ferrari/Insight/Code/Numerics/FEM: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Numerics/FEM -O/home/ferrari/ Insight/Code/Numerics/FEM -H/home/ferrari/Insight -B/home/ferrari/Insight /home/ferrari/Insight/Code/Common: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Common -O/home/ferrari/Insigh t/Code/Common -H/home/ferrari/Insight -B/home/ferrari/Insight /home/ferrari/Insight/Code/BasicFilters: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/BasicFilters -O/home/ferrari/ Insight/Code/BasicFilters -H/home/ferrari/Insight -B/home/ferrari/Insight /home/ferrari/Insight/Code/IO: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/IO -O/home/ferrari/Insight/Co de/IO -H/home/ferrari/Insight -B/home/ferrari/Insight /home/ferrari/Insight/Code/Algorithms: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Code/Algorithms -O/home/ferrari/In sight/Code/Algorithms -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Auxiliary: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Auxiliary -O/home/ferrari/Insight/ Auxiliary -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Auxiliary/FltkImageViewer: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Auxiliary/FltkImageViewer -O/home/ ferrari/Insight/Auxiliary/FltkImageViewer -H/home/ferrari/Insight -B/home /ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Auxiliary/vtk: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Auxiliary/vtk -O/home/ferrari/Insi ght/Auxiliary/vtk -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date g++-3.2 -Wno-deprecated -ftemplate-depth-50 -I/home/ferrari/Insight/Auxil iary/vtk -I/home/ferrari/Insight -I/home/ferrari/Insight/Code/Numerics -I /home/ferrari/Insight/Code/Common -I/home/ferrari/Insight/Code/Numerics/v xl -I/home/ferrari/Insight/Code/Numerics/vxl/vcl -I/home/ferrari/Insight/ Utilities/png -I/home/ferrari/Insight/Utilities/zlib -I/usr/include/vtk - I/home/ferrari/Insight/Code/BasicFilters -I/home/ferrari/Insight/Code/Alg orithms -D_PTHREADS -I/usr/X11R6/include -c /home/ferrari/Insight/Auxi liary/vtk/itkCurvatureFlowToVTK -o itkCurvatureFlowToVTK.o g++-3.2: /home/ferrari/Insight/Auxiliary/vtk/itkCurvatureFlowToVTK: linke r input file unused because linking not done g++-3.2 -Wno-deprecated -ftemplate-depth-50 -I/home/ferrari/Insight/Auxil iary/vtk -I/home/ferrari/Insight -I/home/ferrari/Insight/Code/Numerics -I /home/ferrari/Insight/Code/Common -I/home/ferrari/Insight/Code/Numerics/v xl -I/home/ferrari/Insight/Code/Numerics/vxl/vcl -I/home/ferrari/Insight/ Utilities/png -I/home/ferrari/Insight/Utilities/zlib -I/usr/include/vtk - I/home/ferrari/Insight/Code/BasicFilters -I/home/ferrari/Insight/Code/Alg orithms -D_PTHREADS -I/usr/X11R6/include -c /home/ferrari/Insight/Auxi liary/vtk/itkVTKtoITKtoVTK -o itkVTKtoITKtoVTK.o g++-3.2: /home/ferrari/Insight/Auxiliary/vtk/itkVTKtoITKtoVTK: linker inp ut file unused because linking not done g++-3.2 -Wno-deprecated -ftemplate-depth-50 -I/home/ferrari/Insight/Auxil iary/vtk -I/home/ferrari/Insight -I/home/ferrari/Insight/Code/Numerics -I /home/ferrari/Insight/Code/Common -I/home/ferrari/Insight/Code/Numerics/v xl -I/home/ferrari/Insight/Code/Numerics/vxl/vcl -I/home/ferrari/Insight/ Utilities/png -I/home/ferrari/Insight/Utilities/zlib -I/usr/include/vtk - I/home/ferrari/Insight/Code/BasicFilters -I/home/ferrari/Insight/Code/Alg orithms -D_PTHREADS -I/usr/X11R6/include -c /home/ferrari/Insight/Auxi liary/vtk/vtk2itk -o vtk2itk.o g++-3.2: /home/ferrari/Insight/Auxiliary/vtk/vtk2itk: linker input file u nused because linking not done /home/ferrari/Insight/Examples: building default_target /usr/bin/cmake -S/home/ferrari/Insight/Examples -O/home/ferrari/Insight/E xamples -H/home/ferrari/Insight -B/home/ferrari/Insight cmake.depends is up-to-date /home/ferrari/Insight/Examples/WatershedSegmentation: building default_ta rget /usr/bin/cmake -S/home/ferrari/Insight/Examples/WatershedSegmentation -O/ home/ferrari/Insight/Examples/WatershedSegmentation -H/home/ferrari/Insig ht -B/home/ferrari/Insight g++-3.2 -Wno-deprecated -ftemplate-depth-50 -I/home/ferrari/Insight/Examp les/WatershedSegmentation -I/home/ferrari/Insight -I/home/ferrari/Insight /Code/Numerics -I/home/ferrari/Insight/Code/Common -I/home/ferrari/Insigh t/Code/Numerics/vxl -I/home/ferrari/Insight/Code/Numerics/vxl/vcl -I/home /ferrari/Insight/Utilities/png -I/home/ferrari/Insight/Utilities/zlib -I/ home/ferrari/Insight/Code/BasicFilters -I/home/ferrari/Insight/Code/Algor ithms -I/home/ferrari/Insight/Code/IO -I/home/ferrari/Insight/Examples/Wa tershedSegmentationExample -D_PTHREADS -c /home/ferrari/Insight/Example s/WatershedSegmentation/itkWatershedSegmentationExample.cxx -o itkWatersh edSegmentationExample.o In file included from /home/ferrari/Insight/Code/Common/itkImageSource.h: 232, from /home/ferrari/Insight/Code/Common/itkImageToImageFi lter.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:20, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkImageSource.txx:51: warning: `typena me itk::ImageSource::DataObjectPointer' is implicitly a typ ename /home/ferrari/Insight/Code/Common/itkImageSource.txx:62: warning: `typena me itk::ImageSource::OutputImagePointer' is implicitly a ty pename /home/ferrari/Insight/Code/Common/itkImageSource.txx:80: warning: `typena me itk::ImageSource::OutputImagePointer' is implicitly a ty pename In file included from /home/ferrari/Insight/Code/Common/itkImageToImageFi lter.h:119, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:20, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkImageToImageFilter.txx:68: warning: ` typename itk::ImageToImageFilter::InputImagePointer' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImageToImageFilter.txx:85: warning: ` typename itk::ImageToImageFilter::InputImagePointer' is implicitly a typename In file included from /home/ferrari/Insight/Code/Common/itkVector.h:182, from /home/ferrari/Insight/Code/Common/itkPoint.h:20, from /home/ferrari/Insight/Code/Common/itkMatrix.h:21, from /home/ferrari/Insight/Code/Common/itkAffineTransfor m.h:23, from /home/ferrari/Insight/Code/Common/itkImage.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkVector.txx:136: warning: `typename itk::Vector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkVector.txx:152: warning: `typename itk::Vector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkVector.txx: In member function `T itk::Vector::GetSquaredNorm() const': /home/ferrari/Insight/Code/Common/itkVector.txx:240: warning: `typename itk::NumericTraits::AccumulateType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkVector.txx: In member function `T itk::Vector::operator*(const itk::Vector&) const': /home/ferrari/Insight/Code/Common/itkVector.txx:382: warning: `typename itk::NumericTraits::AccumulateType' is implicitly a typename In file included from /home/ferrari/Insight/Code/Common/itkPoint.h:255, from /home/ferrari/Insight/Code/Common/itkMatrix.h:21, from /home/ferrari/Insight/Code/Common/itkAffineTransfor m.h:23, from /home/ferrari/Insight/Code/Common/itkImage.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkPoint.txx: At global scope: /home/ferrari/Insight/Code/Common/itkPoint.txx:325: warning: `typename itk::BarycentricCombination::PointT ype' is implicitly a typename In file included from /home/ferrari/Insight/Code/Common/itkCovariantVecto r.h:167, from /home/ferrari/Insight/Code/Common/itkMatrix.h:23, from /home/ferrari/Insight/Code/Common/itkAffineTransfor m.h:23, from /home/ferrari/Insight/Code/Common/itkImage.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:116: warning: ` typename itk::CovariantVector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:132: warning: ` typename itk::CovariantVector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:166: warning: ` typename itk::CovariantVector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:184: warning: ` typename itk::CovariantVector::Self' is implicitly a typename /home/ferrari/Insight/Code/Common/itkCovariantVector.txx: In member funct ion `T itk::CovariantVector::operator*(const itk::CovariantVector&) const': /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:220: warning: ` typename itk::NumericTraits::AccumulateType' is implicitly a typena me /home/ferrari/Insight/Code/Common/itkCovariantVector.txx: In member funct ion `T itk::CovariantVector::operator*(const itk::Vector&) const': /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:237: warning: ` typename itk::NumericTraits::AccumulateType' is implicitly a typena me /home/ferrari/Insight/Code/Common/itkCovariantVector.txx: In member funct ion `T itk::CovariantVector::GetSquaredNorm() c onst': /home/ferrari/Insight/Code/Common/itkCovariantVector.txx:255: warning: ` typename itk::NumericTraits::AccumulateType' is implicitly a typena me In file included from /home/ferrari/Insight/Code/Common/itkTransform.h:16 8, from /home/ferrari/Insight/Code/Common/itkAffineTransfor m.h:24, from /home/ferrari/Insight/Code/Common/itkImage.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkTransform.txx: At global scope: /home/ferrari/Insight/Code/Common/itkTransform.txx:54: warning: `typename itk::Transform::JacobianType' is implicitly a typename In file included from /home/ferrari/Insight/Code/Common/itkAffineTransfor m.h:401, from /home/ferrari/Insight/Code/Common/itkImage.h:23, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:346: warning: ` typename itk::AffineTransform::OutputPointType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:357: warning: ` typename itk::AffineTransform::OutputVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:367: warning: ` typename itk::AffineTransform::OutputVnlVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:378: warning: ` typename itk::AffineTransform::OutputCovariantVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:399: warning: ` typename itk::AffineTransform::InputPointType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:429: warning: ` typename itk::AffineTransform::InputVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:442: warning: ` typename itk::AffineTransform::InputVnlVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:454: warning: ` typename itk::AffineTransform::InputCovariantVectorType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:478: warning: ` typename itk::AffineTransform::InputPointType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:509: warning: ` typename itk::AffineTransform::Pointer' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:527: warning: ` typename itk::AffineTransform::ScalarType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:551: warning: ` typename itk::AffineTransform::ScalarType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkAffineTransform.txx:635: warning: ` typename itk::AffineTransform::JacobianType' is implicitly a typename In file included from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:21, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itkImage.h: In member function `void itk::Image::SetPixel(TImageTraits::IndexType&, const TPixel&)': /home/ferrari/Insight/Code/Common/itkImage.h:153: warning: `typename itk::Image::OffsetValueType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `const T Pixel& itk::Image::GetPixel(TImageTraits::IndexType&) const': /home/ferrari/Insight/Code/Common/itkImage.h:163: warning: `typename itk::Image::OffsetValueType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `TPixel& itk::Image::GetPixel(TImageTraits::IndexType&)': /home/ferrari/Insight/Code/Common/itkImage.h:173: warning: `typename itk::Image::OffsetValueType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `bool itk::Image::TransformPhysicalPointToContinuousIndex(itk::Point&, itk::ContinuousIndex&)' : /home/ferrari/Insight/Code/Common/itkImage.h:278: warning: `typename itk::AffineTransform, itk::Matrix >::InputPoint Type' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `bool itk::Image::TransformPhysicalPointToIndex(itk::Point&, itk::Index&)': /home/ferrari/Insight/Code/Common/itkImage.h:318: warning: `typename itk::AffineTransform, itk::Matrix >::InputPoint Type' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `void itk::Image::TransformContinuousIndexToPhysicalPoint(itk::Continuous Index&, itk::Point&)': /home/ferrari/Insight/Code/Common/itkImage.h:359: warning: `typename itk::AffineTransform, itk::Matrix >::InputPoint Type' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h:366: warning: `typename itk::AffineTransform, itk::Matrix >::OutputPoin tType' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h: In member function `void itk::Image::TransformIndexToPhysicalPoint(itk::Index&, itk::Point&)': /home/ferrari/Insight/Code/Common/itkImage.h:392: warning: `typename itk::AffineTransform, itk::Matrix >::InputPoint Type' is implicitly a typename /home/ferrari/Insight/Code/Common/itkImage.h:399: warning: `typename itk::AffineTransform, itk::Matrix >::OutputPoin tType' is implicitly a typename In file included from /home/ferrari/Insight/Code/Common/itk_hash_map.h:57 , from /home/ferrari/Insight/Code/Algorithms/itkWatershedS egmenter.h:20, from /home/ferrari/Insight/Code/Algorithms/itkWatershedI mageFilter.h:22, from /home/ferrari/Insight/Examples/WatershedSegmentatio n/itkWatershedSegmentationExample.cxx:17: /home/ferrari/Insight/Code/Common/itk_hashtable.h: At global scope: /home/ferrari/Insight/Code/Common/itk_hashtable.h:163: parse error before `>' token /home/ferrari/Insight/Code/Common/itk_hashtable.h:174: definition of `str uct itk::hashtable_iterator' inside template parameter list /home/ferrari/Insight/Code/Common/itk_hashtable.h:176: ISO C++ forbids declaration of `hashtable' with no type /home/ferrari/Insight/Code/Common/itk_hashtable.h:176: template-id ` hashtable' used as a declarator /home/ferrari/Insight/Code/Common/itk_hashtable.h:176: confused by earlie r errors, bailing out make[5]: *** [itkWatershedSegmentationExample.o] Error 1 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_WatershedSegmentation] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Examples] Error 2 make: *** [default_target] Error 2 bash-2.05b$ From bill.hoffman@kitware.com Tue Oct 8 14:42:44 2002 From: bill.hoffman@kitware.com (William A. Hoffman) Date: Tue, 08 Oct 2002 09:42:44 -0400 Subject: [Insight-users] Re: [Cmake] CMake and Borland linker In-Reply-To: <002b01c26eab$182fe450$0100a8c0@tigger> References: <20021004022713.JOOI24834.tomts23-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <5.1.0.14.0.20021008093714.048e2838@pop.biz.rr.com> I would not use the cvs cmake for building ITK right now. cmake cvs in unstable right now as many parts are being re-worked. However, I think the change was made in ITK and cmake. Until recently there were no cmakelist files in the gcc-295 directory, and the new cmake organization may check more directory paths for -. We will fix this before the next cmake release, but for now try the current release of cmake. -Bill At 10:14 AM 10/8/2002 +0100, John Biddiscombe wrote: > > I'll try building itk with BCB6 when I get home next week > >As usual there are shed loads of errors. trivial stuff like not finding >atof() > >diff -r1.6 metaUtils.cxx >0a1 > > #include > >complete failure of complex - use _USE_OLD_RW_STL or whatever it is fixes >this (but is a bad solution), > >trouble with vcl_cmath >diff -r1.2 vcl_cmath.h >6a7 > > #if (__BORLANDC__<0x0561) >9a11 > > #endif >13c15 >< #define vcl_abs ::abs >--- > > #define vcl_abs std::abs > >but the best one... > >CMake Error: The Borland command line tools do not support path names that >have >- in them. Please re-name your output directory and use _ instead of -. >Your path currently is: D:/cmakebuild/Insight/Code/Numerics/vxl/vcl/gcc-295 >Fatal: Unable to execute command: D:\cmakebuild\cmake\Source\Debug\cmake.exe > >But this is strange because yesterday it compiled numerics fine and died >on the FEM stuff with some error about not returning functions as >params...(Aha...of course, I updated cmake...) > >hmmm > >JB > > > > > >_______________________________________________ >Cmake mailing list >Cmake@public.kitware.com >http://public.kitware.com/mailman/listinfo/cmake From hajaalin@cc.helsinki.fi Tue Oct 8 14:43:37 2002 From: hajaalin@cc.helsinki.fi (Harri Tapio Jaalinoja) Date: Tue, 8 Oct 2002 16:43:37 +0300 (EET DST) Subject: [Insight-users] Watershed with Image Message-ID: Hi all, I'm trying to make a watershed transformation of 3D density data. I start by modifying the existing watershed example Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx To reproduce my problem, go to line 96 and replace typedef itk::Image ImageType; with typedef itk::Image ImageType; When I "make" it, I get: /home/butcher/Harri/Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx: In function `int main (int, char **)': /home/butcher/Harri/Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx:225: no matching function for call to `itk::ImageFileWriter
::SetInput (itk::Image *)' /home/butcher/Harri/Insight/Code/IO/itkImageFileWriter.txx:51: candidates are: void itk::ImageFileWriter::SetInput (const TInputImage *) [with TInputImage = main (int, char **)::UnsignedImageType] make[1]: *** [itkWatershedSegmentationExample.o] Error 1 make: *** [default_target] Error 2 Your help is highly appreciated. I am new to c++, so please bear with me if this is trivial :) Thanks, Harri From R.Fureder@exeter.ac.uk Tue Oct 8 15:17:58 2002 From: R.Fureder@exeter.ac.uk (=?iso-8859-1?Q?Reinhold_F=FCreder?=) Date: Tue, 8 Oct 2002 15:17:58 +0100 Subject: [Insight-users] Re: Linking error - ProgressReporter Message-ID: <009401c26ed5$809fc940$b0f4ad90@janus> Hi again, I would like to add some details about the problem I have: It was compiling fine before I upgraded to the last CVS version of ITK. But after upgrading I got the following error messages: ----------------------------------------------------------------------- d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: 'GetImageDimension' : is not a member of 'itk' d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2065: 'GetImageDimension' : undeclared identifier d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2275: 'TInputImage' : illegal use of this type as an expression d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: 'ImageDimension' : is not a member of 'Point' d:\yann\cvs\insight\code\common\itkpoint.h(209) : see declaration of 'Point' d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2065: 'ImageDimension' : undeclared identifier d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(62) : error C2143: syntax error : missing ',' before '>' d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled d:\yann\cvs\insight\code\common\itkimagefunction.h(62) : error C2059: syntax error : '>' d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled ..... (and so on) ----------------------------------------------------------------------- Therefore I added an include to MY file which was compiling after receiving the above error message to explicitly know the "GetImageDimension", which is declared in the itkImageBase class: ----------------------------------------------------------------------- #include ----------------------------------------------------------------------- Afterwards the GetImageDimension is well known but I receive the linking error of my first e-mail (which is quoted at the bottom of this e-mail too). The definition of the GetImageDimension (see below) mentions a bug in MSVC, which I am currently using. So maybe there is a solution with regard to this work-around??? ----------------------------------------------------------------------- /** * Due to a bug in MSVC, an enum value cannot be accessed out of a template * parameter until the template class opens. In order for templated classes * to access the dimension of an image template parameter in defining their * own dimension, this class is needed as a work-around. */ template struct GetImageDimension { itkStaticConstMacro(ImageDimension, unsigned int, TImage::ImageDimension); }; ----------------------------------------------------------------------- Thanks a lot for your help, Reinhold ----- Original Message ----- From: "Reinhold Füreder" To: Sent: Monday, October 07, 2002 5:35 PM Subject: [Insight-users] Linking error - ProgressReporter > Hi, > > I have troubles compiling the project after getting the lattest CVS > version of ITK (which was built successful - are the build options > somehow helpful?). Although the necessary library (ITKCommon.lib) is > included I receive the error message below. > > Could anyone help me with my C++ or ITK problem? > > Thanks, > Reinhold > > ---------------------------------------------------------------------- > Linking... Creating library > ..\bin\Debug\OurProjectUsingITK.lib and object > ..\bin\Debug\OurProjectUsingITK.exp DownsampleFilterInterface.obj : > error LNK2001: unresolved external symbol "public: __thiscall > itk::ProgressReporter::~ProgressReporter(void)" > (??1ProgressReporter@itk@@QAE@XZ) > ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved > external symbol "public: __thiscall > itk::ProgressReporter::~ProgressReporter(void)" > (??1ProgressReporter@itk@@QAE@XZ) DownsampleFilterInterface.obj : > error LNK2001: unresolved external symbol "public: __thiscall > itk::ProgressReporter::ProgressReporter(class > ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" > (??0ProgressReporter@itk@@QAE@PAVProces sObject@1@HKK@Z) > ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved > external symbol "public: __thiscall > itk::ProgressReporter::ProgressReporter(class > ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" > (??0ProgressReporter@itk@@QAE@ PAVProcessObject@1@HKK@Z) > ..\bin\Debug\OurProjectUsingITK.exe : fatal error LNK1120: 2 > unresolved externals Error executing link.exe. > > OurProjectUsingITK.exe - 5 error(s), 0 warning(s) > ---------------------------------------------------------------------- > Object/Lib modules: kernel32.lib user32.lib gdi32.lib winspool.lib > comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib > odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib > wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib wxxrcd.lib > ITKBasicFilters.lib ITKCommon.lib VXLNumerics.lib ITKIO.lib MetaIO.lib > itkpng.lib itkzlib.lib fld.lib > ---------------------------------------------------------------------- > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From jaychris47@hotmail.com Tue Oct 8 23:43:10 2002 From: jaychris47@hotmail.com (Jay Christopherson) Date: Tue, 08 Oct 2002 15:43:10 -0700 Subject: [Insight-users] Insight 5.2 only allowing ASSEMBLY view Message-ID: I just installed Insight and am attempting to debug a C++ app. It seems to run okay, except that the only view I can get is the ASSEMBLY view. When I try SOURCE or ASM+SRC, it just returns me to the ASSEMBLY view. Anyone else seen this? Is there something I did not compile in, or something? _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From Jahn.O.Andersen@unimed.sintef.no Wed Oct 9 09:47:18 2002 From: Jahn.O.Andersen@unimed.sintef.no (=?ISO-8859-1?Q?Jahn_Otto_N=E6sgaard_Andersen?=) Date: Wed, 9 Oct 2002 10:47:18 +0200 Subject: [Insight-users] "Bug" in vtkFlRenderWindowInteractor.cxx Message-ID: There is a small bug in vtkFlRenderWindowInteractor.cxx. As X11 is not present on Mac OS X, "fl_display" is not defined in fltk on OS X. Fixing this is easy: just insert an #ifndef __APPLE__ in addition to the #ifndef _WIN32 where fl_display is accessed. Jahn Otto From srodrigu@gbt.tfo.upm.es Wed Oct 9 13:05:34 2002 From: srodrigu@gbt.tfo.upm.es (=?iso-8859-1?Q?Samuel_Rodr=EDguez_Bescos?=) Date: Wed, 9 Oct 2002 14:05:34 +0200 Subject: [Insight-users] Access Violation in defromableModel3DFilter. Message-ID: <000801c26f8c$2cf0d340$5f0a048a@sisifo> This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C26F9C.EF7D9000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello everybody, I'm developing an example that uses the Deformable Model 3D Algorithm. = The input is the output of a BinaryMask3DMeshSource and I'm trying to = visualize the resulted Mesh with VTK. For that I'm using the example = vtk2itk example. The problem is that in the rendering proccess using = VTK there is a acces violation Error.=20 When I vizualize the input Mesh (output of BinaryMask3DMeshSource) the = example works fine. So I think the problem is in the = deformableMesh3DFilter.=20 Any Idea?. Thank in advance. Sam ------=_NextPart_000_0005_01C26F9C.EF7D9000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello everybody,
 
I'm developing an example that uses the = Deformable=20 Model 3D Algorithm. The input is the output of=20 a BinaryMask3DMeshSource and I'm trying to visualize the resulted = Mesh with=20 VTK. For that I'm using the example vtk2itk example. The=20 problem is that in the rendering = proccess  using VTK   there is a acces violation Error.=20
 
When I vizualize the input Mesh (output = of=20 BinaryMask3DMeshSource) the example works fine. So I think the problem = is in the=20 deformableMesh3DFilter.
 
Any Idea?.
 
Thank in advance.
 
Sam
------=_NextPart_000_0005_01C26F9C.EF7D9000-- From yanjunxu@umich.edu Wed Oct 9 16:35:50 2002 From: yanjunxu@umich.edu (Xu, Yanjun) Date: Wed, 9 Oct 2002 11:35:50 -0400 Subject: [Insight-users] Running error with SegmentationEditor Message-ID: <2449F3F867FBD211936600C04F68569E012E2917@smhrimsx.mhri.med.umich.edu> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26FA9.8BA0C2C0 Content-Type: text/plain; charset="iso-8859-1" Hi, Dear All, I'm trying to run SegmentationEditor. I succeeded in running data and preprocess module. While I was running the segmenter module, the program always stopped abnormally in this function. void vtkWSLookupTableManager::LoadTreeFile(const char* fn) { . . . // now read the data in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); if (in.gcount() != listsz *sizeof(merge_t)) { vtkErrorMacro(<<"Error reading " << fn << ". File size does not match header size."); exit(-1); >>>> stop here } in.close(); . . . } Could anybody help to solve this problem? Thanks a lot. Sincerely, Yanjun ------_=_NextPart_001_01C26FA9.8BA0C2C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi, Dear All,

 

I'm trying to run SegmentationEditor. I succeeded in running data and preprocess module. While I was running = the segmenter module, the program always stopped = abnormally in this function.

 

void vtkWSLookupTableManager::LoadTreeFile(const char* = fn)

{

.

.

.

=A0=A0// now read the = data

=A0 in.read((char = *)(this->MergeList + 1), listsz * sizeof(merge_t));

 

=A0 if (in.gcount() !=3D listsz *sizeof(merge_t))

=A0=A0=A0 = {

=A0=A0=A0=A0=A0 = vtkErrorMacro(<<"Error reading " << fn << ". File size does not match = header size.");

=A0=A0=A0=A0=A0 = exit(-1);

>>>> stop = here

=A0=A0=A0 = }

 

=A0 in.close();

 

.

.

.

}

 

Could anybody help to solve this problem? Thanks a = lot.

 

Sincerely,

Yanjun=

 

------_=_NextPart_001_01C26FA9.8BA0C2C0-- From yanjunxu@umich.edu Wed Oct 9 17:16:03 2002 From: yanjunxu@umich.edu (Xu, Yanjun) Date: Wed, 9 Oct 2002 12:16:03 -0400 Subject: [Insight-users] Update: Running error with SegmentationEditor Message-ID: <2449F3F867FBD211936600C04F68569E012E2918@smhrimsx.mhri.med.umich.edu> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26FAF.2A477040 Content-Type: text/plain; charset="iso-8859-1" Hi, It seems that it's because of the file opening format difference between Unix and Windows. On windows, the default opening format is text format. In my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192, while the tree file size on the disk is 235146. It seems that both the writing and reading function of tree file should be specified as binary format explicitly. Am I right? Thanks. Sincerely, Yanjun -----Original Message----- From: Xu, Yanjun Sent: Wednesday, October 09, 2002 8:36 AM To: 'insight-users@public.kitware.com' Subject: Running error with SegmentationEditor Hi, Dear All, I'm trying to run SegmentationEditor. I succeeded in running data and preprocess module. While I was running the segmenter module, the program always stopped abnormally in this function. void vtkWSLookupTableManager::LoadTreeFile(const char* fn) { . . . // now read the data in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); if (in.gcount() != listsz *sizeof(merge_t)) { vtkErrorMacro(<<"Error reading " << fn << ". File size does not match header size."); exit(-1); >>>> stop here } in.close(); . . . } Could anybody help to solve this problem? Thanks a lot. Sincerely, Yanjun ------_=_NextPart_001_01C26FAF.2A477040 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,

 

=

It seems that it's because of the = file opening format difference between Unix and = Windows. On windows, the default opening format is text format. In my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192, while the tree file size on = the disk is 235146. It seems that both the writing and reading function of tree = file should be specified as binary format explicitly. Am I right? = Thanks.

 

=

Sincerely,=

Yanjun

 

=

-----Original Message-----
From: Xu, Yanjun
Sent: Wednesday, October = 09, 2002 8:36 AM
To: 'insight-users@public.kitware.com'
Subject: Running error = with SegmentationEditor

 

Hi, Dear All,

 

I'm trying to run SegmentationEditor. I succeeded in running data and preprocess module. While I was running the segmenter = module, the program always stopped abnormally in this function. =

 

void vtkWSLookupTableManager::LoadTreeFile(const = char* fn)

{

.

.

.

=A0 // now = read the data

=A0 = in.read((char *)(this->MergeList + 1), listsz * = sizeof(merge_t));

 

=A0 if = (in.gcount() !=3D listsz *sizeof(merge_t))

=A0=A0=A0 = {

=A0=A0=A0=A0=A0 vtkErrorMacro(<<"Error reading " << fn = << ". File size does not match header = size.");

=A0=A0=A0=A0=A0 = exit(-1);

>>>> stop = here

=A0=A0=A0 = }

 

=A0 = in.close();

 

.

.

.

}

 

Could anybody help to solve this problem? Thanks a = lot.

 

Sincerely,

Yanjun

 

------_=_NextPart_001_01C26FAF.2A477040-- From cates@sci.utah.edu Wed Oct 9 17:28:54 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Wed, 9 Oct 2002 10:28:54 -0600 (MDT) Subject: [Insight-users] Running error with SegmentationEditor In-Reply-To: <2449F3F867FBD211936600C04F68569E012E2917@smhrimsx.mhri.med.umich.edu> Message-ID: Hi Yanjun, Are you running this example on Windows? Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 9 Oct 2002, Xu, Yanjun wrote: > Hi, Dear All, > > I'm trying to run SegmentationEditor. I succeeded in running data and > preprocess module. While I was running the segmenter module, the program > always stopped abnormally in this function. > > void vtkWSLookupTableManager::LoadTreeFile(const char* fn) > { > . > . > . > // now read the data > in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); > > if (in.gcount() != listsz *sizeof(merge_t)) > { > vtkErrorMacro(<<"Error reading " << fn << ". File size does not match > header size."); > exit(-1); > >>>> stop here > } > > in.close(); > > . > . > . > } > > Could anybody help to solve this problem? Thanks a lot. > > Sincerely, > Yanjun > > From yanjunxu@umich.edu Wed Oct 9 17:53:31 2002 From: yanjunxu@umich.edu (Xu, Yanjun) Date: Wed, 9 Oct 2002 12:53:31 -0400 Subject: [Insight-users] Running error with SegmentationEditor Message-ID: <2449F3F867FBD211936600C04F68569E012E2919@smhrimsx.mhri.med.umich.edu> Yes, I'm running the example on Windows 2000. Yanjun -----Original Message----- From: Joshua Cates [mailto:cates@sci.utah.edu] Sent: Wednesday, October 09, 2002 9:29 AM To: Xu, Yanjun Cc: 'insight-users@public.kitware.com' Subject: Re: [Insight-users] Running error with SegmentationEditor Hi Yanjun, Are you running this example on Windows? Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 9 Oct 2002, Xu, Yanjun wrote: > Hi, Dear All, > > I'm trying to run SegmentationEditor. I succeeded in running data and > preprocess module. While I was running the segmenter module, the program > always stopped abnormally in this function. > > void vtkWSLookupTableManager::LoadTreeFile(const char* fn) > { > . > . > . > // now read the data > in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); > > if (in.gcount() != listsz *sizeof(merge_t)) > { > vtkErrorMacro(<<"Error reading " << fn << ". File size does not match > header size."); > exit(-1); > >>>> stop here > } > > in.close(); > > . > . > . > } > > Could anybody help to solve this problem? Thanks a lot. > > Sincerely, > Yanjun > > From cates@sci.utah.edu Wed Oct 9 18:09:09 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Wed, 9 Oct 2002 11:09:09 -0600 (MDT) Subject: [Insight-users] Update: Running error with SegmentationEditor In-Reply-To: <2449F3F867FBD211936600C04F68569E012E2918@smhrimsx.mhri.med.umich.edu> Message-ID: Hi, I have checked a fix for this into the repository. Let me know if this helps. Thanks, Josh. > > It seems that it's because of the file opening format difference between > Unix and Windows. On windows, the default opening format is text format. In > my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192 ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 9 Oct 2002, Xu, Yanjun wrote: > Hi, > > It seems that it's because of the file opening format difference between > Unix and Windows. On windows, the default opening format is text format. In > my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192, while the tree > file size on the disk is 235146. It seems that both the writing and reading > function of tree file should be specified as binary format explicitly. Am I > right? Thanks. > > Sincerely, > Yanjun > > -----Original Message----- > From: Xu, Yanjun > Sent: Wednesday, October 09, 2002 8:36 AM > To: 'insight-users@public.kitware.com' > Subject: Running error with SegmentationEditor > > Hi, Dear All, > > I'm trying to run SegmentationEditor. I succeeded in running data and > preprocess module. While I was running the segmenter module, the program > always stopped abnormally in this function. > > void vtkWSLookupTableManager::LoadTreeFile(const char* fn) > { > . > . > . > // now read the data > in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); > > if (in.gcount() != listsz *sizeof(merge_t)) > { > vtkErrorMacro(<<"Error reading " << fn << ". File size does not match > header size."); > exit(-1); > >>>> stop here > } > > in.close(); > > . > . > . > } > > Could anybody help to solve this problem? Thanks a lot. > > Sincerely, > Yanjun > > From yanjunxu@umich.edu Wed Oct 9 19:11:20 2002 From: yanjunxu@umich.edu (Xu, Yanjun) Date: Wed, 9 Oct 2002 14:11:20 -0400 Subject: [Insight-users] Update: Running error with SegmentationEditor Message-ID: <2449F3F867FBD211936600C04F68569E012E291A@smhrimsx.mhri.med.umich.edu> Hi, Josh, It works. Thanks a lot. Yanjun -----Original Message----- From: Joshua Cates [mailto:cates@sci.utah.edu] Sent: Wednesday, October 09, 2002 10:09 AM To: Xu, Yanjun Cc: 'insight-users@public.kitware.com'; anast.jm@pg.com Subject: Re: [Insight-users] Update: Running error with SegmentationEditor Hi, I have checked a fix for this into the repository. Let me know if this helps. Thanks, Josh. > > It seems that it's because of the file opening format difference between > Unix and Windows. On windows, the default opening format is text format. In > my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192 ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 9 Oct 2002, Xu, Yanjun wrote: > Hi, > > It seems that it's because of the file opening format difference between > Unix and Windows. On windows, the default opening format is text format. In > my case, in.gcount is 1558, listsz*sizeof(merge_t) is 234192, while the tree > file size on the disk is 235146. It seems that both the writing and reading > function of tree file should be specified as binary format explicitly. Am I > right? Thanks. > > Sincerely, > Yanjun > > -----Original Message----- > From: Xu, Yanjun > Sent: Wednesday, October 09, 2002 8:36 AM > To: 'insight-users@public.kitware.com' > Subject: Running error with SegmentationEditor > > Hi, Dear All, > > I'm trying to run SegmentationEditor. I succeeded in running data and > preprocess module. While I was running the segmenter module, the program > always stopped abnormally in this function. > > void vtkWSLookupTableManager::LoadTreeFile(const char* fn) > { > . > . > . > // now read the data > in.read((char *)(this->MergeList + 1), listsz * sizeof(merge_t)); > > if (in.gcount() != listsz *sizeof(merge_t)) > { > vtkErrorMacro(<<"Error reading " << fn << ". File size does not match > header size."); > exit(-1); > >>>> stop here > } > > in.close(); > > . > . > . > } > > Could anybody help to solve this problem? Thanks a lot. > > Sincerely, > Yanjun > > From anast.jm@pg.com Wed Oct 9 22:30:59 2002 From: anast.jm@pg.com (anast.jm@pg.com) Date: Wed, 9 Oct 2002 17:30:59 -0400 Subject: [Insight-users] CVS Build error - input line too long Message-ID: Any ideas how to get around this .... john --------------------Configuration: ITKBasicFiltersTcl - Win32 Release-------------------- Performing Custom Build Step on P:\WinCVS\Insight+\Insight\Wrapping\Tcl\BasicFilters\wrap_itkTernaryMagnitudeImageFilter.cxx The input line is too long. Error executing c:\winnt\system32\cmd.exe. From aylward@unc.edu Thu Oct 10 02:46:29 2002 From: aylward@unc.edu (Stephen R. Aylward) Date: Wed, 09 Oct 2002 21:46:29 -0400 Subject: [Insight-users] Meta image writer References: <01c601c2663d$0f9caec0$aeb00286@wsigris.unituebingen.de> Message-ID: <3DA4DBF5.2080200@unc.edu> This works on the current ITK release. An example is given in Insight/Examples/MetaImageReadWrite The code is: typedef itk::ImageFileWriter< ImageType > VolumeWriterType; VolumeWriterType::Pointer writer = VolumeWriterType::New(); // Add the MetaImage format to the writer itk::MetaImageIO::Pointer metaWriter = itk::MetaImageIO::New(); writer->SetImageIO( metaWriter ); // **** THIS IS THE LINE TO USE TO WRITE THE DATA INTO THE HEADER FILE metaWriter->SetDataFileName( "LOCAL" ); // Set the filename writer->SetFileName( "test.mhd" ); // Set the image to write writer->SetInput( im ); writer->Write(); Stephen Zein Salah wrote: > Hello all, > > How can I force the Meta Image Writer to write to one single file, NOT > header+raw files?? > > Thanks, > Zein > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 -- =============================================== Dr. Stephen R. Aylward Assistant Professor of Radiology Adjunct Assistant Professor of Computer Science http://caddlab.rad.unc.edu aylward@unc.edu (919) 966-9695 From salah@gris.uni-tuebingen.de Fri Oct 11 11:51:07 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Fri, 11 Oct 2002 12:51:07 +0200 Subject: [Insight-users] example style Message-ID: <001201c27114$1a744fb0$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_000F_01C27124.DDF382C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable hello friends, I have notices that most (or all) the examples of ITK have the following = style: example.cpp example.h exampleBASE.cpp exampleBASE.h exampleGUI.cpp exampleGUI.h exampleGUI.fl I have no problem in understanding the examples. But I would like to = understand this style of dividing the program so that I can develope my = programs in the same style. Can somebody explain to me on what basis the = program is divided this way. I mean: what should each file contain. = Mainly, the relation/interaction between the GUI files and the other = group. Many thank for any explanations or help, Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_000F_01C27124.DDF382C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
hello friends,
 
I have notices that most (or all) the = examples of=20 ITK have the following style:
 
example.cpp
example.h
exampleBASE.cpp
exampleBASE.h
exampleGUI.cpp
exampleGUI.h
exampleGUI.fl
 
I have no problem in understanding the examples. But I would like = to=20 understand this style of dividing the program so that I can develope my = programs=20 in the same style. Can somebody explain to me on what basis the program = is=20 divided this way. I mean: what should each file contain. Mainly, the=20 relation/interaction between the GUI files and the other group.
 
 
Many thank for any explanations or help,
 
Zein
 
 
 
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_000F_01C27124.DDF382C0-- From srodrigu@gbt.tfo.upm.es Fri Oct 11 13:11:16 2002 From: srodrigu@gbt.tfo.upm.es (=?iso-8859-1?Q?Samuel_Rodr=EDguez_Bescos?=) Date: Fri, 11 Oct 2002 14:11:16 +0200 Subject: [Insight-users] Deformable3DMeshFilter Message-ID: <000a01c2711f$4e3b28e0$5f0a048a@sisifo> This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C27130.1056D450 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello every body, Could somebody explain me what are the meaning of the parameters: Stiffness, Scale,Time Step and Step Threshold in the = ItkDeformableMesh3DFilter. Thanks in advance, Sam ------=_NextPart_000_0007_01C27130.1056D450 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello every body,
 
Could somebody explain me what are the = meaning of=20 the parameters:
 
Stiffness, Scale,Time Step and Step = Threshold in=20 the ItkDeformableMesh3DFilter.
 
Thanks in advance,
 
Sam
------=_NextPart_000_0007_01C27130.1056D450-- From luis.ibanez@kitware.com Fri Oct 11 16:11:59 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 11:11:59 -0400 Subject: [Insight-users] Insight 5.2 only allowing ASSEMBLY view References: Message-ID: <3DA6EA3F.5060605@kitware.com> Hi Jay, I'm affraid that your email was addressed to the wrong mailing list. It looks like you are using "Insight" the Tcl GUI front for gdb that is distributed by RedHat. http://sources.redhat.com/insight/ Insight (ITK) (this list) is an Open Source package for image processing and analysis with focus on segmentation and registration. You are of course welcome to try (Insight) ITK ! http://www.itk.org Regards, Luis BTW (if when using Insight -the debugger- you only get assembly code it may be that your code is not being compiled for debugging (option -g). ==================================================== Jay Christopherson wrote: > > > I just installed Insight and am attempting to debug a C++ app. It > seems to run okay, except that the only view I can get is the ASSEMBLY > view. When I try SOURCE or ASM+SRC, it just returns me to the ASSEMBLY > view. > > Anyone else seen this? Is there something I did not compile in, or > something? > > _________________________________________________________________ > Join the world's largest e-mail service with MSN Hotmail. > http://www.hotmail.com > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 11 16:49:01 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 11:49:01 -0400 Subject: [Insight-users] Re: Linking error - ProgressReporter References: <009401c26ed5$809fc940$b0f4ad90@janus> Message-ID: <3DA6F2ED.5040507@kitware.com> Hi Reinhold, It looks like your build of ITK is mixing new and old libraries. Recently the ITK libraries and executables were reorganized in order to place them in a common "bin" directory. Previous to that, each library and executable was left in the directory where it was built. One of the risks of this change is that if users forgot to clean the binary directory, duplicate versions of the libraries and executable will exist on their disks. From your error message it may look like your external project is compiling using the most recent ITK headers but linking with old ITK libraries. Probably your external project is still using the link path that points to the ITK subdirectories instead of using ITK_BINARY_DIR/bin. I will suggest you to fully clean your binary directory and restart from the CMake configuration in ITK. Then also wipe out the binary directory of your external project and configure it again with CMake. This will help to make sure that the ITK libraries used are the right ones. Please let us now if you find furthere problems. Thanks Luis =========================================== Reinhold Füreder wrote: >Hi again, > >I would like to add some details about the problem I have: > >It was compiling fine before I upgraded to the last CVS version of ITK. But >after upgrading I got the following error messages: >----------------------------------------------------------------------- >d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: >'GetImageDimension' : is not a member of 'itk' > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2065: >'GetImageDimension' : undeclared identifier > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2275: >'TInputImage' : illegal use of this type as an expression > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: >'ImageDimension' : is not a member of 'Point' > d:\yann\cvs\insight\code\common\itkpoint.h(209) : see declaration of >'Point' > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2065: >'ImageDimension' : undeclared identifier > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(62) : error C2143: syntax >error : missing ',' before '>' > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled >d:\yann\cvs\insight\code\common\itkimagefunction.h(62) : error C2059: syntax >error : '>' > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see >reference to class template instantiation >'itk::ImageFunction' being compiled > >..... (and so on) >----------------------------------------------------------------------- > >Therefore I added an include to MY file which was compiling after receiving >the above error message to explicitly know the "GetImageDimension", which is >declared in the itkImageBase class: >----------------------------------------------------------------------- >#include >----------------------------------------------------------------------- > >Afterwards the GetImageDimension is well known but I receive the linking >error of my first e-mail (which is quoted at the bottom of this e-mail too). > >The definition of the GetImageDimension (see below) mentions a bug in MSVC, >which I am currently using. So maybe there is a solution with regard to this >work-around??? > >----------------------------------------------------------------------- >/** > * Due to a bug in MSVC, an enum value cannot be accessed out of a template > * parameter until the template class opens. In order for templated classes > * to access the dimension of an image template parameter in defining their > * own dimension, this class is needed as a work-around. > */ >template >struct GetImageDimension >{ > itkStaticConstMacro(ImageDimension, unsigned int, TImage::ImageDimension); >}; > >----------------------------------------------------------------------- > >Thanks a lot for your help, > Reinhold > > >----- Original Message ----- >From: "Reinhold Füreder" >To: >Sent: Monday, October 07, 2002 5:35 PM >Subject: [Insight-users] Linking error - ProgressReporter > > >>Hi, >> >>I have troubles compiling the project after getting the lattest CVS >>version of ITK (which was built successful - are the build options >>somehow helpful?). Although the necessary library (ITKCommon.lib) is >>included I receive the error message below. >> >>Could anyone help me with my C++ or ITK problem? >> >>Thanks, >> Reinhold >> >>---------------------------------------------------------------------- >>Linking... Creating library >>..\bin\Debug\OurProjectUsingITK.lib and object >>..\bin\Debug\OurProjectUsingITK.exp DownsampleFilterInterface.obj : >>error LNK2001: unresolved external symbol "public: __thiscall >>itk::ProgressReporter::~ProgressReporter(void)" >>(??1ProgressReporter@itk@@QAE@XZ) >>ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved >>external symbol "public: __thiscall >>itk::ProgressReporter::~ProgressReporter(void)" >>(??1ProgressReporter@itk@@QAE@XZ) DownsampleFilterInterface.obj : >>error LNK2001: unresolved external symbol "public: __thiscall >>itk::ProgressReporter::ProgressReporter(class >>ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" >>(??0ProgressReporter@itk@@QAE@PAVProces sObject@1@HKK@Z) >>ThresholdAlgorithmInterfaceCommand.obj : error LNK2001: unresolved >>external symbol "public: __thiscall >>itk::ProgressReporter::ProgressReporter(class >>ProgressReporter::ProcessObject *,int,unsigned long,unsigned long)" >>(??0ProgressReporter@itk@@QAE@ PAVProcessObject@1@HKK@Z) >>..\bin\Debug\OurProjectUsingITK.exe : fatal error LNK1120: 2 >>unresolved externals Error executing link.exe. >> >>OurProjectUsingITK.exe - 5 error(s), 0 warning(s) >>---------------------------------------------------------------------- >>Object/Lib modules: kernel32.lib user32.lib gdi32.lib winspool.lib >>comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib >>odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib >>wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib wxxrcd.lib >>ITKBasicFilters.lib ITKCommon.lib VXLNumerics.lib ITKIO.lib MetaIO.lib >>itkpng.lib itkzlib.lib fld.lib >>---------------------------------------------------------------------- >> >>_______________________________________________ >>Insight-users mailing list >>Insight-users@public.kitware.com >>http://public.kitware.com/mailman/listinfo/insight-users >> > > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From t.boettger@dkfz-heidelberg.de Fri Oct 11 17:24:30 2002 From: t.boettger@dkfz-heidelberg.de (Th. Boettger) Date: Fri, 11 Oct 2002 18:24:30 +0200 Subject: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? Message-ID: Hi all, I am trying to construct a filter pipeline in a member function and to return the resulting data object *without* calling Update() in this method. When trying to update the returned data object outside, the source is set to NULL. The reason is that m_Source member is defined as a weak pointer, thus the reference count of the process objects (the source) is not incremented. Why is it a WeakPointer? How can I avoid this problem? class itkDataObject { ... mutable WeakPointer m_Source; ... } Thanks in advance! --- Dipl.-Inform. Thomas Boettger Deutsches Krebsforschungszentrum (German Cancer Research Center) Div. Medical and Biological Informatics H0100 Tel: (+49) 6221-42 2328 Im Neuenheimer Feld 280 Fax: (+49) 6221-42 2345 D-69120 Heidelberg e-mail: t.boettger@dkfz.de Germany http://www.dkfz.de/mbi/people/thomasb.shtml From millerjv@crd.ge.com Fri Oct 11 17:54:01 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Fri, 11 Oct 2002 12:54:01 -0400 Subject: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? Message-ID: The source is a WeakPointer because the Source points to the DataObject and the DataObject points to the Source. If they both held SmartPointers to each other, then we would have a cyclic reference loop and neither the Source or the DataObject could ever be deleted. > -----Original Message----- > From: Th. Boettger [mailto:t.boettger@dkfz-heidelberg.de] > Sent: Friday, October 11, 2002 12:25 PM > To: ITK Mailing List > Subject: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? > > > Hi all, > > I am trying to construct a filter pipeline in a member function and to > return the resulting data object *without* calling Update() > in this method. > When trying to update the returned data object outside, the > source is set to > NULL. The reason is that m_Source member is defined as a weak > pointer, thus > the reference count of the process objects (the source) is > not incremented. > > Why is it a WeakPointer? How can I avoid this problem? > > class itkDataObject > { > ... > mutable WeakPointer m_Source; > ... > } > > Thanks in advance! > > > > --- > Dipl.-Inform. Thomas Boettger > Deutsches Krebsforschungszentrum (German Cancer > Research Center) > Div. Medical and Biological Informatics H0100 Tel: (+49) > 6221-42 2328 > Im Neuenheimer Feld 280 Fax: (+49) > 6221-42 2345 > D-69120 Heidelberg e-mail: > t.boettger@dkfz.de > Germany http://www.dkfz.de/mbi/people/thomasb.shtml _______________________________________________ Insight-users mailing list Insight-users@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-users From luis.ibanez@kitware.com Fri Oct 11 17:55:06 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 12:55:06 -0400 Subject: [Insight-users] Re: itk::Error MutualInformationImageToImageMetric References: <20021008070408.16321.qmail@webmail6.rediffmail.com> Message-ID: <3DA7026A.3040405@kitware.com> Hi Suresh, When registration is being performed, the moving image is mapped on top of the fixed image. The mapping will result in a partial overlap between the images. Metrics are computed in a subset of the pixels belonging to the overlap region. If the transform happens to be too far from the optimal value it may ocurr that the two images do not overlap at all after mapping. In that case, it is impossible to compute any metric value and it is then imposible to feed the optimizer and figure out a modification for the transform. You may try a combination of the following strategies: 1) Reduce the learning rates. The learning rate parameter used by the itk::GradientDescent algorithm define how big is the step taken by the optimizer. The learning rate is used to multiply the gradient vector and produce a step. A large learning rate results in a long steps and increases the chances of sending the transform too fast, too far from the optimal value. It will probably be even better to just replace GradientDescent by itk::RegularStepGradientDescent and get rid of the learning rate problem altogether... 2) Tune the values of the translation scaling. This is important since the parameters space is composed of rotational values and translational values. Rotational values are in the range [-1:1] while translations are in the range of the image size.( hundreds of pixels). If the optimization is moving too fast on translation it may easily send the moving image out of the range of the fixed image. 3) As a general safe approach, you may want to add an Observer to your code and print the transform parameters as every IteerationEvent sent from the optimizer. In this way you will be able to track the trajectory in the parametric space and be able to tune the optimization parameters . Please let us know if you continue experiencing problems with your registration. Thanks Luis ================================== suresh wrote: > Hi Luis, > Hi all, > > I'm working on MRI-SPECT registration problem.I'm experimenting on > MultiResMIRegistration example, with my images which or of sizes > SPECT 128, 128, 48 > MRI 256, 256, 120 > > it is throwing an ITK exception > > itk::Error MutualInformationImageToImageMetric(00E04B0);All the > sampled point mapped to outside of the moving Image. > > I tried changing the number of iterations and learning rates.but could > not get rid of the exception. > > please anybody elaborate more on this exception and on how to fix this. > > Thank you, > > suresh > > > > From t.boettger@dkfz-heidelberg.de Fri Oct 11 18:03:38 2002 From: t.boettger@dkfz-heidelberg.de (Th. Boettger) Date: Fri, 11 Oct 2002 19:03:38 +0200 Subject: AW: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? In-Reply-To: Message-ID: Well okay. This surely is true. But how can I avoid the problem described below? > -----Ursprüngliche Nachricht----- > Von: Miller, James V (Research) [mailto:millerjv@crd.ge.com] > Gesendet: Freitag, 11. Oktober 2002 18:54 > An: 'Th. Boettger'; ITK Mailing List > Betreff: RE: [Insight-users] Why is itkDataObject::m_Source a > WeakPointer? > > > The source is a WeakPointer because the Source points to the > DataObject and > the DataObject points to the Source. If they both held > SmartPointers to each > other, then we would have a cyclic reference loop and neither the > Source or the > DataObject could ever be deleted. > > > > > -----Original Message----- > > From: Th. Boettger [mailto:t.boettger@dkfz-heidelberg.de] > > Sent: Friday, October 11, 2002 12:25 PM > > To: ITK Mailing List > > Subject: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? > > > > > > Hi all, > > > > I am trying to construct a filter pipeline in a member function and to > > return the resulting data object *without* calling Update() > > in this method. > > When trying to update the returned data object outside, the > > source is set to > > NULL. The reason is that m_Source member is defined as a weak > > pointer, thus > > the reference count of the process objects (the source) is > > not incremented. > > > > Why is it a WeakPointer? How can I avoid this problem? > > > > class itkDataObject > > { > > ... > > mutable WeakPointer m_Source; > > ... > > } > > > > Thanks in advance! > > > > > > > > --- > > Dipl.-Inform. Thomas Boettger > > Deutsches Krebsforschungszentrum (German Cancer > > Research Center) > > Div. Medical and Biological Informatics H0100 Tel: (+49) > > 6221-42 2328 > > Im Neuenheimer Feld 280 Fax: (+49) > > 6221-42 2345 > > D-69120 Heidelberg e-mail: > > t.boettger@dkfz.de > > Germany > http://www.dkfz.de/mbi/people/thomasb.shtml > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From millerjv@crd.ge.com Fri Oct 11 18:58:48 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Fri, 11 Oct 2002 13:58:48 -0400 Subject: [Insight-users] Why is itkDataObject::m_Source a WeakPointer? Message-ID: Okay. The problem is that since the DataObject has a weak pointer to the last object to the pipeline, and nobody else is holding onto a handle to the pipeline objects, the pipeline is being destroyed when you exit your routine. When the pipeline is destroyed, the source of the output data object is reset to NULL. Your options are: 1. Return a SmartPointer to the last object in the pipeline instead of returning a SmartPointer to the output of the last object in the pipeline. This should force the pipeline not to destroy itself when you exit your routine. 2. In doing similar things in that past, I usually cache the smart pointers to all my pipeline elements as ivars in a class. So I have a class that encapsulates the pipeline with ivars that are smart pointers to every filter in the pipeline. While this is not truly necessary (you could just cache the last element of the pipeline), I usually find that once I have a pipeline constructed, I end up adjusting ivar settings on the elements in the pipeline. 3. (Somewhere in between 1 and 2), you could return not only the smart pointer to the output of the last object in the pipeline but also the a smart pointer to the last process object in the pipeline. Usually, I do not call Update() on a DataObject. I usually think in terms of ProcessObjects. So I pass around handles ProcessObjects and call update on them. Then if I want to cache the output of a process object, I'll get the output and then disconnect it from the pipeline. Jim > -----Original Message----- > From: Th. Boettger [mailto:t.boettger@dkfz-heidelberg.de] > Sent: Friday, October 11, 2002 1:04 PM > To: ITK Mailing List > Subject: AW: [Insight-users] Why is itkDataObject::m_Source a > WeakPointer? > > > Well okay. This surely is true. > > But how can I avoid the problem described below? > > > > -----Ursprungliche Nachricht----- > > Von: Miller, James V (Research) [mailto:millerjv@crd.ge.com] > > Gesendet: Freitag, 11. Oktober 2002 18:54 > > An: 'Th. Boettger'; ITK Mailing List > > Betreff: RE: [Insight-users] Why is itkDataObject::m_Source a > > WeakPointer? > > > > > > The source is a WeakPointer because the Source points to the > > DataObject and > > the DataObject points to the Source. If they both held > > SmartPointers to each > > other, then we would have a cyclic reference loop and neither the > > Source or the > > DataObject could ever be deleted. > > > > > > > > > -----Original Message----- > > > From: Th. Boettger [mailto:t.boettger@dkfz-heidelberg.de] > > > Sent: Friday, October 11, 2002 12:25 PM > > > To: ITK Mailing List > > > Subject: [Insight-users] Why is itkDataObject::m_Source a > WeakPointer? > > > > > > > > > Hi all, > > > > > > I am trying to construct a filter pipeline in a member > function and to > > > return the resulting data object *without* calling Update() > > > in this method. > > > When trying to update the returned data object outside, the > > > source is set to > > > NULL. The reason is that m_Source member is defined as a weak > > > pointer, thus > > > the reference count of the process objects (the source) is > > > not incremented. > > > > > > Why is it a WeakPointer? How can I avoid this problem? > > > > > > class itkDataObject > > > { > > > ... > > > mutable WeakPointer m_Source; > > > ... > > > } > > > > > > Thanks in advance! > > > > > > > > > > > > --- > > > Dipl.-Inform. Thomas Boettger > > > Deutsches Krebsforschungszentrum (German Cancer > > > Research Center) > > > Div. Medical and Biological Informatics H0100 Tel: (+49) > > > 6221-42 2328 > > > Im Neuenheimer Feld 280 Fax: (+49) > > > 6221-42 2345 > > > D-69120 Heidelberg e-mail: > > > t.boettger@dkfz.de > > > Germany > > http://www.dkfz.de/mbi/people/thomasb.shtml > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 11 19:50:24 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 14:50:24 -0400 Subject: [Insight-users] Re: On segmentation & connectedness Message-ID: <3DA71D70.8090402@kitware.com> Hi cspl, The current implementation of the itk::ConfidenceConnectedImageFitler uses the FloodFillFunctionConditionalIterator class. This class consider neighbors only the closest pixels in every dimension. That is: 2 connectedness in 1D 4 connectedness in 2D 6 connectedness in 3D 8 connectedness in 4 D ... 2N connectedness in N-D. The code that decides the connectivity is in lines 162 to 207 in Insight/Code/Common/itkFloodFilledFunctionConditionalConstIterator.txx it is basically: for ( each dimension ) for( j=-1; j<=2; j+=2 ) // try the neighbor at each side Probably the best way to modify this code and make several connectivities possible is to use the SmartNeighborhood iterator in order to have access to the neighbor pixels. You may want to modify the code in this iterator in order to get 26 connectedness.... Please let us know if you need further details, Thanks Luis BTW you sent your email to "insight-users-request" the right mailing list is "insight-users". ================================================== cspl wrote: Dear Mr.Luis, I am working on Segmentaion.I used the following class to get segmentation o/p. itk::ConfidenceConnectedImageFilter. I am getting for one image not volume.If I have to get for a volume how connect 26 . I think now it is 8 connected How to specify 26 connected in volume.Please give me suggestion. I have written code as follows. typedef itk::ConfidenceConnectedImageFilter FilterType; FilterType::Pointer filter = FilterType::New(); filter->SetInput(image1); FilterType::IndexType seed; seed[0] = vol->width/2;seed[1] =vol->height/2 ; filter->SetSeed(seed); filter->SetMultiplier(2.5); filter->SetReplaceValue(255); filter->SetNumberOfIterations(1); try { filter->Update(); } catch (itk::ExceptionObject& e) { AfxMessageBox(e.GetDescription()); } image1 = filter->GetOutput(); } Please see the o/p of a single slice .I attached herewith o/p of a one image. Thanking you, Regards, Ramakrishna ------------------------------------------------------------------------ From luis.ibanez@kitware.com Fri Oct 11 20:02:46 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 15:02:46 -0400 Subject: [Insight-users] How to set the input to LevelSetNeighborhoodExtractor? References: <000901c26ecb$753ddc40$941278ca@VirtualHospital> Message-ID: <3DA72056.9020909@kitware.com> --------------030301020607010208030504 Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 7bit Hi Zhao, Two approaches for level sets are implemented in ITK. Both of this approaches are well described in the J.A. Sethian book. In one hand you can represent the level set by using a data set (itk::Image) and associating the zero set of this data with a surface. On the other hand you can use a NarrowBand technique in which only pixels close to the surface are represented. The points are held in a data structure of Nodes (Index + Value): NodeContainer. The LevelSetNeighborhoodExtractor accepts both types of inputs. That is, you can feed it a NodeContainer if you are using NarrowBand, or you can feed it a LevelSet (itk::Image). itkSetConstObjectMacro( ) is an auxiliary macro used in ITK in order to ensure that the "Set*()" methods look all the same and follow a number of standards (e.g. call "Modified()"). The line itkSetConstObjectMacro( InputLevelSet, LevelSetImageType ); gets expanded to void SetInputLevelSet( const LevelSetImageType * ) --- So, the input to the itkLevelSetNeighborhood extractor can be an image. For example the output of the FastMarchingImageFilter could be a natural choice: You could also us a NodeContainer as input if you set up the narrow band technique with the method NarrowBandingOn(); Please let us know if you have any difficulty using this class. Thanks Luis ====================================== zhao wrote: > Hi Luis, > > It seems that itkSetConstObjectMacro > > can do this job, but how to use it? Thanks:) > > Zhao > --------------030301020607010208030504-- From luis.ibanez@kitware.com Fri Oct 11 20:13:02 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 15:13:02 -0400 Subject: [Insight-users] Watershed with Image References: Message-ID: <3DA722BE.2040400@kitware.com> Hi Harri, There are two problem with the modifications you are making to the example. A) The dimension of the image is specified in two different places in this example. One is line 96 as you indicated. The second place is line 177 were an ImageType is defined. This latter image type is then used to instantiate a ImageFileWriter. The compiler error that you are getting is due to trying to connect an image of type itk::Image // Image 3D float into an image file writer that is expecting itk::Image // Image 2D float B) The second problem is that this example is saving the result in PNG format (since the images were 2D). If you change the image types in lines 96 and 177 to 3D, you will also have to change the section of code that is writing the image to a file. PNG is no longer an option since it doesn't support 3D images. You may choose to use the RawImageIO class or the MetaImageIO class. Please let us know if you find any further problems, Thanks Luis ========================================== Harri Tapio Jaalinoja wrote: >Hi all, > >I'm trying to make a watershed transformation of 3D density data. >I start by modifying the existing watershed example > >Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx > >To reproduce my problem, go to line 96 and replace > typedef itk::Image ImageType; >with > typedef itk::Image ImageType; > >When I "make" it, I get: > >/home/butcher/Harri/Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx: >In function `int main (int, char **)': >/home/butcher/Harri/Insight/Examples/WatershedSegmentation/itkWatershedSegmentationExample.cxx:225: >no matching function for call to `itk::ImageFileWriter
**)::UnsignedImageType>::SetInput >(itk::Image *)' >/home/butcher/Harri/Insight/Code/IO/itkImageFileWriter.txx:51: >candidates are: >void itk::ImageFileWriter::SetInput (const TInputImage *) >[with TInputImage = main (int, char **)::UnsignedImageType] >make[1]: *** [itkWatershedSegmentationExample.o] Error 1 >make: *** [default_target] Error 2 > > >Your help is highly appreciated. I am new to c++, so please bear with me >if this is trivial :) > >Thanks, >Harri > > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 11 20:34:27 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 15:34:27 -0400 Subject: [Insight-users] Re: Algorithms/itkOtsuThresholdImageCalculator.txx References: <20021009115829.37940.qmail@web13708.mail.yahoo.com> Message-ID: <3DA727C3.9070300@kitware.com> Hi digvijay, It looks like you copied the code from one of the files in the Testing/CodeAlgorithms directory. The code that you should put in the main.cxx is something like typedef itk::Image ImageType; typedef itk::OtsuThresholdImageCalculator CalculatorType; CalculatorType::Pointer calculator = CalculatorType::New(); calculator->SetImage( image ); // get the image somehow... calculator->SetNumberOfHistogramBins( 64); calculator->Compute(); short thresholdResult = calculator->GetThreshold(); Please let us know if you find any further problems, Thanks Luis ======================================================= digvijay singh wrote: >Hi luis!! >I tried to compile the above file and got an error as >mentioned below. The CMakeLists.txt file and the >main.cxx file are attached herewith. Kindly advise >Thanks >digvijay > >__________________________________________________ >Do you Yahoo!? >Faith Hill - Exclusive Performances, Videos & More >http://faith.yahoo.com > > >------------------------------------------------------------------------ > > > >SET(ITK_SOURCE_DIR /opt/tools/itk/Insight_Nightly/Insight) >SET(ITK_LIB_DIR /opt/tools/itk/Insight_Nightly/lib) >SET(ITK_BUILD_DIR /opt/tools/itk/Insight_Nightly/build) > >SET(ITK_BINARY_DIR /opt/tools/itk/my_source) >SET(HOME /home/vertebra/digvijay) >SET(ITK_PROJECT_DIR ${HOME}/itk/proj_1/Algorithms) ># Include OpenGL >INCLUDE (${CMAKE_ROOT}/Modules/FindOpenGL.cmake) > ># Include FLTK >INCLUDE (${CMAKE_ROOT}/Modules/FindFLTK.cmake) > >INCLUDE_DIRECTORIES( >${ITK_SOURCE_DIR}/Code/ > >${ITK_SOURCE_DIR}/Code/IO > >${ITK_SOURCE_DIR}/Code/Numerics/Statistics >${ITK_SOURCE_DIR}/Code/Numerics/FEM >${ITK_SOURCE_DIR}/Code/Numerics/vxl >${ITK_SOURCE_DIR}/Code/Numerics/vxl/vcl >${ITK_SOURCE_DIR}/Code/Common >${ITK_SOURCE_DIR}/Code/BasicFilters >${ITK_SOURCE_DIR}/Code/Algorithms >${ITK_SOURCE_DIR}/Code/IO >${ITK_SOURCE_DIR}/Auxiliary/FltkImageViewer >${ITK_BUILD_DIR} >${ITK_BUILD_DIR}/Code/Numerics/vxl/vcl >${ITK_BUILD_DIR}/Auxiliary/FltkImageViewer >${ITK_SOURCE_DIR}/Examples/IBSRValidation/Common >${FLTK_INCLUDE_PATH} >${OPENGL_INCLUDE_PATH} >) > >LINK_DIRECTORIES( ${ITK_LIB_DIR} ) > >LINK_LIBRARIES ( >VXLNumerics >ITKIO >ITKAlgorithms >ITKBasicFilters >ITKNumerics >itkpng >ITKStatistics >MetaIO >itkzlib >param >vtkFltk >FltkImageViewer >FEM >ITKCommon >${FLTK_LIBRARY} >${OPENGL_LIBRARY} >${GLU_LIBRARY} >-lpthread -ldl -lm >) > >ADD_DEFINITIONS(-ftemplate-depth-50 -D_PTHREADS) > ># Sources of non-templated classes. >SET(ITKAlgorithms_SRCS >itkWatershedEquivalencyTable.cxx >itkWatershedOneWayEquivalencyTable.cxx > >itkWatershedMiniPipelineProgressCommand.cxx >) > >ADD_LIBRARY(ITKAlgorithms ${ITKAlgorithms_SRCS}) >TARGET_LINK_LIBRARIES(ITKAlgorithms ITKCommon ITKNumerics) > >INSTALL_TARGETS(/lib/InsightToolkit ITKAlgorithms) >ADD_EXECUTABLE( Otsu itkOtsuThresholdImageCalculator.txx main.cxx) > > >------------------------------------------------------------------------ > > >int main(int argc, char **argv ) > { > itkOtsuThresholdImageCalculator(argc,argv); > return 0; > } > From luis.ibanez@kitware.com Fri Oct 11 20:39:09 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 15:39:09 -0400 Subject: [Insight-users] "Bug" in vtkFlRenderWindowInteractor.cxx References: Message-ID: <3DA728DD.1040307@kitware.com> Hi Jahn, Thanks for pointing out the bug, ... and providing the fix :-) The change has been made in the CVS repository, Thanks, Luis ==================================================== Jahn Otto Næsgaard Andersen wrote: > There is a small bug in vtkFlRenderWindowInteractor.cxx. As X11 is not > present on Mac OS X, "fl_display" is not defined in fltk on OS X. > > Fixing this is easy: just insert an #ifndef __APPLE__ in addition to > the #ifndef _WIN32 where fl_display is accessed. > > > Jahn Otto > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 11 20:52:51 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 15:52:51 -0400 Subject: [Insight-users] CVS Build error - input line too long References: Message-ID: <3DA72C13.4010700@kitware.com> Hi, Please post to the list the file : ITKBasicFiltersTcl.dsp located in your ITK binary directory, under: Insight/Wrapping/Tcl/BasicFilters Thanks Luis ========================================== anast.jm@pg.com wrote: >Any ideas how to get around this .... john > >--------------------Configuration: ITKBasicFiltersTcl - Win32 Release-------------------- >Performing Custom Build Step on P:\WinCVS\Insight+\Insight\Wrapping\Tcl\BasicFilters\wrap_itkTernaryMagnitudeImageFilter.cxx >The input line is too long. >Error executing c:\winnt\system32\cmd.exe. > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 11 21:13:42 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 11 Oct 2002 16:13:42 -0400 Subject: [Insight-users] example style References: <001201c27114$1a744fb0$aeb00286@wsigris.unituebingen.de> Message-ID: <3DA730F6.4080003@kitware.com> Hi Zein, The coding style for these examples is not related to ITK but to the fact that FLTK generates code from the GUI .fl files. Let's repeat once again that FLTK is *not* a requirement for ITK. FLTK is only used as GUI for some of the examples. We could have used Qt of wxWindows for the same purpouse (or even MFC is we didn't care about portability). FLTK provides a tool called "fluid" for building the GUI interactively. Fluid generates files with extension .fl (.fd, fld) From this .fl file, fluid can generate .cxx and .h files. Given that these files are generated you don't want to add any code to them because your modifications will be lost at any change in the .fl file. Fluid lets you create the GUI as a class and make the callbacks be associated with member methods of the class. This results in very clean code since all the tricky lines that delegate the callback to the member functions are buried inside the .cxx generated file that you will never touch. It is easy to write the declaration of the class in fluid, but it is quite inconvenient to write the implementation since this has to be done with the limited editor built-in in fluid. The examples then, take advantage of polymorphism and move the implementation of the methods (associated with callbacks) to a base class and to a derived class. The Base class contains all the code that is GUI independent. The GUI class contains the specification of the GUI itself and finally, the derived class contains the code that is not GUI independent. This structure makes possible to write a layer for other GUI libraries like Qt since the Base class can be reused for them. Again, this is just an FLTK issue and it is totally unrelated with ITK architecture and coding style. Please let us know if you have further questions. Thanks Luis =========================================== Zein Salah wrote: > hello friends, > > > > I have notices that most (or all) the examples of ITK have the > following style: > > > > example.cpp > > example.h > > exampleBASE.cpp > > exampleBASE.h > > exampleGUI.cpp > > exampleGUI.h > > exampleGUI.fl > > > > I have no problem in understanding the examples. But I would like to > understand this style of dividing the program so that I can develope > my programs in the same style. Can somebody explain to me on what > basis the program is divided this way. I mean: what should each file > contain. Mainly, the relation/interaction between the GUI files and > the other group. > > > > > > Many thank for any explanations or help, > > > > Zein > > > > > > > > > > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 > From Cheng-Hsiu.Chen@med.ge.com Mon Oct 14 14:27:14 2002 From: Cheng-Hsiu.Chen@med.ge.com (Chen, Cheng-Hsiu (MED)) Date: Mon, 14 Oct 2002 08:27:14 -0500 Subject: [Insight-users] Question about MultiResMiRegistration result? Message-ID: <8608421EC5CBD511B5090002A55C004803CFD62E@uswaumsx04medge.med.ge.com> Is anyone know how to interpret the result of MultiResMIRegistration (e.g. The Overall Transformation matrix and offset)? If the rotation is measured between -1 and 1, then what is the measurement of translation offset? by pixel or pixel size? Where is the origin of the coordinate system? What kind of coordinate system? Left-Hand/Right-Hand? or something else? I performed the MultiResMIRegistatin on the same image set at different O.S. (Linux and Window2000), the result are different. On Window 2000 the transformation matrix is 0.99951 -0.0148422 -0.0275434 0.0121688 0.995421 -0.94812 0.0288245 0.0944304 0.995114 Translation offset is: -32.0531 63.969 -62.4461 On Linux the transformation matrix is: 0.999512 -0.0241558 -0.0198178 0.0223209 0.995862 -0.0880938 0.0218638 0.0876085 0.995915 Translation offset is: -32.4999 60.1089 -54.4322 Cheng ================================================= Cheng-Hsiu Chen 8499 Darrow Road, Suite 2 Twinsburg, OH 44087 (330) 487-6679 Cheng-Hsiu.Chen@med.ge.com GE Medical Systems www.gemedicalsystems.com From luis.ibanez@kitware.com Mon Oct 14 15:29:54 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 14 Oct 2002 10:29:54 -0400 Subject: [Insight-users] Question about MultiResMiRegistration result? References: <8608421EC5CBD511B5090002A55C004803CFD62E@uswaumsx04medge.med.ge.com> Message-ID: <3DAAD4E2.6080909@kitware.com> Hi Cheng, The results of the MultiResMIRegistration in 3D are presented as a 3x3 matrix and a 3 components vector. Together they represent an affine transform. The matrix contains rotations, scale changes and shearing. The vector represents translations. A point P will be transformed by P' = M x P + V where M is the 3x3 matrix, V is the 3 components {x,y,z} translation vector and P' is the {x,y,z} point after transformation. Translations are measured in *millimeters*, not pixels. since the registration is performed in physical space. The rotation components are usually on the range -1:1 but do not have to stay in this range since they can also represent scale changes. You can think of M as the composition of a rotational matrix with an anisotropic scale matrix and shearing matrices. The origin of the coordinate system is given by the fixed image. itk::Images have an Origin() that you can Get/Set. http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Image.html The coordinate system is right-handed. About the different results in Windows/Linux: It is expected to get different results in Windows and Unix/Linux. The reason is that Visual C++ do not use by default the IEEE representation for floating point numbers. Instead it uses a 48 bit representation that it is supposed to be native in Intel processors. As a consequence the cumulated errors in floating point operations have a different behavior on both platforms. You can force VC++ to use the IEEE standard though...at some price in performance... A similar problem will be found with the Intel C++ compiler. VC++ is known to have some erratic behavior when it comes to implicitly transform floating point numbers from and to the IEEE format. This happens differently depending on the type of build you are using { Debug vs Release }. Please let us know if you have further questions. Thanks Luis ==================================================== Chen, Cheng-Hsiu (MED) wrote: > Is anyone know how to interpret the result of MultiResMIRegistration > (e.g. The Overall Transformation matrix and offset)? > If the rotation is measured between -1 and 1, then what > is the measurement of translation offset? by pixel or pixel size? > Where is the origin of the coordinate system? > What kind of coordinate system? Left-Hand/Right-Hand? > or something else? > > I performed the MultiResMIRegistatin on the same image set > at different O.S. (Linux and Window2000), the result are different. > > On Window 2000 the transformation matrix is > 0.99951 -0.0148422 -0.0275434 > 0.0121688 0.995421 -0.94812 > 0.0288245 0.0944304 0.995114 > Translation offset is: > -32.0531 63.969 -62.4461 > > On Linux the transformation matrix is: > 0.999512 -0.0241558 -0.0198178 > 0.0223209 0.995862 -0.0880938 > 0.0218638 0.0876085 0.995915 > Translation offset is: > -32.4999 60.1089 -54.4322 > > Cheng > ================================================= > Cheng-Hsiu Chen > 8499 Darrow Road, Suite 2 > Twinsburg, OH 44087 > (330) 487-6679 Cheng-Hsiu.Chen@med.ge.com > GE Medical Systems www.gemedicalsystems.com > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From rjtst21+@pitt.edu Mon Oct 14 16:39:27 2002 From: rjtst21+@pitt.edu (Robert J Tamburo) Date: Mon, 14 Oct 2002 11:39:27 -0400 Subject: [Insight-users] Webpage typo References: <8608421EC5CBD511B5090002A55C004803CFD62E@uswaumsx04medge.med.ge.com> Message-ID: <002501c27397$e5215ca0$0d588e88@via7> On documentation page *descriptions* is spelled describtions: a.. Doxygen generated manual pages. These pages are generated nightly and contain extensive describtions regarding inheritence, methods, object collaboration, and so on. a.. Doxygen generated ITK 1.0 Documentation. These pages contain extensive describtions regarding inheritence, methods, object collaboration, and so on. From rjtst21+@pitt.edu Mon Oct 14 16:39:33 2002 From: rjtst21+@pitt.edu (Robert J Tamburo) Date: Mon, 14 Oct 2002 11:39:33 -0400 Subject: [Insight-users] Webpage typo References: <8608421EC5CBD511B5090002A55C004803CFD62E@uswaumsx04medge.med.ge.com> Message-ID: <002601c27397$e9523510$0d588e88@via7> On documentation page *descriptions* is spelled describtions: a.. Doxygen generated manual pages. These pages are generated nightly and contain extensive describtions regarding inheritence, methods, object collaboration, and so on. a.. Doxygen generated ITK 1.0 Documentation. These pages contain extensive describtions regarding inheritence, methods, object collaboration, and so on. From salah@gris.uni-tuebingen.de Tue Oct 15 11:33:14 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Tue, 15 Oct 2002 12:33:14 +0200 Subject: [Insight-users] error building itk Message-ID: <011d01c27436$44e41710$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_011A_01C27447.083ADA90 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello friends, I made a cvs update for itk. I build it using cmake 1.4 patch 5. then = tried to build it using Vis C++. I had the folloing error. --------------------Configuration: ShapeDetectionLevelSet - Win32 = Debug-------------------- Linking... LINK : fatal error LNK1104: cannot open file "FltkImageViewer.lib" Error executing link.exe. ALL_BUILD - 1 error(s), 0 warning(s) I searched my hard drive for this file. I could not find it. I found a = file called "ItkFltkImageViewer.lib" Do any body know what the progblem could be. Many thanks, Zein=20 ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_011A_01C27447.083ADA90 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello friends,
 
I made a cvs update for itk. I build it = using cmake=20 1.4 patch 5. then tried to build it using Vis C++. I had the folloing=20 error.
 
--------------------Configuration:=20 ShapeDetectionLevelSet - Win32 = Debug--------------------
Linking...
LINK :=20 fatal error LNK1104: cannot open file "FltkImageViewer.lib"
Error = executing=20 link.exe.
 
ALL_BUILD - 1 error(s), = 0=20 warning(s)
 
 
 
I searched my hard drive for this file. = I could not=20 find it. I found a file called "ItkFltkImageViewer.lib"
 
Do any body know what the progblem = could=20 be.
 
Many thanks,
 
Zein 
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_011A_01C27447.083ADA90-- From luis.ibanez@kitware.com Tue Oct 15 12:02:13 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 07:02:13 -0400 Subject: [Insight-users] error building itk References: <011d01c27436$44e41710$aeb00286@wsigris.unituebingen.de> Message-ID: <3DABF5B5.7030309@kitware.com> Hi Zein, Starting with the Release 1.0, the FltkImageViewer.lib library was renamed as ITKFltkImageViewer.lib in order to make it consistent with the rest of ITK libraries. However, the CMakeLists.txt file in the ShapeDetectionLevelSet was still making reference to the previous library name. I has been fixed now. Thanks for pointing this out. Luis =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Zein Salah wrote: > Hello friends, >=20 > =20 >=20 > I made a cvs update for itk. I build it using cmake 1.4 patch 5. then=20 > tried to build it using Vis C++. I had the folloing error. >=20 > =20 >=20 > --------------------Configuration: ShapeDetectionLevelSet - Win32=20 > Debug-------------------- > Linking... > LINK : fatal error LNK1104: cannot open file "FltkImageViewer.lib" > Error executing link.exe. >=20 > =20 >=20 > ALL_BUILD - 1 error(s), 0 warning(s) >=20 > =20 >=20 > =20 >=20 > =20 >=20 > I searched my hard drive for this file. I could not find it. I found a = > file called "ItkFltkImageViewer.lib" >=20 > =20 >=20 > Do any body know what the progblem could be. >=20 > =20 >=20 > Many thanks, >=20 > =20 >=20 > Zein=20 >=20 > =20 >=20 > =20 >=20 > ->8<------------->8<------------->8<------------->8<------------->8<---= ---------->8<- > Zein I. Salah > Universit=E4t T=FCbingen, WSI-GRIS > Sand 14 > 72076 T=FCbingen > Email: salah@gris.uni-tuebingen.de = =20 > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 >=20 From luis.ibanez@kitware.com Tue Oct 15 12:20:17 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 07:20:17 -0400 Subject: [Insight-users] Webpage typo References: <8608421EC5CBD511B5090002A55C004803CFD62E@uswaumsx04medge.med.ge.com> <002601c27397$e9523510$0d588e88@via7> Message-ID: <3DABF9F1.7000506@kitware.com> Hi Robert, It is fixed now in the repository. It will show up on the web tomorrow after the pages are regenerated. Thanks for pointing this out. Luis ===================================================== Robert J Tamburo wrote: > On documentation page *descriptions* is spelled describtions: > > a.. Doxygen generated manual pages. These pages are generated nightly and > contain extensive describtions regarding inheritence, methods, object > collaboration, and so on. > > > a.. Doxygen generated ITK 1.0 Documentation. These pages contain extensive > describtions regarding inheritence, methods, object collaboration, and so > on. > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From dean.inglis@on.aibn.com Tue Oct 15 12:33:11 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 15 Oct 2002 7:33:11 -0400 Subject: [Insight-users] Examples: link errors & missing includes - some fixes Message-ID: <20021015113311.DFSB27137.tomts26-srv.bellnexxia.net@[209.226.175.10]> Hi, FYI, build of Examples/ShapeDetectionLevelSet should link ITKFltkImageViewer.lib and not FLTKImageViewer.lib and ITKvtkFltk and not vtkFltk in /Examples/ShapeDetectionLevelSet/CMakeListst.txt Just tryig to see how many examples Borland will actually build ... still pb's building IBSRValidation MutualInformationEuler2DRegistration MRIBiasCorrection FuzzyConnectedness - needs include for sscanf in FuzzyConnectApp.cxx ShapeDetection - needs include for sscanf in ShapeDetectApp.cxx MRIRegistration - typename expected for RequiredOptionMissing vtkITK - CMake errors Dean From harri.jaalinoja@helsinki.fi Tue Oct 15 11:51:36 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Tue, 15 Oct 2002 13:51:36 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2? Message-ID: Hi, have you succeeded in compiling ITK with gcc 3.2? I tried both the CVS version and beta2. They both fail, with different errors. Any ideas what I could do to make this work? Thanks, Harri ---- My setup: [hajaalin@gene Build]$ gcc --version gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) CVS version compilation fails: /home/hajaalin/Insight_CVS/Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx:2: non-template used as template gmake[7]: *** [vnl/Templates/vnl_matrix+double-.o] Error 1 gmake[6]: *** [default_target] Error 2 gmake[5]: *** [default_target_vxl] Error 2 gmake[4]: *** [default_target] Error 2 gmake[3]: *** [default_target_Numerics] Error 2 gmake[2]: *** [default_target] Error 2 gmake[1]: *** [default_target_Code] Error 2 gmake: *** [default_target] Error 2 Beta 2 compilation fails: In file included from /usr/local/Insight/Code/Common/itk_hash_map.h:57, from /usr/local/Insight/Testing/Code/Common/itkCommonHeaderTest.cxx:247: /usr/local/Insight/Code/Common/itk_hashtable.h: At global scope: /usr/local/Insight/Code/Common/itk_hashtable.h:163: parse error before `>' token /usr/local/Insight/Code/Common/itk_hashtable.h:174: definition of `struct itk::hashtable_iterator' inside template parameter list /usr/local/Insight/Code/Common/itk_hashtable.h:176: ISO C++ forbids declaration of `hashtable' with no type /usr/local/Insight/Code/Common/itk_hashtable.h:176: template-id `hashtable' used as a declarator /usr/local/Insight/Code/Common/itk_hashtable.h:176: confused by earlier errors, bailing out make[7]: *** [itkCommonHeaderTest.o] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Common] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Code] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Testing] Error 2 make: *** [default_target] Error 2 From luis.ibanez@kitware.com Tue Oct 15 13:45:54 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 08:45:54 -0400 Subject: [Insight-users] Examples: link errors & missing includes - some fixes References: <20021015113311.DFSB27137.tomts26-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3DAC0E02.6050408@kitware.com> Hi Dean, Thanks for pointing this out. The CMakeLists.txt file on ShapeDetectionLevelSet was fixed this morning. Could you elaborate more on the CMake errors produced by vtkITK ? Thanks Luis ================================================= dean.inglis@on.aibn.com wrote: > Hi, > > FYI, build of Examples/ShapeDetectionLevelSet > should link ITKFltkImageViewer.lib and not > FLTKImageViewer.lib and > ITKvtkFltk and not vtkFltk in > /Examples/ShapeDetectionLevelSet/CMakeListst.txt > > Just tryig to see how many examples Borland will > actually build ... still pb's building > > IBSRValidation > > MutualInformationEuler2DRegistration > > MRIBiasCorrection > > FuzzyConnectedness - needs include for > sscanf in FuzzyConnectApp.cxx > > ShapeDetection - needs include for sscanf > in ShapeDetectApp.cxx > > MRIRegistration - typename expected for > RequiredOptionMissing > > vtkITK - CMake errors > > > Dean > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From malat@free.fr Tue Oct 15 21:10:46 2002 From: malat@free.fr (Mathieu Malaterre) Date: Tue, 15 Oct 2002 22:10:46 +0200 Subject: [Insight-users] compiling ITK with gcc 3.2? References: Message-ID: <3DAC7646.8060607@free.fr> Hi Harri (again), Could you try adding: #include in Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx or else try adding -Wno-deprecated in CMAKE_CXX_FLAGS (in your CMakeCache.txt file). and tell me if it works ? thanks ref: http://www.geocrawler.com/archives/3/216/2001/4/150/5671325/ mathieu Harri Tapio Jaalinoja wrote: >Hi, > >have you succeeded in compiling ITK with gcc 3.2? >I tried both the CVS version and beta2. They both fail, >with different errors. > >Any ideas what I could do to make this work? > >Thanks, >Harri > >---- > >My setup: >[hajaalin@gene Build]$ gcc --version >gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) > >CVS version compilation fails: >/home/hajaalin/Insight_CVS/Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx:2: >non-template used as template >gmake[7]: *** [vnl/Templates/vnl_matrix+double-.o] Error 1 >gmake[6]: *** [default_target] Error 2 >gmake[5]: *** [default_target_vxl] Error 2 >gmake[4]: *** [default_target] Error 2 >gmake[3]: *** [default_target_Numerics] Error 2 >gmake[2]: *** [default_target] Error 2 >gmake[1]: *** [default_target_Code] Error 2 >gmake: *** [default_target] Error 2 > >Beta 2 compilation fails: >In file included from /usr/local/Insight/Code/Common/itk_hash_map.h:57, > from >/usr/local/Insight/Testing/Code/Common/itkCommonHeaderTest.cxx:247: >/usr/local/Insight/Code/Common/itk_hashtable.h: At global scope: >/usr/local/Insight/Code/Common/itk_hashtable.h:163: parse error before `>' >token >/usr/local/Insight/Code/Common/itk_hashtable.h:174: definition of `struct >itk::hashtable_iterator' inside template parameter list >/usr/local/Insight/Code/Common/itk_hashtable.h:176: ISO C++ forbids >declaration of `hashtable' with no type >/usr/local/Insight/Code/Common/itk_hashtable.h:176: template-id >`hashtable' used as a >declarator >/usr/local/Insight/Code/Common/itk_hashtable.h:176: confused by earlier >errors, bailing out >make[7]: *** [itkCommonHeaderTest.o] Error 1 >make[6]: *** [default_target] Error 2 >make[5]: *** [default_target_Common] Error 2 >make[4]: *** [default_target] Error 2 >make[3]: *** [default_target_Code] Error 2 >make[2]: *** [default_target] Error 2 >make[1]: *** [default_target_Testing] Error 2 >make: *** [default_target] Error 2 > > > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > > > > -- Le superflu n'est inutile qu'à ceux qui pensent que le nécessaire est suffisant (P. Desproges) Mathieu Malaterre 170 chemin des minimes 01600 PARCIEUX http://mathieu.malaterre.com From yanjunxu@umich.edu Tue Oct 15 15:40:17 2002 From: yanjunxu@umich.edu (Xu, Yanjun) Date: Tue, 15 Oct 2002 10:40:17 -0400 Subject: [Insight-users] Error building ITK Message-ID: <2449F3F867FBD211936600C04F68569E012E2927@smhrimsx.mhri.med.umich.edu> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C27458.C7D3B640 Content-Type: text/plain; charset="iso-8859-1" Hi, All, I could not build itk after some recent update. I did succeed before. The error is as follows. --------------------Configuration: WSTITK - Win32 Debug-------------------- Linking... Creating library D:\Program Files\Insight\bin\Debug/WSTITK.lib and object D:\Program Files\Insight\bin\Debug/WSTITK.exp vtkWSTCommon.lib(vtkPatchedImageReader.obj) : error LNK2001: unresolved external symbol "protected: class vtkImageData * __thiscall vtkImageSource::AllocateOutputData(class vtkDataObject *)" (?AllocateOutputData@vtkImageSource@@IAEPAVvtkImageData@@P AVvtkDataObject@@@Z) D:\Program Files\Insight\bin\Debug/WSTITK.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. ALL_BUILD - 2 error(s), 53 warning(s) Thanks. Yanjun ------_=_NextPart_001_01C27458.C7D3B640 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi, = All,

 

=

I could not build itk after some recent update. I did succeed before. The error is as = follows.

 

=

--------------------Configuration: = WSTITK - Win32 Debug--------------------

Linking...=

=A0=A0 Creating library D:\Program Files\Insight\bin\Debug/WSTITK.lib and object D:\Program Files\Insight\bin\Debug/WSTITK.exp

vtkWSTCommon.lib(vtkPatchedImageR= eader.obj) : error LNK2001: unresolved external symbol = "protected: class vtkImageData * __thiscall vtkImageSource::AllocateOutputData(class = vtkDataObject *)" (?AllocateOutputData@vtkImageSource@@IAEPAVvtkImageData@@P<= /span>

AVvtkDataObject@= @@Z)

D:\Program = Files\Insight\bin\Debug/WSTITK.exe : fatal error LNK1120: 1 unresolved = externals

Error executing = link.exe.

 

=

ALL_BUILD - 2 error(s), 53 = warning(s)

 

=

 

=

Thanks.

 

=

Yanjun

=
------_=_NextPart_001_01C27458.C7D3B640-- From harri.jaalinoja@helsinki.fi Tue Oct 15 18:41:20 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Tue, 15 Oct 2002 20:41:20 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2? In-Reply-To: <3DAC7646.8060607@free.fr> Message-ID: Hi Mathieu (and others), sorry to say it still does not work, I get the same error (non-template used as template) I also tried adding '#include ' in Code/Numerics/vxl/vnl/vnl_matrix.txx, where the definition #define VNL_MATRIX_INSTANTIATE(T) \ is, but that did not help either (this was just guesswork). [hajaalin@gene Build]$ echo $CC; echo $CXX /usr/bin/gcc /usr/bin/gcc [hajaalin@gene Build]$ gcc --version gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) Thanks, Harri On Tue, 15 Oct 2002, Mathieu Malaterre wrote: > Hi Harri (again), > Could you try adding: > #include > in > Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx > > or else try adding -Wno-deprecated in CMAKE_CXX_FLAGS (in your > CMakeCache.txt file). > > and tell me if it works ? > > thanks > > ref: > http://www.geocrawler.com/archives/3/216/2001/4/150/5671325/ > > mathieu > > Harri Tapio Jaalinoja wrote: > > >Hi, > > > >have you succeeded in compiling ITK with gcc 3.2? > >I tried both the CVS version and beta2. They both fail, > >with different errors. > > > >Any ideas what I could do to make this work? > > > >Thanks, > >Harri > > > >---- > > > >My setup: > >[hajaalin@gene Build]$ gcc --version > >gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) > > > >CVS version compilation fails: > >/home/hajaalin/Insight_CVS/Insight/Code/Numerics/vxl/vnl/Templates/vnl_m= atrix+double-.cxx:2: > >non-template used as template > >gmake[7]: *** [vnl/Templates/vnl_matrix+double-.o] Error 1 > >gmake[6]: *** [default_target] Error 2 > >gmake[5]: *** [default_target_vxl] Error 2 > >gmake[4]: *** [default_target] Error 2 > >gmake[3]: *** [default_target_Numerics] Error 2 > >gmake[2]: *** [default_target] Error 2 > >gmake[1]: *** [default_target_Code] Error 2 > >gmake: *** [default_target] Error 2 > > > >Beta 2 compilation fails: > >In file included from /usr/local/Insight/Code/Common/itk_hash_map.h:57, > > from > >/usr/local/Insight/Testing/Code/Common/itkCommonHeaderTest.cxx:247: > >/usr/local/Insight/Code/Common/itk_hashtable.h: At global scope: > >/usr/local/Insight/Code/Common/itk_hashtable.h:163: parse error before `= >' > >token > >/usr/local/Insight/Code/Common/itk_hashtable.h:174: definition of `struc= t > >itk::hashtable_iterator' inside template parameter list > >/usr/local/Insight/Code/Common/itk_hashtable.h:176: ISO C++ forbids > >declaration of `hashtable' with no type > >/usr/local/Insight/Code/Common/itk_hashtable.h:176: template-id > >`hashtable' used as a > >declarator > >/usr/local/Insight/Code/Common/itk_hashtable.h:176: confused by earlier > >errors, bailing out > >make[7]: *** [itkCommonHeaderTest.o] Error 1 > >make[6]: *** [default_target] Error 2 > >make[5]: *** [default_target_Common] Error 2 > >make[4]: *** [default_target] Error 2 > >make[3]: *** [default_target_Code] Error 2 > >make[2]: *** [default_target] Error 2 > >make[1]: *** [default_target_Testing] Error 2 > >make: *** [default_target] Error 2 > > > > > > > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > > -- > Le superflu n'est inutile qu'=E0 ceux qui pensent que le n=E9cessaire est= suffisant (P. Desproges) > > Mathieu Malaterre > 170 chemin des minimes > 01600 PARCIEUX > http://mathieu.malaterre.com > > > From luis.ibanez@kitware.com Tue Oct 15 19:54:29 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 14:54:29 -0400 Subject: [Insight-users] compiling ITK with gcc 3.2? References: Message-ID: <3DAC6465.7030908@kitware.com> Hi Harri, Given that the compiler error is produced in the expansion of a macro it is hard to figure out where the error is comming from. Could you please try the following, Temporarily replace the line VNL_MATRIX_INSTANTIATE(double) in vnl_matrix+double-.cxx with the actual content of the Macro as defined in Insight/Code/Numerics/vxl/vnl/vnl_matrix.txx: It should look something like: template class vnl_matrix; template vnl_matrix operator-(T const &, vnl_matrix const &); VCL_INSTANTIATE_INLINE(vnl_matrix operator+(T const &, vnl_matrix const &)); VCL_INSTANTIATE_INLINE(vnl_matrix operator*(T const &, vnl_matrix const &)); template T dot_product(vnl_matrix const &, vnl_matrix const &); template T inner_product(vnl_matrix const &, vnl_matrix const &); template T cos_angle(vnl_matrix const &, vnl_matrix const &); template vnl_matrix element_product(vnl_matrix const &, vnl_matrix const &); template vnl_matrix element_quotient(vnl_matrix const &, vnl_matrix const &); template int vnl_inplace_transpose(T*, unsigned, unsigned, char*, unsigned); template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, vnl_matrix const &)) Note that the "\" should be removed so each line is passed independently to the compiler. This should help us to identify the offending line. Thanks Luis ========================================= Harri Tapio Jaalinoja wrote: > Hi Mathieu (and others), > > sorry to say it still does not work, I get the same error (non-template > used as template) > > I also tried adding '#include ' in > Code/Numerics/vxl/vnl/vnl_matrix.txx, where the definition > #define VNL_MATRIX_INSTANTIATE(T) \ > is, but that did not help either (this was just guesswork). > > [hajaalin@gene Build]$ echo $CC; echo $CXX > /usr/bin/gcc > /usr/bin/gcc > [hajaalin@gene Build]$ gcc --version > gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) > > Thanks, > > Harri > > > On Tue, 15 Oct 2002, Mathieu Malaterre wrote: > > >>Hi Harri (again), >> Could you try adding: >>#include >>in >>Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx >> >>or else try adding -Wno-deprecated in CMAKE_CXX_FLAGS (in your >>CMakeCache.txt file). >> >>and tell me if it works ? >> >>thanks >> >>ref: >>http://www.geocrawler.com/archives/3/216/2001/4/150/5671325/ >> >>mathieu >> From dean.inglis@on.aibn.com Tue Oct 15 21:52:28 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 15 Oct 2002 16:52:28 -0400 Subject: [Insight-users] Examples: link errors & missing includes - some fixes Message-ID: <20021015205227.OJF3827.tomts17-srv.bellnexxia.net@[209.226.175.72]> Hi Luis, building vtkITK gives the following cmake error: CMake Error: Error splitting file name off end of path: c:/Builder/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransform.h Directory not found: c:/Builder/Insight/Examples/vtkITK/Common/ and so on for all the files in ../vtkITK/Common/ building MinSizeRel out of source, Borland bcc32 compiler, CMake 1.4.5. this also occurs for the SegmentationEditor. Am I missing something in the root CMakeCache? Dean P.S., Any thoughts on the include ? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` Hi Dean, Thanks for pointing this out. The CMakeLists.txt file on ShapeDetectionLevelSet was fixed this morning. Could you elaborate more on the CMake errors produced by vtkITK ? Thanks Luis ================================================= dean.inglis@on.aibn.com wrote: > Hi, > > FYI, build of Examples/ShapeDetectionLevelSet > should link ITKFltkImageViewer.lib and not > FLTKImageViewer.lib and > ITKvtkFltk and not vtkFltk in > /Examples/ShapeDetectionLevelSet/CMakeListst.txt > > Just tryig to see how many examples Borland will > actually build ... still pb's building > > IBSRValidation > > MutualInformationEuler2DRegistration > > MRIBiasCorrection > > FuzzyConnectedness - needs include for > sscanf in FuzzyConnectApp.cxx > > ShapeDetection - needs include for sscanf > in ShapeDetectApp.cxx > > MRIRegistration - typename expected for > RequiredOptionMissing > > vtkITK - CMake errors > > > Dean > From luis.ibanez@kitware.com Tue Oct 15 22:24:47 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 17:24:47 -0400 Subject: [Insight-users] Examples: link errors & missing includes - some fixes References: <20021015205227.OJF3827.tomts17-srv.bellnexxia.net@[209.226.175.72]> Message-ID: <3DAC879F.1030600@kitware.com> Hi Dean, The "vtkITK" and "SegmentationEditor" examples are both using VTK and relying on Tcl wrapping as configured in your VTK build. Did you enable Tcl wrapping when you built VTK ? --- About the : The #include has been added both in FuzzyConnectedness and ShapeDetection as you pointed out. I wonder why only Borland complains about this missing header. It is probably included as a side effect from current headers in other platforms. Thanks Luis =============================================== dean.inglis@on.aibn.com wrote: > Hi Luis, > > building vtkITK gives the following cmake error: > CMake Error: Error splitting file name off end of > path: > c:/Builder/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransform.h > Directory not found: c:/Builder/Insight/Examples/vtkITK/Common/ > > and so on for all the files in ../vtkITK/Common/ > > building MinSizeRel out of source, Borland bcc32 > compiler, CMake 1.4.5. > > this also occurs for the SegmentationEditor. > Am I missing something in the root CMakeCache? > > Dean > > P.S., Any thoughts on the include ? > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` > > Hi Dean, > > Thanks for pointing this out. > The CMakeLists.txt file on ShapeDetectionLevelSet > was fixed this morning. > > Could you elaborate more on the CMake errors > produced by vtkITK ? > > Thanks > > > > Luis > > > ================================================= > > > dean.inglis@on.aibn.com wrote: > > >>Hi, >> >>FYI, build of Examples/ShapeDetectionLevelSet >>should link ITKFltkImageViewer.lib and not >>FLTKImageViewer.lib and >>ITKvtkFltk and not vtkFltk in >>/Examples/ShapeDetectionLevelSet/CMakeListst.txt >> >>Just tryig to see how many examples Borland will >>actually build ... still pb's building >> >>IBSRValidation >> >>MutualInformationEuler2DRegistration >> >>MRIBiasCorrection >> >>FuzzyConnectedness - needs include for >>sscanf in FuzzyConnectApp.cxx >> >>ShapeDetection - needs include for sscanf >>in ShapeDetectApp.cxx >> >>MRIRegistration - typename expected for >>RequiredOptionMissing >> >>vtkITK - CMake errors >> >> >>Dean >> >> > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From dean.inglis@on.aibn.com Tue Oct 15 22:49:47 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 15 Oct 2002 17:49:47 -0400 Subject: [Insight-users] Examples: link errors & missing includes - some fixes Message-ID: <20021015214947.CQJA26355.tomts9-srv.bellnexxia.net@[209.226.175.10]> Hi, I have built vtk out of source MinSizeRel, shared libs with tcl wrapping on (see vtk dashboard site Proximal). So, in my root work dir, there is /Builder/Insight /Builder/VTK /Builder/itkRelease /Builder/vtkRelease VTK (tcl) libs and dlls are in /vtkRelease/bin static itk libs are in /itkRelease/bin. I believe had vtkITK working once before ... Dean > > From: Luis Ibanez > Date: 2002/10/15 Tue PM 05:24:47 EST > To: dean.inglis@on.aibn.com > CC: insight-users@public.kitware.com, > "Lorensen, William E (Research)" , > Joshua Cates > Subject: Re: [Insight-users] Examples: link errors & missing includes - some fixes > > > Hi Dean, > > The "vtkITK" and "SegmentationEditor" examples > are both using VTK and relying on Tcl wrapping > as configured in your VTK build. > > Did you enable Tcl wrapping when you built VTK ? > > --- > > About the : > > The #include has been added both in > FuzzyConnectedness and ShapeDetection > as you pointed out. > > I wonder why only Borland complains about > this missing header. > > It is probably included as a side effect > from current headers in other platforms. > > > Thanks > > > Luis > > =============================================== > > dean.inglis@on.aibn.com wrote: > > Hi Luis, > > > > building vtkITK gives the following cmake error: > > CMake Error: Error splitting file name off end of > > path: > > > c:/Builder/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransform.h > > Directory not found: c:/Builder/Insight/Examples/vtkITK/Common/ > > > > and so on for all the files in ../vtkITK/Common/ > > > > building MinSizeRel out of source, Borland bcc32 > > compiler, CMake 1.4.5. > > > > this also occurs for the SegmentationEditor. > > Am I missing something in the root CMakeCache? > > > > Dean > > > > P.S., Any thoughts on the include ? > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` > > > > Hi Dean, > > > > Thanks for pointing this out. > > The CMakeLists.txt file on ShapeDetectionLevelSet > > was fixed this morning. > > > > Could you elaborate more on the CMake errors > > produced by vtkITK ? > > > > Thanks > > > > > > > > Luis > > > > > > ================================================= > > > > > > dean.inglis@on.aibn.com wrote: > > > > > >>Hi, > >> > >>FYI, build of Examples/ShapeDetectionLevelSet > >>should link ITKFltkImageViewer.lib and not > >>FLTKImageViewer.lib and > >>ITKvtkFltk and not vtkFltk in > >>/Examples/ShapeDetectionLevelSet/CMakeListst.txt > >> > >>Just tryig to see how many examples Borland will > >>actually build ... still pb's building > >> > >>IBSRValidation > >> > >>MutualInformationEuler2DRegistration > >> > >>MRIBiasCorrection > >> > >>FuzzyConnectedness - needs include for > >>sscanf in FuzzyConnectApp.cxx > >> > >>ShapeDetection - needs include for sscanf > >>in ShapeDetectApp.cxx > >> > >>MRIRegistration - typename expected for > >>RequiredOptionMissing > >> > >>vtkITK - CMake errors > >> > >> > >>Dean > >> > >> > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Wed Oct 16 00:15:24 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 15 Oct 2002 19:15:24 -0400 Subject: [Insight-users] Re: ShapeDetectionLevelSet and more References: <55B17E4C-E01E-11D6-8D0C-003065AC0A34@sintef.no> Message-ID: <3DACA18C.8080907@kitware.com> Hi Jahn, Thanks a lot for sending the backtrace of the crash on the Mac. It was quite helpful for finding the problem. I could verify that the example was also crashing on MS-Windows. The reason was an uninitialized variable in ShapeDetectionLevelSetBase.cxx ( m_NumberOfSeeds )... It is fixed now. For some lucky(unlucky?) reason this was passing unnoticed under Linux. However "valgrind" was quite efficient in pointing out where the non initializaed variables were used. Please let us know if you encounter further problems, Thanks Luis ================================================== Jahn Otto Næsgaard Andersen wrote: > I Luis, thanks for the last CVS updates with fltk-stuff and > ShapeDetectionLevelSet. > > The ShapeDetectionLevelSet example however crashes when I try to set the > seed point. This happens on both Windows and OS X. > ....snip > > Regards, > Jahn Otto > > From koen.vanleemput@hus.fi Wed Oct 16 07:04:04 2002 From: koen.vanleemput@hus.fi (Koen Van Leemput) Date: Wed, 16 Oct 2002 09:04:04 +0300 Subject: [Insight-users] compiling ITK with gcc 3.2? In-Reply-To: References: Message-ID: <200210160904.04166.koen.vanleemput@hus.fi> On Tuesday 15 October 2002 13:51, Harri Tapio Jaalinoja wrote: > > My setup: > [hajaalin@gene Build]$ gcc --version > gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) > > CVS version compilation fails: > /home/hajaalin/Insight_CVS/Insight/Code/Numerics/vxl/vnl/Templates/vnl_= matr >ix+double-.cxx:2: non-template used as template > gmake[7]: *** [vnl/Templates/vnl_matrix+double-.o] Error 1 > gmake[6]: *** [default_target] Error 2 > gmake[5]: *** [default_target_vxl] Error 2 > gmake[4]: *** [default_target] Error 2 > gmake[3]: *** [default_target_Numerics] Error 2 > gmake[2]: *** [default_target] Error 2 > gmake[1]: *** [default_target_Code] Error 2 > gmake: *** [default_target] Error 2 > > Hi,=20 When I switched to gcc3 on my Linux box recently, I got exactly the same=20 problem. Manually changing the line=20 #define VCL_NEEDS_INLINE_INSTANTIATION 1 to=20 #define VCL_NEEDS_INLINE_INSTANTIATION 0 in the automatically generated file=20 Insight-build/Code/Numerics/vxl/vcl/vcl_config_compiler.h solved the prob= lem=20 for me. Maybe this will help figuring out what exactly is going on. Koen From harri.jaalinoja@helsinki.fi Wed Oct 16 09:43:44 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Wed, 16 Oct 2002 11:43:44 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2? In-Reply-To: <3DAC6465.7030908@kitware.com> Message-ID: Hi, with the vnl_matrix+double-.cxx looking like this... -- clip -- template class vnl_matrix; template vnl_matrix operator-(double const &, vnl_matrix const &); VCL_INSTANTIATE_INLINE(vnl_matrix operator+(double const &, vnl_matrix const &)); VCL_INSTANTIATE_INLINE(vnl_matrix operator*(double const &, vnl_matrix const &)); template double dot_product(vnl_matrix const &, vnl_matrix const &); template double inner_product(vnl_matrix const &, vnl_matrix const &); template double cos_angle(vnl_matrix const &, vnl_matrix const &); template vnl_matrix element_product(vnl_matrix const &, vnl_matrix const &); template vnl_matrix element_quotient(vnl_matrix const &, vnl_matrix const &); template int vnl_inplace_transpose(double*, unsigned, unsigned, char*, unsigned); template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, vnl_matrix const &)) -- clip -- ... the error comes from the last line. I can get over this by using the trick pointed out by Koen, setting #define VCL_NEEDS_INLINE_INSTANTIATION 0 in Build/Code/Numerics/vxl/vcl/vcl_config_compiler.h However, now I encounter this error: itkNumericsHeaderTest.o: In function `__static_initialization_and_destruction_0(int, int)': itkNumericsHeaderTest.o(.text+0x36): undefined reference to `std::ios_base::Init::Init[in-charge]()' itkNumericsHeaderTest.o: In function `__tcf_0': itkNumericsHeaderTest.o(.text+0x65): undefined reference to `std::ios_base::Init::~Init [in-charge]()' itkNumericsHeaderTest.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status make[7]: *** [/home/hajaalin/Insight_CVS/Insight/Build/bin/itkNumericsHeaderTest] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Numerics] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Code] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Testing] Error 2 make: *** [default_target] Error 2 Making good progress, but not quite there yet :) Thanks, Harri On Tue, 15 Oct 2002, Luis Ibanez wrote: > > Hi Harri, > > Given that the compiler error is produced in the > expansion of a macro it is hard to figure out > where the error is comming from. > > Could you please try the following, > > Temporarily replace the line > > VNL_MATRIX_INSTANTIATE(double) > > in vnl_matrix+double-.cxx > > with the actual content of the Macro as defined in > > Insight/Code/Numerics/vxl/vnl/vnl_matrix.txx: > > It should look something like: > > template class vnl_matrix; > template vnl_matrix operator-(T const &, vnl_matrix const &); > VCL_INSTANTIATE_INLINE(vnl_matrix operator+(T const &, vnl_matrix > const &)); > VCL_INSTANTIATE_INLINE(vnl_matrix operator*(T const &, vnl_matrix > const &)); > template T dot_product(vnl_matrix const &, vnl_matrix const &); > template T inner_product(vnl_matrix const &, vnl_matrix const &); > template T cos_angle(vnl_matrix const &, vnl_matrix const &); > template vnl_matrix element_product(vnl_matrix const &, > vnl_matrix const &); > template vnl_matrix element_quotient(vnl_matrix const &, > vnl_matrix const &); > template int vnl_inplace_transpose(T*, unsigned, unsigned, char*, > unsigned); > template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); > template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); > VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, > vnl_matrix const &)) > > > > Note that the "\" should be removed so each line is passed > independently to the compiler. > > This should help us to identify the offending line. > > > Thanks > > Luis > > ========================================= > > Harri Tapio Jaalinoja wrote: > > Hi Mathieu (and others), > > > > sorry to say it still does not work, I get the same error (non-template > > used as template) > > > > I also tried adding '#include ' in > > Code/Numerics/vxl/vnl/vnl_matrix.txx, where the definition > > #define VNL_MATRIX_INSTANTIATE(T) \ > > is, but that did not help either (this was just guesswork). > > > > [hajaalin@gene Build]$ echo $CC; echo $CXX > > /usr/bin/gcc > > /usr/bin/gcc > > [hajaalin@gene Build]$ gcc --version > > gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-2mdk) > > > > Thanks, > > > > Harri > > > > > > On Tue, 15 Oct 2002, Mathieu Malaterre wrote: > > > > > >>Hi Harri (again), > >> Could you try adding: > >>#include > >>in > >>Insight/Code/Numerics/vxl/vnl/Templates/vnl_matrix+double-.cxx > >> > >>or else try adding -Wno-deprecated in CMAKE_CXX_FLAGS (in your > >>CMakeCache.txt file). > >> > >>and tell me if it works ? > >> > >>thanks > >> > >>ref: > >>http://www.geocrawler.com/archives/3/216/2001/4/150/5671325/ > >> > >>mathieu > >> > > > > From luis.ibanez@kitware.com Wed Oct 16 14:41:07 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 16 Oct 2002 09:41:07 -0400 Subject: [Insight-users] compiling ITK with gcc 3.2? References: Message-ID: <3DAD6C73.7040705@kitware.com> Hi Harri, Good to know that the VCL_NEEDS_INLINE_INSTANTIATION declaration must be different for gcc 3.2. We probably can setup this on the main CMakeLists.txt file. The new errors seem to be a linking problem. The itkNumericsHeaderTest is pretty simple. It only includes all the headers in the Insight/Code/Numerics directory. The intent is to verify tha the headers can pass a simple syntax check. Did you try cleaning the binary directory ? Luis ========================================= Harri Tapio Jaalinoja wrote: > Hi, > > with the vnl_matrix+double-.cxx looking like this... > > -- clip -- > template class vnl_matrix; > template vnl_matrix operator-(double const &, vnl_matrix const &); > VCL_INSTANTIATE_INLINE(vnl_matrix operator+(double const &, vnl_matrix const &)); > VCL_INSTANTIATE_INLINE(vnl_matrix operator*(double const &, vnl_matrix const &)); > template double dot_product(vnl_matrix const &, vnl_matrix const &); > template double inner_product(vnl_matrix const &, vnl_matrix const &); > template double cos_angle(vnl_matrix const &, vnl_matrix const &); > template vnl_matrix element_product(vnl_matrix const &, vnl_matrix const &); > template vnl_matrix element_quotient(vnl_matrix const &, vnl_matrix const &); > template int vnl_inplace_transpose(double*, unsigned, unsigned, char*, unsigned); > template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); > template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); > VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, vnl_matrix const &)) > -- clip -- > > ... the error comes from the last line. > > I can get over this by using the trick pointed out by Koen, setting > #define VCL_NEEDS_INLINE_INSTANTIATION 0 > in Build/Code/Numerics/vxl/vcl/vcl_config_compiler.h > > However, now I encounter this error: > > itkNumericsHeaderTest.o: In function > `__static_initialization_and_destruction_0(int, int)': > itkNumericsHeaderTest.o(.text+0x36): undefined reference to > `std::ios_base::Init::Init[in-charge]()' > itkNumericsHeaderTest.o: In function `__tcf_0': > itkNumericsHeaderTest.o(.text+0x65): undefined reference to > `std::ios_base::Init::~Init [in-charge]()' > itkNumericsHeaderTest.o(.eh_frame+0x11): undefined reference to > `__gxx_personality_v0' > collect2: ld returned 1 exit status > make[7]: *** > [/home/hajaalin/Insight_CVS/Insight/Build/bin/itkNumericsHeaderTest] Error > 1 > make[6]: *** [default_target] Error 2 > make[5]: *** [default_target_Numerics] Error 2 > make[4]: *** [default_target] Error 2 > make[3]: *** [default_target_Code] Error 2 > make[2]: *** [default_target] Error 2 > make[1]: *** [default_target_Testing] Error 2 > make: *** [default_target] Error 2 > > > Making good progress, but not quite there yet :) > > Thanks, > Harri > > > On Tue, 15 Oct 2002, Luis Ibanez wrote: > > From harri.jaalinoja@helsinki.fi Wed Oct 16 15:20:10 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Wed, 16 Oct 2002 17:20:10 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2? In-Reply-To: <3DAD6C73.7040705@kitware.com> Message-ID: Hi, yes, I tried removing everything from Build/bin, but it did not help. Cheers, Harri On Wed, 16 Oct 2002, Luis Ibanez wrote: > > Hi Harri, > > Good to know that the VCL_NEEDS_INLINE_INSTANTIATION > declaration must be different for gcc 3.2. We probably > can setup this on the main CMakeLists.txt file. > > > The new errors seem to be a linking problem. > > The itkNumericsHeaderTest is pretty simple. It only > includes all the headers in the Insight/Code/Numerics > directory. The intent is to verify tha the headers > can pass a simple syntax check. > > Did you try cleaning the binary directory ? > > > > Luis > > > ========================================= > > Harri Tapio Jaalinoja wrote: > > > Hi, > > > > with the vnl_matrix+double-.cxx looking like this... > > > > -- clip -- > > template class vnl_matrix; > > template vnl_matrix operator-(double const &, vnl_matrix const &); > > VCL_INSTANTIATE_INLINE(vnl_matrix operator+(double const &, vnl_matrix const &)); > > VCL_INSTANTIATE_INLINE(vnl_matrix operator*(double const &, vnl_matrix const &)); > > template double dot_product(vnl_matrix const &, vnl_matrix const &); > > template double inner_product(vnl_matrix const &, vnl_matrix const &); > > template double cos_angle(vnl_matrix const &, vnl_matrix const &); > > template vnl_matrix element_product(vnl_matrix const &, vnl_matrix const &); > > template vnl_matrix element_quotient(vnl_matrix const &, vnl_matrix const &); > > template int vnl_inplace_transpose(double*, unsigned, unsigned, char*, unsigned); > > template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); > > template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); > > VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, vnl_matrix const &)) > > -- clip -- > > > > ... the error comes from the last line. > > > > I can get over this by using the trick pointed out by Koen, setting > > #define VCL_NEEDS_INLINE_INSTANTIATION 0 > > in Build/Code/Numerics/vxl/vcl/vcl_config_compiler.h > > > > However, now I encounter this error: > > > > itkNumericsHeaderTest.o: In function > > `__static_initialization_and_destruction_0(int, int)': > > itkNumericsHeaderTest.o(.text+0x36): undefined reference to > > `std::ios_base::Init::Init[in-charge]()' > > itkNumericsHeaderTest.o: In function `__tcf_0': > > itkNumericsHeaderTest.o(.text+0x65): undefined reference to > > `std::ios_base::Init::~Init [in-charge]()' > > itkNumericsHeaderTest.o(.eh_frame+0x11): undefined reference to > > `__gxx_personality_v0' > > collect2: ld returned 1 exit status > > make[7]: *** > > [/home/hajaalin/Insight_CVS/Insight/Build/bin/itkNumericsHeaderTest] Error > > 1 > > make[6]: *** [default_target] Error 2 > > make[5]: *** [default_target_Numerics] Error 2 > > make[4]: *** [default_target] Error 2 > > make[3]: *** [default_target_Code] Error 2 > > make[2]: *** [default_target] Error 2 > > make[1]: *** [default_target_Testing] Error 2 > > make: *** [default_target] Error 2 > > > > > > Making good progress, but not quite there yet :) > > > > Thanks, > > Harri > > > > > > On Tue, 15 Oct 2002, Luis Ibanez wrote: > > > > > > > > From malat@free.fr Thu Oct 17 00:22:09 2002 From: malat@free.fr (Mathieu Malaterre) Date: Thu, 17 Oct 2002 01:22:09 +0200 Subject: [Insight-users] compiling ITK with gcc 3.2? References: Message-ID: <3DADF4A1.3090005@free.fr> Hi Harry, I think Luis meant that you tried removing *all* object files from Insight/Build/Code/Numerics directory (*.o files) Could you also check that g++ version is 3.2 too mathieu Harri Tapio Jaalinoja wrote: >Hi, > >yes, I tried removing everything from Build/bin, but it did not help. > >Cheers, >Harri > >On Wed, 16 Oct 2002, Luis Ibanez wrote: > > > >>Hi Harri, >> >>Good to know that the VCL_NEEDS_INLINE_INSTANTIATION >>declaration must be different for gcc 3.2. We probably >>can setup this on the main CMakeLists.txt file. >> >> >>The new errors seem to be a linking problem. >> >>The itkNumericsHeaderTest is pretty simple. It only >>includes all the headers in the Insight/Code/Numerics >>directory. The intent is to verify tha the headers >>can pass a simple syntax check. >> >>Did you try cleaning the binary directory ? >> >> >> >> Luis >> >> >>========================================= >> >>Harri Tapio Jaalinoja wrote: >> >> >> >>>Hi, >>> >>>with the vnl_matrix+double-.cxx looking like this... >>> >>>-- clip -- >>>template class vnl_matrix; >>>template vnl_matrix operator-(double const &, vnl_matrix const &); >>>VCL_INSTANTIATE_INLINE(vnl_matrix operator+(double const &, vnl_matrix const &)); >>>VCL_INSTANTIATE_INLINE(vnl_matrix operator*(double const &, vnl_matrix const &)); >>>template double dot_product(vnl_matrix const &, vnl_matrix const &); >>>template double inner_product(vnl_matrix const &, vnl_matrix const &); >>>template double cos_angle(vnl_matrix const &, vnl_matrix const &); >>>template vnl_matrix element_product(vnl_matrix const &, vnl_matrix const &); >>>template vnl_matrix element_quotient(vnl_matrix const &, vnl_matrix const &); >>>template int vnl_inplace_transpose(double*, unsigned, unsigned, char*, unsigned); >>>template vcl_ostream & operator<<(vcl_ostream &, vnl_matrix const &); >>>template vcl_istream & operator>>(vcl_istream &, vnl_matrix &); >>>VCL_INSTANTIATE_INLINE(bool operator!=(vnl_matrix const &, vnl_matrix const &)) >>>-- clip -- >>> >>>... the error comes from the last line. >>> >>>I can get over this by using the trick pointed out by Koen, setting >>>#define VCL_NEEDS_INLINE_INSTANTIATION 0 >>>in Build/Code/Numerics/vxl/vcl/vcl_config_compiler.h >>> >>>However, now I encounter this error: >>> >>>itkNumericsHeaderTest.o: In function >>>`__static_initialization_and_destruction_0(int, int)': >>>itkNumericsHeaderTest.o(.text+0x36): undefined reference to >>>`std::ios_base::Init::Init[in-charge]()' >>>itkNumericsHeaderTest.o: In function `__tcf_0': >>>itkNumericsHeaderTest.o(.text+0x65): undefined reference to >>>`std::ios_base::Init::~Init [in-charge]()' >>>itkNumericsHeaderTest.o(.eh_frame+0x11): undefined reference to >>>`__gxx_personality_v0' >>>collect2: ld returned 1 exit status >>>make[7]: *** >>>[/home/hajaalin/Insight_CVS/Insight/Build/bin/itkNumericsHeaderTest] Error >>>1 >>>make[6]: *** [default_target] Error 2 >>>make[5]: *** [default_target_Numerics] Error 2 >>>make[4]: *** [default_target] Error 2 >>>make[3]: *** [default_target_Code] Error 2 >>>make[2]: *** [default_target] Error 2 >>>make[1]: *** [default_target_Testing] Error 2 >>>make: *** [default_target] Error 2 >>> >>> >>>Making good progress, but not quite there yet :) >>> >>>Thanks, >>>Harri >>> >>> >>>On Tue, 15 Oct 2002, Luis Ibanez wrote: >>> >>> >>> >>> >> >> >> >> > >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users > > > > -- Le superflu n'est inutile qu'à ceux qui pensent que le nécessaire est suffisant (P. Desproges) Mathieu Malaterre 170 chemin des minimes 01600 PARCIEUX http://mathieu.malaterre.com From luis.ibanez@kitware.com Wed Oct 16 18:36:46 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 16 Oct 2002 13:36:46 -0400 Subject: [Insight-users] compiling ITK with gcc 3.2 --> OK ! Message-ID: <3DADA3AE.1070704@kitware.com> Hi Harri, Sorry to say this but...gcc3.2 is working for me. I built gcc-3.2 from the sources on a RedHat 7.1 using an existing gcc-3.0.2. Here are the options I used to configure gcc 3.2 configure --prefix=/usr/local --enable-shared --enable-threads --enable-languages=c,c++,f77 --enable-version-specific-runtime-libs The I configured ITK without any modification to the sources. The CMake options used were: - Build Shared Libraries - No Examples It built without problems. ----- My guess is that there maybe a configuration problem with your gcc-3.2 compiler. Are you using the compiler that comes directly with your Linux distribution ? or is it one that you build out of the sources ? -- Could you please try the following command: /usr/local/bin/g++ --print-libgcc-file-name and let us know what you get. Here is what I got as result (since my gcc3.2 was installed in /usr/local ): /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/libgcc.a Please let us know if you find any hints. Thanks Luis From anast.jm@pg.com Thu Oct 17 00:35:40 2002 From: anast.jm@pg.com (anast.jm@pg.com) Date: Wed, 16 Oct 2002 19:35:40 -0400 Subject: [Insight-users] AntiAliasBinaryImageFilter doc typo Message-ID: The readme file for AntiAliasBinaryImageFilter example states The executable "itkGenerateSampleData" built in this directory can be used to the correct executable name is itkSampleDataGenerator fyi...john From cates@sci.utah.edu Thu Oct 17 00:58:16 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Wed, 16 Oct 2002 17:58:16 -0600 (MDT) Subject: [Insight-users] AntiAliasBinaryImageFilter doc typo In-Reply-To: Message-ID: Hi, It's fixed now. Thanks for the tip. Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 16 Oct 2002 anast.jm@pg.com wrote: > > The readme file for AntiAliasBinaryImageFilter example states > > The executable "itkGenerateSampleData" built in this directory can be used > to > > the correct executable name is > > itkSampleDataGenerator > > fyi...john > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From harri.jaalinoja@helsinki.fi Thu Oct 17 15:16:08 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Thu, 17 Oct 2002 17:16:08 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2 --> OK ! In-Reply-To: <3DADA3AE.1070704@kitware.com> Message-ID: Hi Luis, I tried building my own gcc from sources I downloaded from www.gnu.org ftp server, with the options you listed, and the thing still gets stuck exactly like before. Earlier today: [hajaalin@gene Build]$ /usr/bin/g++ --print-libgcc-file-name /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/libgcc.a Now: [root@gene gcc-3.2]# /usr/local/bin/g++ --print-libgcc-file-name /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/libgcc.a I have Mandrake Linux, but I think Mathieu mentioned he was using Mandrake without problems, so I don't know if that can be blamed. Any ideas what I should try next? Thanks, Harri On Wed, 16 Oct 2002, Luis Ibanez wrote: > > > Hi Harri, > > > Sorry to say this but...gcc3.2 is working for me. > > > I built gcc-3.2 from the sources on a RedHat 7.1 > using an existing gcc-3.0.2. > > > Here are the options I used to configure gcc 3.2 > > configure --prefix=/usr/local > --enable-shared > --enable-threads > --enable-languages=c,c++,f77 > --enable-version-specific-runtime-libs > > The I configured ITK without any modification to > the sources. > > The CMake options used were: > > - Build Shared Libraries > - No Examples > > It built without problems. > > ----- > > My guess is that there maybe a configuration > problem with your gcc-3.2 compiler. > > Are you using the compiler that comes directly with > your Linux distribution ? > > or is it one that you build out of the sources ? > > -- > > Could you please try the following command: > > /usr/local/bin/g++ --print-libgcc-file-name > > and let us know what you get. > > Here is what I got as result (since my gcc3.2 was > installed in /usr/local ): > > /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/libgcc.a > > > > Please let us know if you find any hints. > > > > Thanks > > > Luis > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From salah@gris.uni-tuebingen.de Thu Oct 17 15:39:25 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Thu, 17 Oct 2002 16:39:25 +0200 Subject: [Insight-users] How can I know that an itk object (filter, reader, or writer) has finished his work??? Message-ID: <005101c275ea$fdd83fc0$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_004E_01C275FB.C146D100 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable dear friends, How can I know that an itk object (filter, reader, or writer) has = finished his work???=20 Is there some way to determine that?? thanks, Zein=20 ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_004E_01C275FB.C146D100 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
dear friends,
 
How can I know that an itk object = (filter, reader,=20 or writer) has finished his work???
Is there some way to determine = that??
 
thanks,
Zein 
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_004E_01C275FB.C146D100-- From luis.ibanez@kitware.com Thu Oct 17 16:03:27 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 17 Oct 2002 11:03:27 -0400 Subject: [Insight-users] compiling ITK with gcc 3.2 --> OK ! References: Message-ID: <3DAED13F.3080408@kitware.com> Hi Harri, Just to double-check, Did you make sure that the environment variables CXX and CC were pointing to the newly built gcc3.2 ? You have to do something like export CXX=/usr/local/bin/g++ export CC=/usr/local/bin/gcc before running CMake on ITK. You can also verify the compiler used by looking directly inside the CMakeCache.txt file on the ITK binary directory. Please let us know what you find. Thanks Luis ========================================== Harri Tapio Jaalinoja wrote: > Hi Luis, > I tried building my own gcc from sources I downloaded from www.gnu.org ftp > server, with the options you listed, and the thing still gets stuck > exactly like before. > > Earlier today: > [hajaalin@gene Build]$ /usr/bin/g++ --print-libgcc-file-name > /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/libgcc.a > > Now: > [root@gene gcc-3.2]# /usr/local/bin/g++ --print-libgcc-file-name > /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/libgcc.a > > I have Mandrake Linux, but I think Mathieu mentioned he was using Mandrake > without problems, so I don't know if that can be blamed. > > Any ideas what I should try next? > > Thanks, > Harri > > From luis.ibanez@kitware.com Thu Oct 17 16:12:24 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 17 Oct 2002 11:12:24 -0400 Subject: [Insight-users] How can I know that an itk object (filter, reader, or writer) has finished his work??? References: <005101c275ea$fdd83fc0$aeb00286@wsigris.unituebingen.de> Message-ID: <3DAED358.2040605@kitware.com> Hi Zein, Yes, ITK filters send events when they are done processing data. The it::Event to check for is "EndEvent()". You can setup an itk::Command to Observe the filter in question and react whenever the itk::EndEvent() is sent. An example on how to do this can be seen in Insight/Auxiliary/FltkImageViewer/fltkLightButton.cxx It could look like myListenerClassType myListenerClass; // see details below (**) typedef itk::SimpleMemberCommand< myListenerClassType > CommandType; CommandType::Pointer command = CommandType::New(); command->SetCallbackFunction( & mylistereclass, & myListenerClassType::FilterFinished ); filter->AddObserver( itk::EndEvent(), command.GetPointer() ); ----- (**) This assuming that you have a class class myListenerClassType { public: void FilterFinished() { // here the code you want to execute when the // filter finished. } }; Other typical events are: StartEvent(); ProgressEvent(); IterationEvent(); Please let us know if you have further questions, Thanks Luis ============================================================= Zein Salah wrote: > dear friends, > > > > How can I know that an itk object (filter, reader, or writer) has > finished his work??? > > Is there some way to determine that?? > > > > thanks, > > Zein > > > > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 > From t.boettger@dkfz-heidelberg.de Thu Oct 17 16:24:02 2002 From: t.boettger@dkfz-heidelberg.de (Th. Boettger) Date: Thu, 17 Oct 2002 17:24:02 +0200 Subject: [Insight-users] SphereSource Message-ID: Hallo everybody, I use SphereSource to create an initial mesh and don't know what the scale and center parameters are good for. It sounds like setting the center of the sphere to the specified point. But in which coordinate system will this point be? It doesn't make sense to me. It think I want to use the resulting mesh, which doesn't remember where its center during ceration time was. Could anyone point out what those methods are good for? Thanks, Thomas --- Dipl.-Inform. Thomas Boettger Deutsches Krebsforschungszentrum (German Cancer Research Center) Div. Medical and Biological Informatics H0100 Tel: (+49) 6221-42 2328 Im Neuenheimer Feld 280 Fax: (+49) 6221-42 2345 D-69120 Heidelberg e-mail: t.boettger@dkfz.de Germany http://www.dkfz.de/mbi/people/thomasb.shtml From harri.jaalinoja@helsinki.fi Thu Oct 17 16:53:32 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Thu, 17 Oct 2002 18:53:32 +0300 (EET DST) Subject: [Insight-users] compiling ITK with gcc 3.2 --> OK ! In-Reply-To: <3DAED13F.3080408@kitware.com> Message-ID: Thank you! This was a good double check, I did use the new gcc, but I used it for both CC and CXX. I guess this is something I must be embarrassed about, I figured the Gnu Compiler Collection would find the appropriate tool. Now I don't understand how the compilation ever got as far as it did. In fact, Mathieu saw this already yesterday, but I didn't pay attention, because at least it was starting to compile ok. Anyway, now I'm all set to start learning the API, I hope to come up with less elementary problems ;) Thanks, Harri On Thu, 17 Oct 2002, Luis Ibanez wrote: > > Hi Harri, > > Just to double-check, > > Did you make sure that the environment variables > CXX and CC were pointing to the newly built gcc3.2 ? > > You have to do something like > > export CXX=/usr/local/bin/g++ > export CC=/usr/local/bin/gcc > > before running CMake on ITK. > > You can also verify the compiler used by looking > directly inside the CMakeCache.txt file on the > ITK binary directory. > > Please let us know what you find. > > > Thanks > > > Luis > > > > ========================================== > > > Harri Tapio Jaalinoja wrote: > > Hi Luis, > > I tried building my own gcc from sources I downloaded from www.gnu.org ftp > > server, with the options you listed, and the thing still gets stuck > > exactly like before. > > > > Earlier today: > > [hajaalin@gene Build]$ /usr/bin/g++ --print-libgcc-file-name > > /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/libgcc.a > > > > Now: > > [root@gene gcc-3.2]# /usr/local/bin/g++ --print-libgcc-file-name > > /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/libgcc.a > > > > I have Mandrake Linux, but I think Mathieu mentioned he was using Mandrake > > without problems, so I don't know if that can be blamed. > > > > Any ideas what I should try next? > > > > Thanks, > > Harri > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From millerjv@crd.ge.com Thu Oct 17 17:50:18 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Thu, 17 Oct 2002 12:50:18 -0400 Subject: [Insight-users] Hint: Tapping into ITK pipelines to visualize intermediate result s with VTK Message-ID: This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C275FD.466CCB1C Content-Type: text/plain; charset="iso-8859-1" Several of ITK's filters are designed so at the end of each iteration in the algorithm, the output of the filter contains the "results so far". For example, the finite difference filters (level sets, etc.) trigger an IterationEvent as well as a ProgressEvent() so that you can tap into the output of the current iteration as the filter is executing. I put together a little application that shows a levelset expanded over an image. To do this, I originally tied the output of the levelset filter to a VTK pipeline to run MarchingSquares to extract the zero level set and display the original image. This used the standard Exporter/Importer facilities of VTK and ITK and wired the pipeline methods together so Update() would propagate between VTK and ITK filters. I tied a callback to the IterationEvent that told my VTK viewer to render. Unfortunately, telling a VTK viewer to render causes an Update() to propagate up the pipeline. But since the pipeline is already updating (since the level set code was running), the update mechanism aborted and not data was drawn. To address this, I separated the two pipelines. The ITK pipeline read the data, preprocessed the data, and ran the level set algorithm. A separate pipeline was used to export data from ITK to VTK and to visualize the data. To separate the pipelines, I created an itk::Image and essentially "grafted" the output of the levelset filter into this image. (This copied the regions, spacing, origin, and passed a reference to the pixel container from the output of the level to this separate image). I then passed this extra image through the standard ITK exporters and VTK importers. This extra image did not have to copy the bulk pixel data (since I just passed a reference to the pixel container) but it also did not have a "source" so the VTK pipeline could run asynchronously with the ITK pipeline. Now in my iteration callback, I reconfigured this extra image (copying regions, spacing, origin, and reference to the pixel container), and told VTK to render. When the examples/applications reconfiguration is complete, I'll put this application in as an example. Jim Miller _____________________________________ Visualization & Computer Vision GE Research Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@research.ge.com james.miller@research.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 ------_=_NextPart_001_01C275FD.466CCB1C Content-Type: text/html; charset="iso-8859-1"
Several of ITK's filters are designed so at the end of each iteration in the algorithm, the output of the filter contains the "results so far".  For example, the finite difference filters (level sets, etc.) trigger an IterationEvent as well as a ProgressEvent() so that you can tap into the output of the current iteration as the filter is executing.
 
I put together a little application that shows a levelset expanded over an image.  To do this, I originally tied the output of the levelset filter to a VTK pipeline to run MarchingSquares to extract the zero level set and display the original image. This used the standard Exporter/Importer facilities of VTK and ITK and wired the pipeline methods together so Update() would propagate between VTK and ITK filters.
 
I tied a callback to the IterationEvent that told my VTK viewer to render. 
 
Unfortunately, telling a VTK viewer to render causes an Update() to propagate up the pipeline.  But since the pipeline is already updating (since the level set code was running), the update mechanism aborted and not data was drawn.
 
To address this, I separated the two pipelines.  The ITK pipeline read the data, preprocessed the data, and ran the level set algorithm.  A separate pipeline was used to export data from ITK to VTK and to visualize the data.  To separate the pipelines, I created an itk::Image and essentially "grafted" the output of the levelset filter into this image.  (This copied the regions, spacing, origin, and passed a reference to the pixel container from the output of the level to this separate image).  I then passed this extra image through the standard ITK exporters and VTK importers. This extra image did not have to copy the bulk pixel data (since I just passed a reference to the pixel container) but it also did not have a "source" so the VTK pipeline could run asynchronously with the ITK pipeline.
 
Now in my iteration callback, I reconfigured this extra image (copying regions, spacing, origin, and reference to the pixel container), and told VTK to render.

When the examples/applications reconfiguration is complete, I'll put this application in as an example.   

Jim Miller
_____________________________________
Visualization & Computer Vision
GE Research
Bldg. KW, Room C218B
P.O. Box 8, Schenectady NY 12301

millerjv@research.ge.com

james.miller@research.ge.com
(518) 387-4005, Dial Comm: 8*833-4005,
Cell: (518) 505-7065, Fax: (518) 387-6981

 

 
------_=_NextPart_001_01C275FD.466CCB1C-- From ghamarneh@yahoo.com Thu Oct 17 18:19:34 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Thu, 17 Oct 2002 13:19:34 -0400 (EDT) Subject: [Insight-users] 3D Registration In-Reply-To: Message-ID: <20021017171934.35859.qmail@web11505.mail.yahoo.com> Hi, I am interested in getting a rough idea on how long it takes to register two 3D volumes using ITK. I understand that this depends on many factors. Could those of you who have tried it provide me with feedback on their experience, perhaps by stating: time needed, computer/OS specs., spatial transformation/DOF, dimension of images, etc, in a line or two, Your feedback is very much appreciated, /Ghassan Ghassan Hamarneh, PhD Hospital for Sick Children Toronto, Canada ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From luis.ibanez@kitware.com Thu Oct 17 19:22:47 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 17 Oct 2002 14:22:47 -0400 Subject: [Insight-users] Registration of 3D images Message-ID: <3DAEFFF7.6040005@kitware.com> Hi Ghassan, As you already said, Performance of registration methods depends on many factors. In general, you have to go through a process of fine-tunning parameters if you want to get the best out of a registration method. Here is however, a nominal time that will give you an idea of the order of magnitude for the registration time. This is running an existing example in ITK: Insight/Examples/MultiResMIRegistration Which performs registration of 3D images using - Multiresolution in a pyramid with 5 levels - MutualInformation metric - Affine transform (which in 3D == 12 Degrees of Freedom) - GradientDescent optimizer 2500 iterations per level Applying this method to two BrainWeb images in our ftp site: - brainweb165a10f17.raw - brainweb165a10f17Rot10Tx15.raw Where the second image is a version of the first one manually rotated 10 degrees and translated 15 mm. The dimensions (in pixels) of these images are 181 x 217 x 181 with pixel spacings = 1.0 x 1.0 x 1.0 mm The full processing took (as timed with Unix 'time'): 186.81s user 1.48s system 88% cpu 3:33.13 total That is: roughtly 3 minutes. This was executed in a single processor Pentium 4 at 1.8Ghz with 512Mb RAM. Under Linux Redhat 7.1, compiled with gcc3.0.2. The program was compiled for debugging (without any optimization). The results were: Overall transform matrix: 0.984805 0.173661 -5.92032e-05 -0.173661 0.984805 -9.64365e-05 4.15563e-05 0.000105253 1.0 Overall transform offset: -14.9961 0.0267664 -0.0157536 You can verify that 0.1736 is about the sin(10 deg) and the translation of -14.99 is quite close to the expected -15.0 value. Please let us know if you have further questions. Thanks Luis =============================================================== Hi, I am interested in getting a rough idea on how long it takes to register two 3D volumes using ITK. I understand that this depends on many factors. Could those of you who have tried it provide me with feedback on their experience, perhaps by stating: time needed, computer/OS specs., spatial transformation/DOF, dimension of images, etc, in a line or two, Your feedback is very much appreciated, /Ghassan Ghassan Hamarneh, PhD Hospital for Sick Children Toronto, Canada From cates@sci.utah.edu Thu Oct 17 21:27:10 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Thu, 17 Oct 2002 14:27:10 -0600 (MDT) Subject: [Insight-users] Re: [Insight-developers] Hint: Tapping into ITK pipelines to visualize intermediate result s with VTK In-Reply-To: Message-ID: Very cool. I'll be anxious to see the code. Luis and I have talked about modifying finite difference base classes to better support this type of interactivity. One idea was to allow a user to pause/resume (perhaps even with modified parameters) the solver through the iteration event callback mechanism. Coupled with real-time rendering, this would allow true interactive control of the solution, i.e. you would see the surface evolve and could stop it at any point to change curvature terms, add more iterations, modify the speed function, etc. Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Thu, 17 Oct 2002, Miller, James V (Research) wrote: > Several of ITK's filters are designed so at the end of each iteration in the algorithm, the output of > the filter contains the "results so far". For example, the finite difference filters (level sets, > etc.) trigger an IterationEvent as well as a ProgressEvent() so that you can tap into the output of > the current iteration as the filter is executing. > > I put together a little application that shows a levelset expanded over an image. To do this, I > originally tied the output of the levelset filter to a VTK pipeline to run MarchingSquares to extract > the zero level set and display the original image. This used the standard Exporter/Importer > facilities of VTK and ITK and wired the pipeline methods together so Update() would propagate between > VTK and ITK filters. > > I tied a callback to the IterationEvent that told my VTK viewer to render. > > Unfortunately, telling a VTK viewer to render causes an Update() to propagate up the pipeline. But > since the pipeline is already updating (since the level set code was running), the update mechanism > aborted and not data was drawn. > > To address this, I separated the two pipelines. The ITK pipeline read the data, preprocessed the > data, and ran the level set algorithm. A separate pipeline was used to export data from ITK to VTK > and to visualize the data. To separate the pipelines, I created an itk::Image and essentially > "grafted" the output of the levelset filter into this image. (This copied the regions, spacing, > origin, and passed a reference to the pixel container from the output of the level to this separate > image). I then passed this extra image through the standard ITK exporters and VTK importers. This > extra image did not have to copy the bulk pixel data (since I just passed a reference to the pixel > container) but it also did not have a "source" so the VTK pipeline could run asynchronously with the > ITK pipeline. > > Now in my iteration callback, I reconfigured this extra image (copying regions, spacing, origin, and > reference to the pixel container), and told VTK to render. > > When the examples/applications reconfiguration is complete, I'll put this application in as an > example. > > Jim Miller > _____________________________________ > Visualization & Computer Vision > GE Research > Bldg. KW, Room C218B > P.O. Box 8, Schenectady NY 12301 > > millerjv@research.ge.com > > james.miller@research.ge.com > (518) 387-4005, Dial Comm: 8*833-4005, > Cell: (518) 505-7065, Fax: (518) 387-6981 > > > > > From anast.jm@pg.com Thu Oct 17 22:41:58 2002 From: anast.jm@pg.com (anast.jm@pg.com) Date: Thu, 17 Oct 2002 17:41:58 -0400 Subject: [Insight-users] AntiAliasBinaryImageFilter - ViewOutputVTK prob Message-ID: In the example, the ViewOutputVTK.tcl script seems to be missing a "package require vtk" to get it to run (at least on my system). In addition I'm using vtk4.1.1 of 9/3/2002 (r1.1326) and the script ViewOutputVTK4.1.1.tcl gives the following error. vtkTkRenderWidget Unknown option: GetImageViewer Try: configure or GetRenderWindow while executing "$vtkiw GetImageViewer" (procedure "::vtk::bind_tk_imageviewr_widget" line 3) etc. I'm not real familiar with the TKRenderWidgets so this is just a heads up....the non-vtk4.1.1 version works fine fyi...john From cates@sci.utah.edu Thu Oct 17 22:54:50 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Thu, 17 Oct 2002 15:54:50 -0600 (MDT) Subject: [Insight-users] AntiAliasBinaryImageFilter - ViewOutputVTK prob In-Reply-To: Message-ID: Hi, I've not touched this example in a while. I'll have a look and update it. Thanks, Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Thu, 17 Oct 2002 anast.jm@pg.com wrote: > In the example, the ViewOutputVTK.tcl script seems to be missing a "package > require vtk" to get it to run (at least on my system). > > In addition I'm using vtk4.1.1 of 9/3/2002 (r1.1326) and the script > ViewOutputVTK4.1.1.tcl gives the following error. > > vtkTkRenderWidget Unknown option: GetImageViewer > Try: configure or GetRenderWindow > while executing > "$vtkiw GetImageViewer" > (procedure "::vtk::bind_tk_imageviewr_widget" line 3) > etc. > > I'm not real familiar with the TKRenderWidgets so this is just a heads up....the > non-vtk4.1.1 version works fine > > fyi...john > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From salah@gris.uni-tuebingen.de Fri Oct 18 12:46:26 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Fri, 18 Oct 2002 13:46:26 +0200 Subject: [Insight-users] reflecting an image Message-ID: <004d01c2769b$fdf7d040$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_004A_01C276AC.C1534EB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable hello all, Can I reflect a 3d volume around the z-axis. in other words, to read the = slices of the image in reverse order . Do anybody have an idea. Thanks, Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_004A_01C276AC.C1534EB0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
hello all,
 
Can I reflect a 3d volume around the = z-axis. in=20 other words, to read the slices of the image in reverse order . Do = anybody have=20 an idea.
 
Thanks,
 
Zein
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_004A_01C276AC.C1534EB0-- From luis.ibanez@kitware.com Fri Oct 18 13:07:16 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 08:07:16 -0400 Subject: [Insight-users] reflecting an image References: <004d01c2769b$fdf7d040$aeb00286@wsigris.unituebingen.de> Message-ID: <3DAFF974.9020205@kitware.com> Hi Zein, You can read it with any of the readers and then use the itk::ReflectImageFilter http://public.kitware.com/Insight/Doxygen/html/classitk_1_1ReflectImageFi= lter.html use SetDirection(2) to select the reflection along the Z axis. As ITK is N-D, the axis {x,y,z} are associated to indices {0,1,2}. Luis =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Zein Salah wrote: > hello all, >=20 > =20 >=20 > Can I reflect a 3d volume around the z-axis. in other words, to read th= e=20 > slices of the image in reverse order . Do anybody have an idea. >=20 > =20 >=20 > Thanks, >=20 > =20 >=20 > Zein >=20 > =20 >=20 > =20 >=20 > ->8<------------->8<------------->8<------------->8<------------->8<---= ---------->8<- > Zein I. Salah > Universit=E4t T=FCbingen, WSI-GRIS > Sand 14 > 72076 T=FCbingen > Email: salah@gris.uni-tuebingen.de = =20 > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 >=20 From R.Fureder@exeter.ac.uk Fri Oct 18 14:18:20 2002 From: R.Fureder@exeter.ac.uk (=?iso-8859-1?Q?Reinhold_F=FCreder?=) Date: Fri, 18 Oct 2002 14:18:20 +0100 Subject: [Insight-users] DICOM 3D Reader Attached. Problems in ImageFunction, RawImageIO Message-ID: <007f01c276a8$d45097b0$b0f4ad90@janus> This is a multi-part message in MIME format. ------=_NextPart_000_007C_01C276B1.35F87700 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi, 1) Attached is the patched DicomImageIO which is now able to read the most basic 3D dicom files as before. That means the image must meet the following requirements: * either 8 or 16 bit per pixel (not 12) * no RLE or JPEG compression New is the check for: * frames * spacing between slices & slice thickness * transfer syntax UID (littel vs big endian; compression) It is not perfect but works! -------- (Comment for the other points below: I use MSVC 6.0) -------- 2) ImageFunction (itkimagefunction.h): May it be that there is one include missing? Because if I include #include in my own file (probably before the include or usage of the above class) the following error doesn't pop up: d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: 'GetImageDimension' : is not a member of 'itk' d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see reference to class template instantiation 'itk::ImageFunction' being compiled ... (and so on) -------- 3) RawImageIO (itkrawimageio.h): If I want to use RawImageIO (#include ) the link error LNK2005 pops up. Now I use according to one mailinglist posting the compiler flag /FORCE:MULTIPLE to turn them into warnings. Of course, I have to admit, I use other libraries (e.g. wxWindows): msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall std::basic_ifstream >::`vbase destructor'(void)" (??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in swRamImageIOIncludingFile.obj msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall std::basic_ifstream >::open(char const *,int)" (?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z) already defined in swRamImageIOIncludingFile. obj ... (and so on) The solely use of DicomImageIO doesn't make any problems and the difference in reference to the std::string staff is maybe just vs. ? RawImageIO.h: #include #include "itkImageIOBase.h" #include "itkIndex.h" #include "itkImageRegion.h" #include "itkPixelTraits.h" #include "itkByteSwapper.h" #include "itkVersion.h" #include DicomImageIO.h: #include "itkDicomImageIO.h" #include "itkExceptionObject.h" #include "itkByteSwapper.h" #include #include #include #include Thanks, Reinhold ------------------------------ University of Exeter School of Engineering and Computer Science Harrison Building North Park Road Exeter, EX4 4QF UK ------=_NextPart_000_007C_01C276B1.35F87700 Content-Type: application/octet-stream; name="swDicomImageIO.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="swDicomImageIO.zip" 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 AAIAAgB+AAAAMxoAAAAA ------=_NextPart_000_007C_01C276B1.35F87700-- From luis.ibanez@kitware.com Fri Oct 18 15:40:49 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 10:40:49 -0400 Subject: [Insight-users] Re: itkGradientDescentOptimizer References: <20021018094313.59548.qmail@web13705.mail.yahoo.com> Message-ID: <3DB01D71.3030009@kitware.com> Hi digvijay, The gradient descent optimizer implemented in ITK is designed for finding the optimal value of a single valued function of type V = f( P ) = f( x1, x2, x3, .... xn ) V = scalar P = {x1,x2,...,xn} are the parameters of the function to be optimized. They define an N-dimensional parameteric space. The optimizer explores this N-D space following the direction of the gradient of f(). At each N-D point, P={x1,x2,...,xn} the gradient of f(P) is computed as: Gf = {df/dx1, df/dx2,....,df/dxn } This vector (actually a covariant vector) is then used to define a direction along which the optimizer will move to the next position on the parametric space. The lenght of the step is computed using the learning rate. Like P' = P + R * Gf R = scalar = learning rate Gf = N components: gradient of F P = N components: point in the parametric space The same equation is better presented in the doxygen documentation: http://www.itk.org/Insight/Doxygen/html/classitk_1_1GradientDescentOptimizer.html The learning rate defines how big the steps should be in the parametric space. A large learning rate will make optimization faster, but also will make it very unstable since in places with high gradients it may sent the next point too far in the parametric space breaking the continous walk that it is supposed to follow. Small learning rates will be more stable and reliable but will result in slow optimizations. The problem with the learning rate is that it is difficult to find an optimal value for it. If the optimization path crosses regions of high and low gradients the learning rate value may not be apropriate for all the conditions. "Learning Rate" is a bit missleading here since it looks like some training is going on (like in neural networks). This is not the case here, the learning rate parameter is just a multiplier of the gradient. An alternative is to use the RegularStepGradientDescentOptimizer http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepGradientDescentBaseOptimizer.html which is steadily walking at a regular step length regardless of the gradient value. The gradient vector is only used to determine the direction of the step. The step lenght is reduce only when the gradient have sudden changes in direccion. (in that case the step lenght is divided by 2 at each direction change). Please let us know if you have further questions, Thanks Luis ============================================== digvijay singh wrote: > Hi all... > I am trying to use the itkgradientdescent optimizer > Could somebody please explain > 1-)The use of GetDerivative: i have an inkling that it > is used to give system constraints but i am not sure. > 2-)Is the learning rate applied to just the error > function or to the individual parameters as well > Any info would be appreciated. > thanks > digvijay > > From luis.ibanez@kitware.com Fri Oct 18 16:28:37 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 11:28:37 -0400 Subject: [Insight-users] Re: [Insight-users]... Problems in ImageFunction References: <007f01c276a8$d45097b0$b0f4ad90@janus> Message-ID: <3DB028A5.7060003@kitware.com> Hi Reinhold, Yes, there is an include missing, but.... it is arguably that it is up to the user to include it. This is Generic Programming issue: The ImageFunction is templated over an Image type, However it is up to you to select what this image type means. As long as your image type respectes the API of the itk::Image you can use any definition. If you look closer at the definition of the ImageFunction class, there is nothing itk::Image specific.... except for the GetImageDimension helper class that is producing the error messages. This helper class is required in order to cover for a deficiency in VC++ and Borland for getting enum values from template parameters. The helper class is defined in the itkImageBase.h file and it is the only link between the itk::ImageFunction and the itk::Image. We could get rid of the dependendcy by moving the GetImageDimension helper class to a basic include like itkMacro.h... but it may be simpler to follow your suggestion and include the itkImageBase.h So, the include itkImageBase.h has been added to itkImageFunction.h Thanks for pointing this out, Luis ============================================================= Reinhold Füreder wrote: > ...snip > -------- > (Comment for the other points below: I use MSVC 6.0) > -------- > 2) ImageFunction (itkimagefunction.h): > May it be that there is one include missing? Because if I include #include > in my own file (probably before the include or usage of the > above class) the following error doesn't pop up: > > d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039: > 'GetImageDimension' : is not a member of 'itk' > d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see > reference to class template instantiation > 'itk::ImageFunction' being compiled > ... (and so on) > -------- ...snip > > Thanks, > Reinhold > > ------------------------------ > University of Exeter > School of Engineering and Computer Science > Harrison Building > North Park Road > Exeter, EX4 4QF > UK > > From luis.ibanez@kitware.com Fri Oct 18 16:52:42 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 11:52:42 -0400 Subject: [Insight-users] Problems RawImageIO References: <007f01c276a8$d45097b0$b0f4ad90@janus> Message-ID: <3DB02E4A.5010804@kitware.com> Hi Reinhold, The usual suspects for this error are: 1) If compilation modes are mixed in the same project. For example, compiling some .obj for Debug/Multithreading and others for Debug/SingleThreading. You may want to verify that all the .obj files are compiled with the same settings. This includes your wxWindows built. 2) VC++ has fuzzy rules to define whether the old or the new iostream specification should be used. The rule something of the sort: if #include is found before #include use the old libraries. else use the new libraries In this case the header involved seems to be . So, please try to make sure that #include is the first header included. Note that this is done in the itkRawImageIO.h. --- BTW is this a typo error in your email ? or you are actually including itkDicomImageIO.h in itkDicomImageIO.h .... ? Please let us know if you find further problems, Thank Luis ================================================================ Reinhold Füreder wrote: > ...snip > -------- > 3) RawImageIO (itkrawimageio.h): > If I want to use RawImageIO (#include ) the link error > LNK2005 pops up. Now I use according to one mailinglist posting the compiler > flag /FORCE:MULTIPLE to turn them into warnings. Of course, I have to admit, > I use other libraries (e.g. wxWindows): > > msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall > std::basic_ifstream >::`vbase > destructor'(void)" > (??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined > in swRamImageIOIncludingFile.obj > msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall > std::basic_ifstream >::open(char const > *,int)" (?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z) > already defined in swRamImageIOIncludingFile. > obj > ... (and so on) > > The solely use of DicomImageIO doesn't make any problems and the difference > in reference to the std::string staff is maybe just vs. ? > RawImageIO.h: > #include > #include "itkImageIOBase.h" > #include "itkIndex.h" > #include "itkImageRegion.h" > #include "itkPixelTraits.h" > #include "itkByteSwapper.h" > #include "itkVersion.h" > #include > > DicomImageIO.h: > #include "itkDicomImageIO.h" > #include "itkExceptionObject.h" > #include "itkByteSwapper.h" > #include > #include > #include > #include > > Thanks, > Reinhold > > ------------------------------ > University of Exeter > School of Engineering and Computer Science > Harrison Building > North Park Road > Exeter, EX4 4QF > UK > > From ghamarneh@yahoo.com Fri Oct 18 19:44:35 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Fri, 18 Oct 2002 14:44:35 -0400 (EDT) Subject: [Insight-users] Problem building ITK on linux Message-ID: <20021018184435.1052.qmail@web11503.mail.yahoo.com> I am new to ITK, my appologies if this is trivial: Does anyone know why am I getting/how to resolve the foolowing:? : : : cmake.depends is up-to-date /lhome/ghassan/Insight/Examples/vtkITK/Common: building default_target /lhome/ghassan/VTK/bin/./vtkWrapPython /lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransform.h 1 /lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransformPython.cxx Error opening hint file 1 make[7]: *** [/lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransformPython.cxx] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Common] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_vtkITK] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Examples] Error 2 make: *** [default_target] Error 2 /Ghassan Ghassan Hamarneh, PhD Hospital for Sick Children Toronto, Canada ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From dean.inglis@on.aibn.com Fri Oct 18 19:54:10 2002 From: dean.inglis@on.aibn.com (Dean Inglis) Date: Fri, 18 Oct 2002 14:54:10 -0400 Subject: [Insight-users] GlutMaster build err Message-ID: Hi, I'm not sure if GlutMaster is part of the current CVS build but I was curious so: my vtk cmake cache defines both GLUT_LIBRARY:STRING=glut32 GLU_LIBRARY:STRING=import32 so that the vtk ftgl demos build with glu/glut. GLUT_FOUND is not part of CMake 1.4.5, but is part of the current cmake CVS, so I added GLUT_FOUND:STRING=YES to my itk cmake cache. (maybe instead of GLUT_FOUND the CMakeLists.txt in GlutMaster could be something along the lines IF (GLU_LIBRARY AND GLUT_LIBRARY)?) FYI, GlutMaster starts to build on Borland and dies with: Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland c:\Builder\Insight\Utilities\GlutMaster\itkGlutMaster.cxx: Error E2337 C:\Program Files\Borland\CBuilder5\Include\stdlib.h 584: Only one of a set of overloaded functions can be "C" Dean ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dean Inglis, Ph.D. - Centre for Appendicular - - Magnetic Resonance Imaging Studies - 25 Charlton Avenue East, Unit 610 Hamilton, ONT, L8N 1Y2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From luis.ibanez@kitware.com Fri Oct 18 20:10:08 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 15:10:08 -0400 Subject: [Insight-users] Problem building ITK on linux References: <20021018184435.1052.qmail@web11503.mail.yahoo.com> Message-ID: <3DB05C90.20901@kitware.com> Hi Ghassan, It looks like you are building ITK with VTK support. Your VTK was built with Python/Tcl wrapping enabled. ITK has some examples that wrap code on Tcl in order to use VTK visualization. Note that this is not the official ITK - Tcl wrapping, these examples are using Tcl as a GUI and taking advantage of the VTK Tcl wrapping. There is a "hints" file in VTK that provides configuration details for wrapping. ITK is looking for this "hints" file. You will find this file in : VTK/Wrapping/hints So, just run CMake (on ITK) and select "Advanced" then, look for the CMake variable: VTK_WRAP_HINTS and make sure it is pointing to the file VTK/Wrapping/hints Please let us know if you find any problems, Thanks Luis =========================================================== Ghassan Hamarneh wrote: > I am new to ITK, my appologies if this is trivial: Does anyone know why am I > getting/how to resolve the foolowing:? > > : > : > : > cmake.depends is up-to-date > /lhome/ghassan/Insight/Examples/vtkITK/Common: building default_target > /lhome/ghassan/VTK/bin/./vtkWrapPython > /lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransform.h > 1 > /lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransformPython.cxx > Error opening hint file 1 > make[7]: *** > [/lhome/ghassan/Insight/Examples/vtkITK/Common/vtkITKMutualInformationTransformPython.cxx] > Error 1 > make[6]: *** [default_target] Error 2 > make[5]: *** [default_target_Common] Error 2 > make[4]: *** [default_target] Error 2 > make[3]: *** [default_target_vtkITK] Error 2 > make[2]: *** [default_target] Error 2 > make[1]: *** [default_target_Examples] Error 2 > make: *** [default_target] Error 2 > > /Ghassan > > Ghassan Hamarneh, PhD > Hospital for Sick Children > Toronto, Canada > > ______________________________________________________________________ > Post your free ad now! http://personals.yahoo.ca > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From luis.ibanez@kitware.com Fri Oct 18 20:26:11 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 15:26:11 -0400 Subject: [Insight-users] GlutMaster build err References: Message-ID: <3DB06053.3050008@kitware.com> Hi Dean, GlutMaster was recently added to Insight/Utilities It is intended to support a minimal viewer for 2D and 3D images. The hope is to provide a simple rapid start for visualization. ----------------------- The ImageViewer class can be used like: typedef itk::Image< int, 3 > ImageType; typedef itk::ImageViewer< ImageType > ViewerType; ViewerType::Pointer viewer = ViewerType::New(); viewer->SetInput( filter->GetOutput() ); viewer->Update(); ViewerType::StartInteraction(); This will display a simple window with a slice of the 3D image. The following key are enabled: 'f' = forward = move to next slice 'b' = backward = move to previous slice 'x' = cut slices along X, that is the YZ plane 'y' = cut slices along Y, that is the XZ plane 'z' = cut slices along Z, that is the XY plane if the image is 2D all the keys are ignored ------------------------- GLUT_FOUND is not a variable that you should manipulate in your cache. This variable is set directly by CMake following the rules in CMake/Modules/FindGLUT.cmake IFF CMake finds the file: - glut32.dll - GL/glut.h it will set GLUT_FOUND to "true" for you. --- ITK CMakeLists.txt are using the value of GLUT_FOUND to figure out if glut is available or not. If GLUT is available, then GlutMaster is built and the ImageViewer in Image/Code/IO is built too. If GLUT is not available these classes are simply ignored. The right way of enabling the itk::ImageViewer (and GlutMaster) to build is to run CMake, select "advanced" and make sure that the following two variables are set correctly: 1) GLUT_glut_LIBRARY 2) GLUT_INCLUDE_DIR GLUT_glut_LIBRARY should have the full path to glut32 GLUT_INCLUDE_DIR should have the path to GL/glut.h (if your glut.h is installed in /home/inglis/src/GL/glut.h then this variable should be set to /home/inglis/src ) Once these two variables are correctly set, CMake will internally enable "GLUT_FOUND" and the value will control the build process of ITK. .... About the Borland problem.... it is hard to know,... it may be something that needs to be fixed in GlutMaster.. Could you please verify the CMake configuration first. If the problem with Borland persists we can track it and figure out a solution. Please let us know what you find, Thanks Luis ================================================ Dean Inglis wrote: > Hi, > > I'm not sure if GlutMaster is part of the > current CVS build but I was curious so: > my vtk cmake cache defines both > GLUT_LIBRARY:STRING=glut32 > GLU_LIBRARY:STRING=import32 > so that the vtk ftgl demos build with glu/glut. > GLUT_FOUND is not part of CMake 1.4.5, but is > part of the current cmake CVS, so I added > GLUT_FOUND:STRING=YES to my itk cmake cache. > (maybe instead of GLUT_FOUND the CMakeLists.txt > in GlutMaster could be something along the lines > IF (GLU_LIBRARY AND GLUT_LIBRARY)?) > > FYI, GlutMaster starts to build on Borland and dies with: > Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland > c:\Builder\Insight\Utilities\GlutMaster\itkGlutMaster.cxx: > Error E2337 C:\Program Files\Borland\CBuilder5\Include\stdlib.h 584: Only > one > of a set of overloaded functions can be "C" > > Dean > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Dean Inglis, Ph.D. > - Centre for Appendicular - > - Magnetic Resonance Imaging Studies - > 25 Charlton Avenue East, Unit 610 > Hamilton, ONT, L8N 1Y2 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From dean.inglis@on.aibn.com Fri Oct 18 20:39:45 2002 From: dean.inglis@on.aibn.com (Dean Inglis) Date: Fri, 18 Oct 2002 15:39:45 -0400 Subject: [Insight-users] GlutMaster build err In-Reply-To: <3DB06053.3050008@kitware.com> Message-ID: Hi Luis, thanks for the detailed info. As I mentioned, GLUT_FOUND is not part of the current official CMake release 1.4.5, at least not in the windows source code release. So build of GLutMaster will not work unless you are suggesting building ITK with the nightly CVS release, which is usually not recommended (?). Dean From luis.ibanez@kitware.com Fri Oct 18 22:09:21 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 18 Oct 2002 17:09:21 -0400 Subject: [Insight-users] GlutMaster build err References: Message-ID: <3DB07881.4050508@kitware.com> Hi Dean, You are right, GLUT_FOUND was added to Modules/FindGLUT.cmake after the 1.4.5 release. So we cannot use it in ITK yet. ITK should build with the latest release of CMake. It seems that the way to go is to add a GLUT_FOUND directly in the main ITK CMakeLists.txt file. Following what you proposed, it will be something like: INCLUDE(${CMAKE_ROOT}/Modules/FindGLUT.cmake) IF( GLUT_LIBRARY AND GLUT_INCLUDE_PATH) SET(GLUT_FOUND 1) IF( GLUT_LIBRARY AND GLUT_INCLUDE_PATH) Thanks for pointing this out, Luis ==================================================== Dean Inglis wrote: > Hi Luis, > > thanks for the detailed info. As I mentioned, > GLUT_FOUND is not part of the current official > CMake release 1.4.5, at least not in the > windows source code release. So build of GLutMaster > will not work unless you are suggesting building ITK > with the nightly CVS release, which is usually not > recommended (?). > > Dean > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From mafeng@hotmail.com Fri Oct 18 22:53:09 2002 From: mafeng@hotmail.com (Feng Ma) Date: Fri, 18 Oct 2002 17:53:09 -0400 Subject: [Insight-users] Bugs (maybe) in itkDicomImageIO.cxx and questions Message-ID: Hi, I worked a little bit with file itkDicomImageIO.cxx to read CT dicom files. I found a few place that are possibly bugs. 1. In method CanReadFile(), inputStream is not closed. Nor is it closed in CheckTagTable(). I am not experienced in C++. Does an open stream need not to be closed? 2. In method ReadImageInformation(), array value, spac1value, spac2value are not freed in the end of this method. inFile stream is not closed. Below are my questions. 1. Dicom header size. I printed out m_InputPosition, which is supposed to be the dicom header size. I read one image and got the header size 2522 (which is a 512x512 2 bytes CT image, file size 526812). this number is different from what I got from commecial merge library. The mergelib number is 2524 which is closer to the guess 526812-512x512x2=2524. This happens in many files. Is the header size reported by itkDicomImageIO class possibly wrong? 2. Unable to read image position tag (0x0020 0x0032). This tag is very important to determine the z-value of the dicom image in a volume. When I add a segment of code to read this tag, method GoToTag() simply can not find it. I posted my code segment here. The last few lines in the posted method CheckTagTable() is what I added. I did rewind the file pointer before call GoToTag(). What's could be wrong? Btw, my ITK version is Oct 7 CVS version. Thank you very much. -Feng **** Run output **** fma@ctreg1:/r2net/space_fma1/vhds/test 728 % ../../Devel/ITKDebug/bin/DicomImageViewer /r2net/space_fma2/data/LV00000500/LV00000500_152.dcm Loading File: /r2net/space_fma2/data/LV00000500/LV00000500_152.dcm Can not locate position tag 0x0020 0x0032 Header Size: 2522 ...Done Loading File **** Code segment of CheckTagTable() **** bool DicomImageIO::CheckTagTable(std::ifstream & inputStream,std::list &TableOfTags) const { long int i, j; long int max; Tag tagcurrent; unsigned char c; char chaine[4]; i=0; //0x7FE0 and 0x0010 is the last tag before data pixel if(!DicomImageIO::GoToTheEndOfHeader(inputStream,i,tagcurrent)) { return (false); } else { TableOfTags.push_back(tagcurrent); max=i; //start the reading of the Stream from the begining inputStream.seekg(0); i=0; } ////0x0028 and 0x0010 >> tag before the number of rows if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0010,i,max,tagcurrent)) { return false; } else { TableOfTags.push_back(tagcurrent); } //0x0028 and 0x0011 >> tag before the number of columns if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0011,i,max,tagcurrent)) { return false; } else { TableOfTags.push_back(tagcurrent); } //0x0028 and 0x0030 >> tag before each the value of spacing if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0030,i,max,tagcurrent)) { //if there is no information about the spacing, we set the value compt to 0 tagcurrent.Balise1[1]=0x28; tagcurrent.Balise1[0]=0x00; tagcurrent.Balise2[1]=0x30; tagcurrent.Balise2[0]=0x0; tagcurrent.compt=0; // TableOfTags.push_back(tagcurrent); //start the reading of the Stream from the begining inputStream.seekg(0); i=0; } else { TableOfTags.push_back(tagcurrent); } //0x0028 and 0x0100 >> tag before the number of bits allocated if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0100,i,max,tagcurrent)) { return false; } else { TableOfTags.push_back(tagcurrent); } //0x0028 and 0x0103 >> tag before the place of sample representation if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0103,i,max,tagcurrent)) { return false; } else { TableOfTags.push_back(tagcurrent); } i = 0; inputStream.seekg(0); ////0x0020 and 0x0032 >> tag before value of position if(DicomImageIO::GoToTag( inputStream,0x0020,0x0032, i,max,tagcurrent)){ std::cout << "Position tag located.\n"; } else std::cout << "Can not locate position tag 0x0020 0x0032\n"; return(true); } _________________________________________________________________ Get faster connections -- switch to MSN Internet Access! http://resourcecenter.msn.com/access/plans/default.asp From koosb2@hanmail.net Sun Oct 20 05:45:29 2002 From: koosb2@hanmail.net (=?EUC-KR?B?sbi9wrn8?=) Date: Sun, 20 Oct 2002 13:45:29 +0900 (KST) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Message-ID: <20021020134529.HM.N000000000522x2@www24.hanmail.net> Hi,

I'm trying to use itkVoronoiSegmentationImageFilter combined with itkSimpleFuzzyConnectednessScalarImageFilter.

I made a binary image from itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't figure out how to set itkVoronoiSegmentationImageFilter variables. Here is my source code.

=============================================================
m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());
m_voronoiFilter->TakeAPrior(m_binaryImage);
m_voronoiFilter->SetMean(520);
m_voronoiFilter->SetVar(20);
m_voronoiFilter->SetMeanTolerance(10);
m_voronoiFilter->SetVarTolerance(20);
// m_voronoiFilter->SetNumberOfSeeds(400); // ??
m_voronoiFilter->SetSteps(5);
m_voronoiFilter->Update();
=============================================================

m_binaryImage is calculated from m_rawImageSource and as I expected.
But this code just makes a black image... all zeros.


"¿ì¸® ÀÎÅͳÝ, Daum" http://www.daum.net ¡º Æò»ý¾²´Â ¹«·á ÇѸÞÀÏ³Ý ¡»
ºü¸£´Ù! ÆíÇÏ´Ù! Daum¸Þ½ÅÀú
¸ÅÀϸÅÀÏ ¾²°í °è½ÃÁÒ?
Daum¿£ÅÍÄ«µå
Daumȸ¿øÀÇ Çʼöǰ! ¿Â¿ÀÇÁ ÃÖ°íÀÇ ÇýÅÃ~
From yj76@columbia.edu Sun Oct 20 18:34:32 2002 From: yj76@columbia.edu (Yinpeng Jin) Date: Sun, 20 Oct 2002 13:34:32 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? References: <20021020134529.HM.N000000000522x2@www24.hanmail.net> Message-ID: <002c01c2785e$f3c0e840$75313b80@segment> This is a multi-part message in MIME format. ------=_NextPart_000_0029_01C2783D.6C929880 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: quoted-printable if you use takeaprior, then you don't want to setMean and setVar, those = two parameters will be calculated from the binary mask. and=20 try to use=20 m_voronoiFilter->SetMeanPercentError(PERCENT); m_voronoiFilter->SetVarPercentError(VARPERCENT); in stead of=20 m_voronoiFilter->SetMeanTolerance(10);=20 m_voronoiFilter->SetVarTolerance(20);=20 =20 they are trying to manipulate the same parameter, but usually are more = intuitive to figure. the MeanPercentError could usually be set between 0.1 to 0.3 and the VarPercentError could be between 1 to 3. they don't depends on = your pixel intensity range, while the MeanTolerance and VarTolerance = usually do. Also, you can first output your m_binaryImage to see if it is something = reasonable. the VoronoisegmentationImagefilter will need something at = least represents parts of your target object as the a prior. Try the above, and let me know what happens. Yinpeng. ----- Original Message -----=20 From: =B1=B8=BD=C2=B9=FC=20 To: insight-users@public.kitware.com=20 Sent: Sunday, October 20, 2002 12:45 AM Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Hi,=20 I'm trying to use itkVoronoiSegmentationImageFilter combined with = itkSimpleFuzzyConnectednessScalarImageFilter.=20 I made a binary image from = itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't figure out = how to set itkVoronoiSegmentationImageFilter variables. Here is my = source code.=20 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20 m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());=20 m_voronoiFilter->TakeAPrior(m_binaryImage);=20 m_voronoiFilter->SetMean(520);=20 m_voronoiFilter->SetVar(20);=20 m_voronoiFilter->SetMeanTolerance(10);=20 m_voronoiFilter->SetVarTolerance(20);=20 // m_voronoiFilter->SetNumberOfSeeds(400); // ??=20 m_voronoiFilter->SetSteps(5);=20 m_voronoiFilter->Update();=20 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20 m_binaryImage is calculated from m_rawImageSource and as I expected.=20 But this code just makes a black image... all zeros.=20 =20 "=BF=EC=B8=AE =C0=CE=C5=CD=B3=DD, Daum" http://www.daum.net = =A1=BA =C6=F2=BB=FD=BE=B2=B4=C2 =B9=AB=B7=E1 =C7=D1=B8=DE=C0=CF=B3=DD = =A1=BB =20 =BA=FC=B8=A3=B4=D9! =C6=ED=C7=CF=B4=D9! = Daum=B8=DE=BD=C5=C0=FA =B8=C5=C0=CF=B8=C5=C0=CF =BE=B2=B0=ED =B0=E8=BD=C3=C1=D2? = Daum=BF=A3=C5=CD=C4=AB=B5=E5 Daum=C8=B8=BF=F8=C0=C7 =C7=CA=BC=F6=C7=B0! = =BF=C2=BF=C0=C7=C1 =C3=D6=B0=ED=C0=C7 =C7=FD=C5=C3~=20 =20 _______________________________________________ Insight-users mailing = list Insight-users@public.kitware.com = http://public.kitware.com/mailman/listinfo/insight-users ------=_NextPart_000_0029_01C2783D.6C929880 Content-Type: text/html; charset="ks_c_5601-1987" Content-Transfer-Encoding: quoted-printable
if you use takeaprior, then you don't = want to=20 setMean and setVar, those two parameters will be calculated from the = binary=20 mask.
and
try to use
   =20 m_voronoiFilter->SetMeanPercentError(PERCENT);
   =20 m_voronoiFilter->SetVarPercentError(VARPERCENT);
in stead of =
  =20 m_voronoiFilter->SetMeanTolerance(10);
  =20 m_voronoiFilter->SetVarTolerance(20);
 
they are trying to manipulate the same = parameter,=20 but usually are more intuitive to figure.
the MeanPercentError could usually be = set between=20 0.1 to 0.3
and the VarPercentError could be = between 1 to 3.=20 they don't depends on your pixel intensity range, while the = MeanTolerance and=20 VarTolerance usually do.
Also, you can first output your = m_binaryImage to=20 see if it is something reasonable. the VoronoisegmentationImagefilter = will need=20 something at least represents
parts of your target object as the a=20 prior.
Try the above, and let me know what=20 happens.
Yinpeng.
 
 
----- Original Message -----
From:=20 =B1=B8=BD=C2=B9=FC
To: insight-users@public.kitware.com= =20
Sent: Sunday, October 20, 2002 = 12:45=20 AM
Subject: [Insight-users] using=20 itkVoronoiSegmentationImageFilter ?

Hi,

I'm trying to use = itkVoronoiSegmentationImageFilter=20 combined with itkSimpleFuzzyConnectednessScalarImageFilter.

I = made a=20 binary image from itkSimpleFuzzyConnectednessScalarImageFilter but I = couldn't=20 figure out how to set itkVoronoiSegmentationImageFilter variables. = Here is my=20 source code.=20 =

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20
m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());=20
m_voronoiFilter->TakeAPrior(m_binaryImage);=20
m_voronoiFilter->SetMean(520); =
m_voronoiFilter->SetVar(20);=20
m_voronoiFilter->SetMeanTolerance(10);=20
m_voronoiFilter->SetVarTolerance(20);
//=20 m_voronoiFilter->SetNumberOfSeeds(400); // ??=20
m_voronoiFilter->SetSteps(5);
m_voronoiFilter->Update(); = =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20

m_binaryImage is calculated from m_rawImageSource and as I = expected.=20
But this code just makes a black image... all zeros.


"=BF=EC=B8=AE = =C0=CE=C5=CD=B3=DD, Daum" http://www.daum.net =A1=BA = =C6=F2=BB=FD=BE=B2=B4=C2 =B9=AB=B7=E1 =C7=D1=B8=DE=C0=CF=B3=DD=20 =A1=BB
=BA=FC=B8=A3=B4=D9! =C6=ED=C7=CF=B4=D9!=20 = Daum=B8=DE=BD=C5=C0=FA
=B8=C5=C0=CF=B8=C5=C0=CF = =BE=B2=B0=ED =B0=E8=BD=C3=C1=D2?
Daum=BF=A3=C5=CD=C4=AB=B5=E5
Daum=C8=B8=BF=F8=C0=C7 = =C7=CA=BC=F6=C7=B0! =BF=C2=BF=C0=C7=C1 =C3=D6=B0=ED=C0=C7=20 =C7=FD=C5=C3~
=20 _______________________________________________ Insight-users mailing = list=20 Insight-users@public.kitware.com=20 = http://public.kitware.com/mailman/listinfo/insight-users ------=_NextPart_000_0029_01C2783D.6C929880-- From martin_styner@ieee.org Mon Oct 21 09:23:38 2002 From: martin_styner@ieee.org (Martin Styner) Date: Mon, 21 Oct 2002 10:23:38 +0200 Subject: [Insight-users] AntiAliasBinaryImageFilter - ViewOutputVTK prob References: Message-ID: <3DB3B98A.7080609@ieee.org> This is a multi-part message in MIME format. --Boundary_(ID_5YIBa7CeLUlWPnUcjZbYug) Content-type: text/plain; charset=us-ascii; format=flowed Content-transfer-encoding: 7BIT Hi Josh, John I had the same problem. I changed the vtk tcl script (it works). I've attached it to the email. Regards Martin Joshua Cates wrote: > Hi, > > I've not touched this example in a while. I'll have a look and update it. > > Thanks, > > Josh. > > ______________________________ > Josh Cates > School of Computer Science > University of Utah > Email: cates@sci.utah.edu > Phone: (801) 587-7697 > URL: www.cs.utk.edu/~cates > > > On Thu, 17 Oct 2002 anast.jm@pg.com wrote: > > >>In the example, the ViewOutputVTK.tcl script seems to be missing a "package >>require vtk" to get it to run (at least on my system). >> >>In addition I'm using vtk4.1.1 of 9/3/2002 (r1.1326) and the script >>ViewOutputVTK4.1.1.tcl gives the following error. >> >>vtkTkRenderWidget Unknown option: GetImageViewer >>Try: configure or GetRenderWindow >>while executing >>"$vtkiw GetImageViewer" >>(procedure "::vtk::bind_tk_imageviewr_widget" line 3) >>etc. >> >>I'm not real familiar with the TKRenderWidgets so this is just a heads up....the >>non-vtk4.1.1 version works fine >> >>fyi...john >> >> >>_______________________________________________ >>Insight-users mailing list >>Insight-users@public.kitware.com >>http://public.kitware.com/mailman/listinfo/insight-users >> > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users -- Martin Styner, PhD. Ing. ETH Group Head Medical Image Analysis for Orthopiaedics M.E. Mueller Institute for Biomechanics Center for Computed Assisted Surgery University of Bern Murtenstrasse 35 P.O.Box 30 CH - 3010 Bern Switzerland Tel office: ++41-31-632-0940 , FAX: ++41-31-632-4951 email: Martin.Styner@memot.unibe.ch, martin_styner@ieee.org WWW: http://cranium.unibe.ch/~mstyner --Boundary_(ID_5YIBa7CeLUlWPnUcjZbYug) Content-type: text/plain; name=ViewOutputVTK4.1.1.tcl Content-transfer-encoding: 7BIT Content-disposition: inline; filename=ViewOutputVTK4.1.1.tcl # Copyright (c) 2002 Insight Consortium. All rights reserved. # See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. # # This software is distributed WITHOUT ANY WARRANTY; without even # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the above copyright notices for more information. package require vtk package require vtkinteraction set X 255 set Y 255 set Z 255 set img_data1 "seg_snake.raw" set img_data2 "seg_snake_L.raw" vtkImageReader imgReader1 imgReader1 SetDataExtent 0 $X 0 $Y 0 $Z imgReader1 SetFileName $img_data1 imgReader1 SetDataByteOrderToLittleEndian imgReader1 SetNumberOfScalarComponents 1 imgReader1 SetFileDimensionality 3 imgReader1 SetDataScalarTypeToUnsignedChar vtkMarchingCubes marcher1 marcher1 SetNumberOfContours 1 marcher1 SetValue 0 1.0 marcher1 SetInput [imgReader1 GetOutput] vtkOpenGLPolyDataMapper map1 map1 ScalarVisibilityOff map1 ImmediateModeRenderingOn map1 SetInput [marcher1 GetOutput] vtkRenderer ren1 ren1 SetViewport 0 0 1 1 vtkRenderWindow renWin1 renWin1 AddRenderer ren1 renWin1 SetSize 256 256 vtkRenderWindowInteractor iren1 iren1 SetRenderWindow renWin1 vtkActor blob1 blob1 SetMapper map1 eval [blob1 GetProperty] SetColor 1.0 0.8 0.5 ren1 AddActor blob1 iren1 AddObserver UserEvent {wm deiconify .vtkInteract} iren1 Initialize vtkImageReader imgReader2 imgReader2 SetDataExtent 0 $X 0 $Y 0 $Z imgReader2 SetFileName $img_data2 imgReader2 SetDataByteOrderToLittleEndian imgReader2 SetNumberOfScalarComponents 1 imgReader2 SetFileDimensionality 3 imgReader2 SetDataScalarTypeToFloat vtkMarchingCubes marcher2 marcher2 SetNumberOfContours 1 marcher2 SetValue 0 0.0 marcher2 SetInput [imgReader2 GetOutput] vtkOpenGLPolyDataMapper map2 map2 ScalarVisibilityOff map2 ImmediateModeRenderingOn map2 SetInput [marcher2 GetOutput] vtkRenderer ren2 ren2 SetViewport 0 0 1 1 vtkRenderWindow renWin2 renWin2 AddRenderer ren2 renWin2 SetSize 256 256 vtkRenderWindowInteractor iren2 iren2 SetRenderWindow renWin2 vtkActor blob2 blob2 SetMapper map2 eval [blob2 GetProperty] SetColor 1.0 0.8 0.5 ren2 AddActor blob2 ren2 SetActiveCamera [ren1 GetActiveCamera] iren2 AddObserver UserEvent {wm deiconify .vtkInteract} iren2 Initialize renWin1 Render renWin2 Render wm withdraw . --Boundary_(ID_5YIBa7CeLUlWPnUcjZbYug)-- From salah@gris.uni-tuebingen.de Mon Oct 21 14:26:33 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Mon, 21 Oct 2002 15:26:33 +0200 Subject: [Insight-users] visual c++ question: how can I read the current time of my computer? Message-ID: <00d501c27905$79254c00$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_00D2_01C27916.3C9B0930 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hallo Friends, how can I read the current time of my computer? I use visual c++ I need this to determine hoe long does an algorithm work, so other = solutions are also appreciated. many thanks, zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_00D2_01C27916.3C9B0930 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hallo Friends,
 
how can I read the current time of my = computer? I=20 use visual c++
I need this to determine hoe long does = an algorithm=20 work, so other solutions are also appreciated.
 
many thanks,
zein
 
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_00D2_01C27916.3C9B0930-- From luis.ibanez@kitware.com Mon Oct 21 15:57:19 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 21 Oct 2002 10:57:19 -0400 Subject: [Insight-users] visual c++ question: how can I read the current time of my computer? References: <00d501c27905$79254c00$aeb00286@wsigris.unituebingen.de> Message-ID: <3DB415CF.4020802@kitware.com> Hi Zein, A) The short answer: use the function : clock() it requires : #include Note that the precision is different on Windows and Unix machines. Windows only returns miliseconds with this funcion. You may want to run your algorithm several times and get mean times. (that's what itk::TimeProbe's do...) B) The long (and better) answer: ITK has a set of classes designed for algorithm timing. You can find them in: Insight/Code/Common They are: itk::TimeProbe itk::TimeProbesCollectorBase http://www.itk.org/Insight/Doxygen/html/classitk_1_1TimeProbe.html http://www.itk.org/Insight/Doxygen/html/classitk_1_1TimeProbesCollectorBase.html Here is how you can use it: itk::TimeProbe myprobe; myprobe.Start(); myAlgorithm->Run() myprobe.Stop(); std::cout << myprobe.GetMeanTime() << std::endl; ============ Note that the probe has Start() and Stop() methods that facilitates to compute mean times by running your algorithm in a loop. like for(int i=0; i<1000; i++) { myprobe.Start(); myalgorithm->Run(); myprobe.Stop(); } std::cout << myprobe.GetMeanTime() << std::endl; ===================== The TimeCollectorBase is a helper class that facilitates to create multiple TimeProbes on the fly. TimeProbes are kept in a std::map<> indexed by a name. The collector is used like: itk::TimeProbesCollectorBase timeCollector; timeCollector.Start("myFirstAlgorithm"); firstAlgorithm->Run(); timeCollector.Stop("myFirstAlgorithm"); timeCollector.Start("mySecondAlgorithm"); secondAlgorithm->Run(); timeCollector.Stop("mySecondlgorithm"); timeCollector.Report(); 3) In addition to that, there is a FLTK GUI module for the timeProbesCollector. It can be found in Insight/Auxiliary/FltkImageViewer It is used in the ThinPlateSplines example for timing differences between VTK and ITK implementations of thin kernel based interpolators. Please let us know if you have further questions, Thanks Luis =============================================== Zein Salah wrote: > Hallo Friends, > > > > how can I read the current time of my computer? I use visual c++ > > I need this to determine hoe long does an algorithm work, so other > solutions are also appreciated. > > > > many thanks, > > zein > > > > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 > From yj76@columbia.edu Mon Oct 21 16:36:09 2002 From: yj76@columbia.edu (Yinpeng Jin) Date: Mon, 21 Oct 2002 11:36:09 -0400 Subject: [Insight-users] Re: FuzzyConnectedness References: <3DB41833.1060100@kitware.com> Message-ID: <001b01c27917$94838090$75313b80@segment> The implementation of SimpleFuzzy in ITK is actually the "faster" algorithm in the paper (Fuzzy Connectedness and Object Definition: Theory, Algorithms, and Applications in Image Segmentation", J. Udupa and S. Samarasekera) because: the fuzzy scene was scaled/stored as unsigned short, therefore it is equivalent to apply a theshold approximatedly 1/65536 when doing the computation as mentioned in the paper. it might not be wise to manually added in a theshold before you know what kind of "connectedness" you have for your target object. for example, if you apply a threshold 0.1 during the computing of fuzzy scene, you won't be able to claim all those parts that has fuzzy connectedness value smaller than 0.1 later on. that is why "The result segmented image is somehow not correct. some areas are segmented good, others are not." The running speed of fuzzy connectedness does not only depends on the size of the data, but also depends on the size of the target object as well as how good the estimation of mean and variance are. As far as I know, there are also a lot of other preprocessing techniques to improve the computation speed of fuzzy-connectedness. Jay or peoples in his group are much more experienced than I am. BTW: m_FuzzyScene has the value of [0 65536] (by definition they are [0,1], but scaled to [0 65536] in the program in order to be stored as "unsigned short"). so if the user DO want to apply an threshold when computing the fuzzy scene, the threshold need to be multiplied by 65536. hope this explanation helps. yinpeng. > =========================================== > > > > > > Zein Salah wrote: > > > > > > > > Thanks Luis, I have discovered it by debugging my program. > > > > > > > > > > > > > > > > > > > > > > > > *_Interesting Note:_* > > > > > > > > > > > > > > > > I have read the paper (In the paper (Fuzzy Connectedness and Object > > > > Definition: Theory, Algorithms, and Applications in Image > > > > Segmentation", J. Udupa and S. Samarasekera), page 259, it is stated > > > > that there are two version of the algorithm. One requires on some > > > > machine about 20 min for an image of 256x256x64, and the other > version > > > > requires only 2 minutes for the same image. > > > > > > > > I have tried to discover which version is implemented in the ITK > > filter. > > > > > I think it is the slow algorithm. > > > > > > > > However I tried to modify the code in the > > > > itkSimpleFuzzyConnectednessImageFilterBase.txx file to the faster > > > > implementation > > > > > > > > I just added an if statement, just like the fast algorithm in the > > paper. > > > > > The filter with this modification required _1.5 minute_ instead of > > about > > > > > _40 minutes_. Here is what I have done: > > > > > > > > > > > > > > > > the original code: > > > > > > > > > > > > > > > > > > > > > > > > template > > > > void > > > > SimpleFuzzyConnectednessImageFilterBase > > > > ::GenerateData() > > > > {... > > > > > > > > ... > > > > > > > > ... > > > > > > > > while(! m_Queue.empty()) { > > > > current = m_Queue.front(); > > > > m_Queue.pop(); > > > > > > > > fmax = (unsigned short)(FindStrongPath(current)); > > > > if(fmax > m_FuzzyScene->GetPixel(current)) { > > > > m_FuzzyScene->SetPixel(current,fmax); > > > > PushNeighbors(current); > > > > } > > > > > > > > } > > > > > > > > > > > > > > > > MakeSegmentObject(); > > > > } > > > > > > > > > > > > > > > > The new code is: > > > > > > > > > > > > > > > > template > > > > void > > > > SimpleFuzzyConnectednessImageFilterBase > > > > ::GenerateData() > > > > {... > > > > > > > > ... > > > > > > > > ... > > > > > > > > while(! m_Queue.empty()) { > > > > current = m_Queue.front(); > > > > m_Queue.pop(); > > > > > > > > > > > > > > > > // this is just what I did, something like what the paper suggests > > > > if ( m_FuzzyScene->GetPixel(current) < _1.0_ ) { > > > > > > > > fmax = (unsigned short)(FindStrongPath(current)); > > > > if(fmax > m_FuzzyScene->GetPixel(current)) { > > > > m_FuzzyScene->SetPixel(current,fmax); > > > > PushNeighbors(current); > > > > } > > > > } > > > > } > > > > > > > > > > > > > > > > MakeSegmentObject(); > > > > } > > > > > > > > > > > > > > > > The resulter segmented image is somehow not correct. some areas are > > > > segmented good, others are not. I have expreimnted with different > > values > > > > > intead of of the _0.1_, The result did not improve. > > > > > > > > > > > > > > > > Do you have an idea what could the problem be? Could you please test > > the > > > > > new code on 3D- images. Perhaps you can see the results and compare > > the > > > > > times. > > > > > > > > What could be done to get the correct value for this if-statement. > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Zein > > > From dean.inglis@on.aibn.com Mon Oct 21 17:05:37 2002 From: dean.inglis@on.aibn.com (Dean Inglis) Date: Mon, 21 Oct 2002 12:05:37 -0400 Subject: [Insight-users] GlutMaster build err - a fix Message-ID: Hi, I found a fix modelled after VTK's build of ftgl library: (VTK/Utilities/ftgl/CMakeLists.txt) IF (WIN32) # - Avoid the glutCreateMenu_ATEXIT_HACK pb. # - Sort-of a hack to avoid the bug in glut.h to avoid # ambiguity between 'std::exit(int)' and 'std::exit(int)' in function ADD_DEFINITIONS (-DGLUT_DISABLE_ATEXIT_HACK) ADD_DEFINITIONS (-DGLUT_BUILDING_LIB) ENDIF (WIN32) if added to the Insight/Utilities/GlutMaster/CMakeLists.txt file, this fixes the ambiguity with exit()... Dean From ghamarneh@yahoo.com Mon Oct 21 19:55:47 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Mon, 21 Oct 2002 14:55:47 -0400 (EDT) Subject: [Insight-users] Error building ITK on Linux Message-ID: <20021021185547.31827.qmail@web11502.mail.yahoo.com> Would you know how to resolve this problem? Thanks, /Ghassan In file included from /lhome/ghassan/fltk-1.1.0/FL/x.H:45, from /lhome/ghassan/fltk-1.1.0/FL/Fl_Image.H:29, from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_Item.H:30, from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_.H:32, from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_Bar.H:29, from /lhome/ghassan/Insight-build/Auxiliary/MetaImage/IView/IViewGUIBase.h:9, from /lhome/ghassan/Insight-build/Auxiliary/MetaImage/IView/IViewGUIBase.cxx:3: /usr/X11R6/include/X11/Xutil.h:358: use of `Region' is ambiguous /usr/X11R6/include/X11/Xutil.h:233: first declared as `typedef struct _XRegion *Region' here /lhome/ghassan/Insight/Code/Common/itkRegion.h:57: also declared as `class itk::Region' here /usr/X11R6/include/X11/Xutil.h:358: `Region' denotes an ambiguous type /usr/X11R6/include/X11/Xutil.h:358: confused by earlier errors, bailing out make[7]: *** [IViewGUIBase.o] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_IView] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_MetaImage] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Auxiliary] Error 2 make: *** [default_target] Error 2 ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From luis.ibanez@kitware.com Mon Oct 21 20:14:15 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 21 Oct 2002 15:14:15 -0400 Subject: [Insight-users] Error building ITK on Linux References: <20021021185547.31827.qmail@web11502.mail.yahoo.com> Message-ID: <3DB45207.5020409@kitware.com> Hi Ghassan, This error is due to an unfortunate ordering including header files. The X11 header file Xutil.h has a type named "Region" defined in the global namespace in line 233. Basically X11 considered that nobody else would ever want to create a type named "Region". ITK has an itk::Region type that is nicely encapsulated inside the "itk::" namespace. Unfortunately X11 do not use namespaces so when the "Region" type is used in a file that includes both Xutil.h and itkRegion.h a conflict appears. This problem existed on the Beta version and has been solved in the current version basically by reordering in which headers are included. You may wan to try downloading the IViewGUI.fld file from the cvsweb server: http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Auxiliary/MetaImage/IView/Attic/IViewGUIBase.fld?cvsroot=Insight Please let us know if you find further problems, Thanks Luis --------------------------------------------------- Ghassan Hamarneh wrote: > Would you know how to resolve this problem? > Thanks, > /Ghassan > > > In file included from /lhome/ghassan/fltk-1.1.0/FL/x.H:45, > from /lhome/ghassan/fltk-1.1.0/FL/Fl_Image.H:29, > from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_Item.H:30, > from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_.H:32, > from /lhome/ghassan/fltk-1.1.0/FL/Fl_Menu_Bar.H:29, > from > /lhome/ghassan/Insight-build/Auxiliary/MetaImage/IView/IViewGUIBase.h:9, > from > /lhome/ghassan/Insight-build/Auxiliary/MetaImage/IView/IViewGUIBase.cxx:3: > /usr/X11R6/include/X11/Xutil.h:358: use of `Region' is ambiguous > /usr/X11R6/include/X11/Xutil.h:233: first declared as `typedef struct > _XRegion *Region' here > /lhome/ghassan/Insight/Code/Common/itkRegion.h:57: also declared as `class > itk::Region' here > /usr/X11R6/include/X11/Xutil.h:358: `Region' denotes an ambiguous type > /usr/X11R6/include/X11/Xutil.h:358: confused by earlier errors, bailing > out > make[7]: *** [IViewGUIBase.o] Error 1 > make[6]: *** [default_target] Error 2 > make[5]: *** [default_target_IView] Error 2 > make[4]: *** [default_target] Error 2 > make[3]: *** [default_target_MetaImage] Error 2 > make[2]: *** [default_target] Error 2 > make[1]: *** [default_target_Auxiliary] Error 2 > make: *** [default_target] Error 2 > > ______________________________________________________________________ > Post your free ad now! http://personals.yahoo.ca > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From luis.ibanez@kitware.com Mon Oct 21 20:44:08 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 21 Oct 2002 15:44:08 -0400 Subject: [Insight-users] GlutMaster build err - a fix References: Message-ID: <3DB45908.2050407@kitware.com> Hi Dean, Thanks a lot for the fix to get around the bug in glut.h It was added to the ITKFindGLUT.cmake file in Insight/Utilities and seems to be working ok in Linux and Windows. Also, a file ITKFindOpenGL.cmake was added to Insight/Utilities in order to account for the configuration of OpenGL and Glu. This will be unecessary with the next release of CMake. Please let us know if this works ok with Borland. Thanks again, Luis =========================================== Dean Inglis wrote: > Hi, > > I found a fix modelled after VTK's build of > ftgl library: (VTK/Utilities/ftgl/CMakeLists.txt) > > IF (WIN32) > # - Avoid the glutCreateMenu_ATEXIT_HACK pb. > # - Sort-of a hack to avoid the bug in glut.h to avoid > # ambiguity between 'std::exit(int)' and 'std::exit(int)' in > function > ADD_DEFINITIONS (-DGLUT_DISABLE_ATEXIT_HACK) > ADD_DEFINITIONS (-DGLUT_BUILDING_LIB) > ENDIF (WIN32) > > if added to the Insight/Utilities/GlutMaster/CMakeLists.txt file, > this fixes the ambiguity with exit()... > > Dean > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From koosb2@hanmail.net Mon Oct 21 21:51:15 2002 From: koosb2@hanmail.net (Seungbum Koo) Date: Tue, 22 Oct 2002 05:51:15 +0900 (KST) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Message-ID: <20021022055115.HM.N00000000052U3W@www24.hanmail.net> Hi,
Thanks for the help. It worked and segmented but not as I expected. I don't understand well about VoronoiSegmentationImageFilter but it seems to segment all similar color regions in whole image as the seed region. I just wanted to find more exact boundary of that found using FuzzyConnectednessScalarFilter.
Anyway I think the VoronoiSegmentationImageFilter worked fine. What do you think about using DeformableMeshFilter instead of VoronoiSegmentationImageFilter?

regards
Seungbum Koo

> Title : Re: [Insight-users] using itkVoronoiSegmentationImageFilter ?
> Date : Sun, 20 Oct 2002 13:34:32 -0400
> From : "Yinpeng Jin"
> To : Seungbum Koo,
>
> if you use takeaprior, then you don't want to setMean and setVar, those two parameters will be calculated from the binary mask.
> and
> try to use
> m_voronoiFilter->SetMeanPercentError(PERCENT);
> m_voronoiFilter->SetVarPercentError(VARPERCENT);
> in stead of
> m_voronoiFilter->SetMeanTolerance(10);
> m_voronoiFilter->SetVarTolerance(20);
>
> they are trying to manipulate the same parameter, but usually are more intuitive to figure.
> the MeanPercentError could usually be set between 0.1 to 0.3
> and the VarPercentError could be between 1 to 3. they don't depends on your pixel intensity range, while the MeanTolerance and VarTolerance usually do.
> Also, you can first output your m_binaryImage to see if it is something reasonable. the VoronoisegmentationImagefilter will need something at least represents
> parts of your target object as the a prior.
> Try the above, and let me know what happens.
> Yinpeng.
>
>
>
> ----- Original Message -----
> From: Seungbum Koo
> To: insight-users@public.kitware.com
> Sent: Sunday, October 20, 2002 12:45 AM
> Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ?
>
>
> Hi,
>
> I'm trying to use itkVoronoiSegmentationImageFilter combined with itkSimpleFuzzyConnectednessScalarImageFilter.
>
> I made a binary image from itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't figure out how to set itkVoronoiSegmentationImageFilter variables. Here is my source code.
>
> =============================================================
> m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());
> m_voronoiFilter->TakeAPrior(m_binaryImage);
> m_voronoiFilter->SetMean(520);
> m_voronoiFilter->SetVar(20);
> m_voronoiFilter->SetMeanTolerance(10);
> m_voronoiFilter->SetVarTolerance(20);
> // m_voronoiFilter->SetNumberOfSeeds(400); // ??
> m_voronoiFilter->SetSteps(5);
> m_voronoiFilter->Update();
> =============================================================
>
> m_binaryImage is calculated from m_rawImageSource and as I expected.
> But this code just makes a black image... all zeros.
>
Seungbum Koo
   


"¿ì¸® ÀÎÅͳÝ, Daum" http://www.daum.net ¡º Æò»ý¾²´Â ¹«·á ÇѸÞÀÏ³Ý ¡»
ºü¸£´Ù! ÆíÇÏ´Ù! Daum¸Þ½ÅÀú
¸ÅÀϸÅÀÏ ¾²°í °è½ÃÁÒ?
Daum¿£ÅÍÄ«µå
Daumȸ¿øÀÇ Çʼöǰ! ¿Â¿ÀÇÁ ÃÖ°íÀÇ ÇýÅÃ~
From yj76@columbia.edu Mon Oct 21 22:01:49 2002 From: yj76@columbia.edu (Yinpeng Jin) Date: Mon, 21 Oct 2002 17:01:49 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? References: <20021022055115.HM.N00000000052U3W@www24.hanmail.net> Message-ID: <004801c27945$12c48ad0$75313b80@segment> This is a multi-part message in MIME format. ------=_NextPart_000_0045_01C27923.8B80DE50 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: quoted-printable VoronoiSegmenationImageFilter is a region-based classification, = split-and-merge like algorithm.=20 you are perfectly right, it picks up all the similar color regions in = whole image. It works well if you have multiple objects in the image to = segment, it was used because SimpleFuzzyConnectedness can only pick up = one connected component. there is another version of FuzzyConnectedness, which is able to claim = multiple objects (VectoriorFuzzyConnectedness) And to use Deformable Models is definitedly a good idea, actually, all = those three methods had been tested for combining together to build a = hybrid segmentation framework. I bet Celina, Jay and Dimitris can explain the idea better, for your = reference, please look at following paper in MICCAI 2001: C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid = Segmentation Methods of Anatomical Data." Proceedings of The Fourth = International Conference on Medical Image Computing and Computer = Assisted Interventions (MICCAI 2001), pp. 1058-1066, October 2001, = Utrecht Netherlands.=20 ----- Original Message -----=20 From: Seungbum Koo=20 To: Yinpeng Jin=20 Cc: insight-users@public.kitware.com=20 Sent: Monday, October 21, 2002 4:51 PM Subject: Re: Re: [Insight-users] using = itkVoronoiSegmentationImageFilter ? Hi,=20 Thanks for the help. It worked and segmented but not as I expected. I = don't understand well about VoronoiSegmentationImageFilter but it seems = to segment all similar color regions in whole image as the seed region. = I just wanted to find more exact boundary of that found using = FuzzyConnectednessScalarFilter.=20 Anyway I think the VoronoiSegmentationImageFilter worked fine. What do = you think about using DeformableMeshFilter instead of = VoronoiSegmentationImageFilter?=20 regards=20 Seungbum Koo=20 > Title : Re: [Insight-users] using itkVoronoiSegmentationImageFilter = ?=20 > Date : Sun, 20 Oct 2002 13:34:32 -0400=20 > From : "Yinpeng Jin"=20 > To : Seungbum Koo,=20 >=20 > if you use takeaprior, then you don't want to setMean and setVar, = those two parameters will be calculated from the binary mask.=20 > and=20 > try to use=20 > m_voronoiFilter->SetMeanPercentError(PERCENT);=20 > m_voronoiFilter->SetVarPercentError(VARPERCENT);=20 > in stead of=20 > m_voronoiFilter->SetMeanTolerance(10);=20 > m_voronoiFilter->SetVarTolerance(20);=20 >=20 > they are trying to manipulate the same parameter, but usually are = more intuitive to figure.=20 > the MeanPercentError could usually be set between 0.1 to 0.3=20 > and the VarPercentError could be between 1 to 3. they don't depends = on your pixel intensity range, while the MeanTolerance and VarTolerance = usually do.=20 > Also, you can first output your m_binaryImage to see if it is = something reasonable. the VoronoisegmentationImagefilter will need = something at least represents=20 > parts of your target object as the a prior.=20 > Try the above, and let me know what happens.=20 > Yinpeng.=20 >=20 >=20 >=20 > ----- Original Message -----=20 > From: Seungbum Koo=20 > To: insight-users@public.kitware.com=20 > Sent: Sunday, October 20, 2002 12:45 AM=20 > Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ?=20 >=20 >=20 > Hi,=20 >=20 > I'm trying to use itkVoronoiSegmentationImageFilter combined with = itkSimpleFuzzyConnectednessScalarImageFilter.=20 >=20 > I made a binary image from = itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't figure out = how to set itkVoronoiSegmentationImageFilter variables. Here is my = source code.=20 >=20 > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20 > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());=20 > m_voronoiFilter->TakeAPrior(m_binaryImage);=20 > m_voronoiFilter->SetMean(520);=20 > m_voronoiFilter->SetVar(20);=20 > m_voronoiFilter->SetMeanTolerance(10);=20 > m_voronoiFilter->SetVarTolerance(20);=20 > // m_voronoiFilter->SetNumberOfSeeds(400); // ??=20 > m_voronoiFilter->SetSteps(5);=20 > m_voronoiFilter->Update();=20 > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20 >=20 > m_binaryImage is calculated from m_rawImageSource and as I expected. = > But this code just makes a black image... all zeros.=20 > =20 Seungbum Koo =20 =20 =20 =20 "=BF=EC=B8=AE =C0=CE=C5=CD=B3=DD, Daum" http://www.daum.net = =A1=BA =C6=F2=BB=FD=BE=B2=B4=C2 =B9=AB=B7=E1 =C7=D1=B8=DE=C0=CF=B3=DD = =A1=BB =20 =BA=FC=B8=A3=B4=D9! =C6=ED=C7=CF=B4=D9! = Daum=B8=DE=BD=C5=C0=FA =B8=C5=C0=CF=B8=C5=C0=CF =BE=B2=B0=ED =B0=E8=BD=C3=C1=D2? = Daum=BF=A3=C5=CD=C4=AB=B5=E5 Daum=C8=B8=BF=F8=C0=C7 =C7=CA=BC=F6=C7=B0! = =BF=C2=BF=C0=C7=C1 =C3=D6=B0=ED=C0=C7 =C7=FD=C5=C3~=20 =20 ------=_NextPart_000_0045_01C27923.8B80DE50 Content-Type: text/html; charset="ks_c_5601-1987" Content-Transfer-Encoding: quoted-printable
VoronoiSegmenationImageFilter is a = region-based=20 classification, split-and-merge like algorithm.
you are perfectly right, it picks up = all the=20 similar color regions in whole image. It works well if you have multiple = objects=20 in the image to segment, it was used because SimpleFuzzyConnectedness = can only=20 pick up one connected component.
there is another version of = FuzzyConnectedness,=20 which is able to claim multiple objects=20 (VectoriorFuzzyConnectedness)
And to use Deformable Models is = definitedly a good=20 idea,  actually, all those three methods had been tested for = combining=20 together to build a hybrid segmentation framework.
I bet Celina, Jay and Dimitris can = explain the idea=20 better, for your reference, please look at following paper in MICCAI=20 2001:
C. Imielinska, D. Metaxas, J. Udupa, = Y.Jin and T.=20 Chen, "Hybrid Segmentation Methods of Anatomical Data." Proceedings = of The=20 Fourth International Conference on Medical Image Computing and Computer = Assisted=20 Interventions (MICCAI 2001), pp. 1058-1066, October 2001, Utrecht=20 Netherlands.
 
 
----- Original Message -----
From:=20 Seungbum Koo=20
Cc: insight-users@public.kitware.com= =20
Sent: Monday, October 21, 2002 = 4:51=20 PM
Subject: Re: Re: = [Insight-users] using=20 itkVoronoiSegmentationImageFilter ?

Hi,
Thanks for the help. It worked and segmented = but not as=20 I expected. I don't understand well about = VoronoiSegmentationImageFilter but=20 it seems to segment all similar color regions in whole image as the = seed=20 region. I just wanted to find more exact boundary of that found using=20 FuzzyConnectednessScalarFilter.
Anyway I think the=20 VoronoiSegmentationImageFilter worked fine. What do you think about = using=20 DeformableMeshFilter instead of VoronoiSegmentationImageFilter?=20

regards
Seungbum Koo

> Title : Re: = [Insight-users]=20 using itkVoronoiSegmentationImageFilter ?
> Date : Sun, 20 Oct = 2002=20 13:34:32 -0400
> From : "Yinpeng Jin" =
> To :=20 Seungbum Koo, =
>=20
> if you use takeaprior, then you don't want to setMean and = setVar,=20 those two parameters will be calculated from the binary mask.
> = and=20
> try to use
> = m_voronoiFilter->SetMeanPercentError(PERCENT);=20
> m_voronoiFilter->SetVarPercentError(VARPERCENT);
> = in stead=20 of
> m_voronoiFilter->SetMeanTolerance(10);
>=20 m_voronoiFilter->SetVarTolerance(20);
>
> they are = trying to=20 manipulate the same parameter, but usually are more intuitive to = figure.=20
> the MeanPercentError could usually be set between 0.1 to 0.3 =
>=20 and the VarPercentError could be between 1 to 3. they don't depends on = your=20 pixel intensity range, while the MeanTolerance and VarTolerance = usually do.=20
> Also, you can first output your m_binaryImage to see if it is = something reasonable. the VoronoisegmentationImagefilter will need = something=20 at least represents
> parts of your target object as the a = prior.=20
> Try the above, and let me know what happens.
> = Yinpeng.=20
>
>
>
> ----- Original Message ----- =
>=20 From: Seungbum Koo
> To: insight-users@public.kitware.com =
>=20 Sent: Sunday, October 20, 2002 12:45 AM
> Subject: = [Insight-users]=20 using itkVoronoiSegmentationImageFilter ?
>
>
> = Hi,=20
>
> I'm trying to use itkVoronoiSegmentationImageFilter = combined=20 with itkSimpleFuzzyConnectednessScalarImageFilter.
>
> I = made a=20 binary image from itkSimpleFuzzyConnectednessScalarImageFilter but I = couldn't=20 figure out how to set itkVoronoiSegmentationImageFilter variables. = Here is my=20 source code.
>
>=20 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20 m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); =
>=20 m_voronoiFilter->TakeAPrior(m_binaryImage);
>=20 m_voronoiFilter->SetMean(520);
> = m_voronoiFilter->SetVar(20);=20
> m_voronoiFilter->SetMeanTolerance(10);
>=20 m_voronoiFilter->SetVarTolerance(20);
> //=20 m_voronoiFilter->SetNumberOfSeeds(400); // ??
>=20 m_voronoiFilter->SetSteps(5);
> = m_voronoiFilter->Update();=20
> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20
>
> m_binaryImage is calculated from m_rawImageSource = and as I=20 expected.
> But this code just makes a black image... all = zeros.=20
>
Seungbum Koo
   


"=BF=EC=B8=AE = =C0=CE=C5=CD=B3=DD, Daum" http://www.daum.net =A1=BA = =C6=F2=BB=FD=BE=B2=B4=C2 =B9=AB=B7=E1 =C7=D1=B8=DE=C0=CF=B3=DD=20 =A1=BB
=BA=FC=B8=A3=B4=D9! =C6=ED=C7=CF=B4=D9!=20 = Daum=B8=DE=BD=C5=C0=FA
=B8=C5=C0=CF=B8=C5=C0=CF = =BE=B2=B0=ED =B0=E8=BD=C3=C1=D2?
Daum=BF=A3=C5=CD=C4=AB=B5=E5
Daum=C8=B8=BF=F8=C0=C7 = =C7=CA=BC=F6=C7=B0! =BF=C2=BF=C0=C7=C1 =C3=D6=B0=ED=C0=C7=20 =C7=FD=C5=C3~
------=_NextPart_000_0045_01C27923.8B80DE50-- From ci42@columbia.edu Mon Oct 21 23:19:17 2002 From: ci42@columbia.edu (Celina Imielinska) Date: Mon, 21 Oct 2002 18:19:17 -0400 (EDT) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? In-Reply-To: <004801c27945$12c48ad0$75313b80@segment> Message-ID: Seungbum, as Yinpeng said, the Voronoi Diagram classifier segments globally all the tissue in the image that is characterized by the homogeneity operator (derived from the fuzzy connectendness method). If you are interested in picking one connected component from all the segmented regions, you may use the DeformableMeshFilter (DM) to do the selection (and smoothing/improvement of the final segmentation as well). You can't use the DeformableMeshFilter without a prior, since this is a boundary-based segmentation method that has to be initialized near the solution. For example, you can use as a prior the Markov Random Field (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or itkRGBGibbsPriorFilter), and follow with DM, then repeat iteratively MRF and DM, and so on. There is a new version of the DM method that can be explained, in details, by Ting Chen (chenting@graphics.cis.upenn.edu). You may try also, a stand-alone, vectorial relative fuzzy connectedness method, the VectorFuzzyconnectednessImageFilter, to segment a region. The "Hybrid Segmentation Engine" consists of four components: Deformable Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram Clssifier (VD), and Fuzzy Connectedness (FC). We have explored some hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, vectorial relatice FC... but other combinations could be tested as well. Please let us know if need more detailed explanation. good luck, Celina Imielinska On Mon, 21 Oct 2002, Yinpeng Jin wrote: > VoronoiSegmenationImageFilter is a region-based classification, > split-and-merge like algorithm. > you are perfectly right, it picks up all the similar color regions in who= le > image. It works well if you have multiple objects in the image to > segment, it was used because SimpleFuzzyConnectedness can only pick up > one connected component. > there is another version of FuzzyConnectedness, which is able to claim > multiple objects (VectoriorFuzzyConnectedness) > And to use Deformable Models is definitedly a good idea, actually, all > those three methods had been tested for combining together to build a > hybrid segmentation framework. > I bet Celina, Jay and Dimitris can explain the idea > better, for your reference, please look at following paper in MICCAI 2001= : > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > Segmentation Methods of Anatomical Data." Proceedings of The Fourth > International Conference on Medical Image Computing and Computer > Assisted Interventions (MICCAI 2001), pp. 1058-1066, October 2001, Utrech= t > Netherlands. > > > ----- Original Message ----- > From: Seungbum Koo > To: Yinpeng Jin > Cc: insight-users@public.kitware.com > Sent: Monday, October 21, 2002 4:51 PM > Subject: Re: Re: [Insight-users] using itkVoronoiSegmentationImageFilte= r ? > > > Hi, > Thanks for the help. It worked and segmented but not as I expected. I d= on't understand well about VoronoiSegmentationImageFilter but it seems to s= egment all similar color regions in whole image as the seed region. I just = wanted to find more exact boundary of that found using FuzzyConnectednessSc= alarFilter. > Anyway I think the VoronoiSegmentationImageFilter worked fine. What do = you think about using DeformableMeshFilter instead of VoronoiSegmentationIm= ageFilter? > > regards > Seungbum Koo > > > Title : Re: [Insight-users] using itkVoronoiSegmentationImageFilter ? > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > From : "Yinpeng Jin" > > To : Seungbum Koo, > > > > if you use takeaprior, then you don't want to setMean and setVar, tho= se two parameters will be calculated from the binary mask. > > and > > try to use > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > in stead of > > m_voronoiFilter->SetMeanTolerance(10); > > m_voronoiFilter->SetVarTolerance(20); > > > > they are trying to manipulate the same parameter, but usually are mor= e intuitive to figure. > > the MeanPercentError could usually be set between 0.1 to 0.3 > > and the VarPercentError could be between 1 to 3. they don't depends o= n your pixel intensity range, while the MeanTolerance and VarTolerance usua= lly do. > > Also, you can first output your m_binaryImage to see if it is somethi= ng reasonable. the VoronoisegmentationImagefilter will need something at le= ast represents > > parts of your target object as the a prior. > > Try the above, and let me know what happens. > > Yinpeng. > > > > > > > > ----- Original Message ----- > > From: Seungbum Koo > > To: insight-users@public.kitware.com > > Sent: Sunday, October 20, 2002 12:45 AM > > Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? > > > > > > Hi, > > > > I'm trying to use itkVoronoiSegmentationImageFilter combined with itk= SimpleFuzzyConnectednessScalarImageFilter. > > > > I made a binary image from itkSimpleFuzzyConnectednessScalarImageFilt= er but I couldn't figure out how to set itkVoronoiSegmentationImageFilter v= ariables. Here is my source code. > > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > m_voronoiFilter->SetMean(520); > > m_voronoiFilter->SetVar(20); > > m_voronoiFilter->SetMeanTolerance(10); > > m_voronoiFilter->SetVarTolerance(20); > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > m_voronoiFilter->SetSteps(5); > > m_voronoiFilter->Update(); > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > > m_binaryImage is calculated from m_rawImageSource and as I expected. > > But this code just makes a black image... all zeros. > > > Seungbum Koo > > > > > > "=BF=EC=B8=AE =C0=CE=C5=CD=B3=DD, Daum" http://www.daum.net =A1= =BA =C6=F2=BB=FD=BE=B2=B4=C2 =B9=AB=B7=E1 =C7=D1=B8=DE=C0=CF=B3=DD =A1=BB > > =BA=FC=B8=A3=B4=D9! =C6=ED=C7=CF=B4=D9! Daum=B8=DE=BD=C5=C0= =FA > =B8=C5=C0=CF=B8=C5=C0=CF =BE=B2=B0=ED =B0=E8=BD=C3=C1=D2? = Daum=BF=A3=C5=CD=C4=AB=B5=E5 > Daum=C8=B8=BF=F8=C0=C7 =C7=CA=BC=F6=C7=B0! =BF=C2=BF=C0=C7= =C1 =C3=D6=B0=ED=C0=C7 =C7=FD=C5=C3~ > > > From dean.inglis@on.aibn.com Mon Oct 21 23:24:43 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Mon, 21 Oct 2002 18:24:43 -0400 Subject: [Insight-users] GlutMaster build err - a fix Message-ID: <20021021222443.HSBD7345.tomts16-srv.bellnexxia.net@[209.226.175.72]> Hi, to compile Code/IO/itkImageViewerWindow.cxx etc. the 'hack' has to be added to Code/IO/CMakeLists.txt and in Examples/ImageViewer/CMakeLists.txt. Alternatively, I put the 'hack' right in ITKFindGLUT.cmake to propogate to wherever it is needed ... Dean > > IF (WIN32) > # - Avoid the glutCreateMenu_ATEXIT_HACK pb. > # - Sort-of a hack to avoid the bug in glut.h to avoid > # ambiguity between 'std::exit(int)' and 'std::exit(int)' in > function > ADD_DEFINITIONS (-DGLUT_DISABLE_ATEXIT_HACK) > ADD_DEFINITIONS (-DGLUT_BUILDING_LIB) > ENDIF (WIN32) From cates@sci.utah.edu Tue Oct 22 01:48:52 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Mon, 21 Oct 2002 18:48:52 -0600 (MDT) Subject: [Insight-users] AntiAliasBinaryImageFilter - ViewOutputVTK prob In-Reply-To: <3DB3B98A.7080609@ieee.org> Message-ID: Hi, I have checked in a fix for this. Let me know if you still have troubles. Thanks for the help debugging. Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Mon, 21 Oct 2002, Martin Styner wrote: > Hi Josh, John > I had the same problem. I changed the vtk tcl script (it works). I've > attached it to the email. > Regards > Martin > > > Joshua Cates wrote: > > Hi, > > > > I've not touched this example in a while. I'll have a look and update it. > > > > Thanks, > > > > Josh. > > > > ______________________________ > > Josh Cates > > School of Computer Science > > University of Utah > > Email: cates@sci.utah.edu > > Phone: (801) 587-7697 > > URL: www.cs.utk.edu/~cates > > > > > > On Thu, 17 Oct 2002 anast.jm@pg.com wrote: > > > > > >>In the example, the ViewOutputVTK.tcl script seems to be missing a "package > >>require vtk" to get it to run (at least on my system). > >> > >>In addition I'm using vtk4.1.1 of 9/3/2002 (r1.1326) and the script > >>ViewOutputVTK4.1.1.tcl gives the following error. > >> > >>vtkTkRenderWidget Unknown option: GetImageViewer > >>Try: configure or GetRenderWindow > >>while executing > >>"$vtkiw GetImageViewer" > >>(procedure "::vtk::bind_tk_imageviewr_widget" line 3) > >>etc. > >> > >>I'm not real familiar with the TKRenderWidgets so this is just a heads up....the > >>non-vtk4.1.1 version works fine > >> > >>fyi...john > >> > >> > >>_______________________________________________ > >>Insight-users mailing list > >>Insight-users@public.kitware.com > >>http://public.kitware.com/mailman/listinfo/insight-users > >> > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > -- > Martin Styner, PhD. Ing. ETH > Group Head Medical Image Analysis for Orthopiaedics > M.E. Mueller Institute for Biomechanics > Center for Computed Assisted Surgery > University of Bern > Murtenstrasse 35 > P.O.Box 30 > CH - 3010 Bern > Switzerland > Tel office: ++41-31-632-0940 , FAX: ++41-31-632-4951 > email: Martin.Styner@memot.unibe.ch, martin_styner@ieee.org > WWW: http://cranium.unibe.ch/~mstyner > > From ds_1997in@yahoo.com Tue Oct 22 13:53:09 2002 From: ds_1997in@yahoo.com (digvijay singh) Date: Tue, 22 Oct 2002 05:53:09 -0700 (PDT) Subject: [Insight-users] itk Gradient Descent Optimizer: Message-ID: <20021022125309.42110.qmail@web13703.mail.yahoo.com> hi luis!! I tried to modify the itk gradient descent optimizer. At run time the program gives a segmentation fault , right after the startoptimization() is called. i am trying to pass 4 parameters to it. Is there a restriction on the number of parameters that can be given(space dimension is 4). please lemme know. ciao digvijay __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From salah@gris.uni-tuebingen.de Tue Oct 22 14:19:36 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Tue, 22 Oct 2002 15:19:36 +0200 Subject: [Insight-users] meta writers problem Message-ID: <006001c279cd$ab6ae080$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_005D_01C279DE.6ED998D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable hello friends, I thing there is a bug in the Meta file writers (or by me). The problem = is: 1. when I define the file name like this (for example) m_Writer->SetFileName( "myfile" ); // with no extention then the following two file will be produced=20 myfile (no extention) myfile.raw 2. when I define the file name like this=20 m_Writer->SetFileName( "myfile.mha" ); then the following two file will be produced=20 myfile.mha =20 myfile.mha.raw I expect the produced two file to have the names: myfile.mha =20 myfile.raw Do anybody have an idea where could the problem be? many thanks, Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_005D_01C279DE.6ED998D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
hello friends,
 
I thing there is a bug in the Meta file = writers (or=20 by me). The problem is:
 
1. when I define the file name like = this (for=20 example)
  =20 m_Writer->SetFileName( "myfile" );   // with no=20 extention
then the following two file will be = produced=20
      =20 myfile     (no extention)
      =20 myfile.raw
2. when I define the file name like this=20
  =20 m_Writer->SetFileName( "myfile.mha" );
then the following two file will be = produced=20
      =20 myfile.mha    
      =20 myfile.mha.raw
 
I expect = the produced two=20 file to have the names:
       = myfile.mha    =20
      =20 myfile.raw
 
 
 
Do anybody have an idea where could the problem be?
 
many thanks,
Zein
 
 

 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_005D_01C279DE.6ED998D0-- From jay@mipg.upenn.edu Mon Oct 21 22:29:56 2002 From: jay@mipg.upenn.edu (Jay Udupa) Date: Mon, 21 Oct 2002 17:29:56 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? References: <20021022055115.HM.N00000000052U3W@www24.hanmail.net> <004801c27945$12c48ad0$75313b80@segment> Message-ID: <3DB471D3.317E0453@mipg.upenn.edu> --------------B7522F926DBE60A08EAB1A20 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hmmm... Without spending too much time on this issue, I wanted to make one thing clear. SimpleFuzzyConnectedness implemented by Columbia is what the name says. It does not have the full bells and whistles of the fuzzy connectedness (FC) method that has been published by us at Penn. There are over 40 journal publications by us alone on the FC method and its over 10 clinical applications wherein 1000s of images have been routinely processed and evaluation has been carried out carefully in each application. Jay Udupa ____ Yinpeng Jin wrote: > VoronoiSegmenationImageFilter is a region-based classification, > split-and-merge like algorithm.you are perfectly right, it picks up > all the similar color regions in whole image. It works well if you > have multiple objects in the image to segment, it was used because > SimpleFuzzyConnectedness can only pick up one connected > component.there is another version of FuzzyConnectedness, which is > able to claim multiple objects (VectoriorFuzzyConnectedness)And to use > Deformable Models is definitedly a good idea, actually, all those > three methods had been tested for combining together to build a hybrid > segmentation framework.I bet Celina, Jay and Dimitris can explain the > idea better, for your reference, please look at following paper in > MICCAI 2001:C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, > "Hybrid Segmentation Methods of Anatomical Data." Proceedings of The > Fourth International Conference on Medical Image Computing and > Computer Assisted Interventions (MICCAI 2001), pp. 1058-1066, October > 2001, Utrecht Netherlands. > > ----- Original Message ----- > From: Seungbum Koo > To: Yinpeng Jin > Cc: insight-users@public.kitware.com > Sent: Monday, October 21, 2002 4:51 PM > Subject: Re: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > Hi, > Thanks for the help. It worked and segmented but not as I > expected. I don't understand well about > VoronoiSegmentationImageFilter but it seems to segment all > similar color regions in whole image as the seed region. I > just wanted to find more exact boundary of that found using > FuzzyConnectednessScalarFilter. > Anyway I think the VoronoiSegmentationImageFilter worked > fine. What do you think about using DeformableMeshFilter > instead of VoronoiSegmentationImageFilter? > > regards > Seungbum Koo > > > Title : Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > From : "Yinpeng Jin" > > To : Seungbum Koo, > > > > if you use takeaprior, then you don't want to setMean and > setVar, those two parameters will be calculated from the > binary mask. > > and > > try to use > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > in stead of > > m_voronoiFilter->SetMeanTolerance(10); > > m_voronoiFilter->SetVarTolerance(20); > > > > they are trying to manipulate the same parameter, but > usually are more intuitive to figure. > > the MeanPercentError could usually be set between 0.1 to > 0.3 > > and the VarPercentError could be between 1 to 3. they > don't depends on your pixel intensity range, while the > MeanTolerance and VarTolerance usually do. > > Also, you can first output your m_binaryImage to see if it > is something reasonable. the VoronoisegmentationImagefilter > will need something at least represents > > parts of your target object as the a prior. > > Try the above, and let me know what happens. > > Yinpeng. > > > > > > > > ----- Original Message ----- > > From: Seungbum Koo > > To: insight-users@public.kitware.com > > Sent: Sunday, October 20, 2002 12:45 AM > > Subject: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > > > > Hi, > > > > I'm trying to use itkVoronoiSegmentationImageFilter > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > I made a binary image from > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > figure out how to set itkVoronoiSegmentationImageFilter > variables. Here is my source code. > > > > > ============================================================= > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > m_voronoiFilter->SetMean(520); > > m_voronoiFilter->SetVar(20); > > m_voronoiFilter->SetMeanTolerance(10); > > m_voronoiFilter->SetVarTolerance(20); > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > m_voronoiFilter->SetSteps(5); > > m_voronoiFilter->Update(); > > > ============================================================= > > > > > m_binaryImage is calculated from m_rawImageSource and as I > expected. > > But this code just makes a black image... all zeros. > > > [Image] [Image] [Image]Seungbum Koo [Image] [Image] > > > "¿ì¸® ÀÎÅͳÝ, Daum" http://www.daum.net ¡º Æò»ý¾²´Â ¹«·á ÇѸÞÀÏ³Ý ¡» > ºü¸£´Ù! ÆíÇÏ´Ù! Daum¿£ÅÍÄ«µå [Image] [Image] Daum¸Þ½ÅÀú [Image] [Image] Daumȸ¿øÀÇ Çʼöǰ! ¸ÅÀϸÅÀÏ ¾²°í °è½ÃÁÒ? ¿Â¿ÀÇÁ ÃÖ°íÀÇ ÇýÅÃ~ > [Image] > --------------B7522F926DBE60A08EAB1A20 Content-Type: multipart/related; boundary="------------EA73F47CCD917D0597777F74" --------------EA73F47CCD917D0597777F74 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit  
Hmmm... Without spending too much time on this issue, I wanted to make one thing clear. SimpleFuzzyConnectedness implemented by Columbia is what the name says. It does not have the full bells and whistles of the fuzzy connectedness (FC) method that has been published by us at Penn. There are over 40 journal publications by us alone on the FC method and its over 10 clinical applications wherein 1000s of images have been routinely processed and evaluation has been carried out carefully in each application.

Jay Udupa
____

Yinpeng Jin wrote:

VoronoiSegmenationImageFilter is a region-based classification, split-and-merge like algorithm.you are perfectly right, it picks up all the similar color regions in whole image. It works well if you have multiple objects in the image to segment, it was used because SimpleFuzzyConnectedness can only pick up one connected component.there is another version of FuzzyConnectedness, which is able to claim multiple objects (VectoriorFuzzyConnectedness)And to use Deformable Models is definitedly a good idea,  actually, all those three methods had been tested for combining together to build a hybrid segmentation framework.I bet Celina, Jay and Dimitris can explain the idea better, for your reference, please look at following paper in MICCAI 2001:C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid Segmentation Methods of Anatomical Data." Proceedings of The Fourth International Conference on Medical Image Computing and Computer Assisted Interventions (MICCAI 2001), pp. 1058-1066, October 2001, Utrecht Netherlands.  
----- Original Message -----
Sent: Monday, October 21, 2002 4:51 PM
Subject: Re: Re: [Insight-users] using itkVoronoiSegmentationImageFilter ?
 Hi,
Thanks for the help. It worked and segmented but not as I expected. I don't understand well about VoronoiSegmentationImageFilter but it seems to segment all similar color regions in whole image as the seed region. I just wanted to find more exact boundary of that found using FuzzyConnectednessScalarFilter.
Anyway I think the VoronoiSegmentationImageFilter worked fine. What do you think about using DeformableMeshFilter instead of VoronoiSegmentationImageFilter?

regards
Seungbum Koo

> Title : Re: [Insight-users] using itkVoronoiSegmentationImageFilter ?
> Date : Sun, 20 Oct 2002 13:34:32 -0400
> From : "Yinpeng Jin" 
> To : Seungbum Koo,
>
> if you use takeaprior, then you don't want to setMean and setVar, those two parameters will be calculated from the binary mask.
> and
> try to use
> m_voronoiFilter->SetMeanPercentError(PERCENT);
> m_voronoiFilter->SetVarPercentError(VARPERCENT);
> in stead of
> m_voronoiFilter->SetMeanTolerance(10);
> m_voronoiFilter->SetVarTolerance(20);
>
> they are trying to manipulate the same parameter, but usually are more intuitive to figure.
> the MeanPercentError could usually be set between 0.1 to 0.3
> and the VarPercentError could be between 1 to 3. they don't depends on your pixel intensity range, while the MeanTolerance and VarTolerance usually do.
> Also, you can first output your m_binaryImage to see if it is something reasonable. the VoronoisegmentationImagefilter will need something at least represents
> parts of your target object as the a prior.
> Try the above, and let me know what happens.
> Yinpeng.
>
>
>
> ----- Original Message -----
> From: Seungbum Koo
> To: insight-users@public.kitware.com
> Sent: Sunday, October 20, 2002 12:45 AM
> Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ?
>
>
> Hi,
>
> I'm trying to use itkVoronoiSegmentationImageFilter combined with itkSimpleFuzzyConnectednessScalarImageFilter.
>
> I made a binary image from itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't figure out how to set itkVoronoiSegmentationImageFilter variables. Here is my source code.
>
> =============================================================
> m_voronoiFilter->SetInput(m_rawImageSource->GetOutput());
> m_voronoiFilter->TakeAPrior(m_binaryImage);
> m_voronoiFilter->SetMean(520);
> m_voronoiFilter->SetVar(20);
> m_voronoiFilter->SetMeanTolerance(10);
> m_voronoiFilter->SetVarTolerance(20);
> // m_voronoiFilter->SetNumberOfSeeds(400); // ??
> m_voronoiFilter->SetSteps(5);
> m_voronoiFilter->Update();
> =============================================================
>
> m_binaryImage is calculated from m_rawImageSource and as I expected.
> But this code just makes a black image... all zeros.
>

Seungbum Koo
 

 
"¿ì¸® ÀÎÅͳÝ, Daum" http://www.daum.net ¡º Æò»ý¾²´Â ¹«·á ÇѸÞÀÏ³Ý ¡»


ºü¸£´Ù! ÆíÇÏ´Ù! Daum¸Þ½ÅÀú
¸ÅÀϸÅÀÏ ¾²°í °è½ÃÁÒ?
Daum¿£ÅÍÄ«µå
Daumȸ¿øÀÇ Çʼöǰ! ¿Â¿ÀÇÁ ÃÖ°íÀÇ ÇýÅÃ~

--------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailBL.gif" R0lGODlhFAAKALMPAOHh4f39+c3Nzerq6v7+/f7+/vr68vv79f7+/K+vr8TExObm5vz897a2 tvj4+P///yH5BAEAAA8ALAAAAAAUAAoAAAQ38MlJq3RA2D1HEwC3AcpSFGI1KENBEOnkNMuL BLGU2QGeg4Qbg5F7JAq3AONQTASVB0OT0IsaIgA7 --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmail79.gif" R0lGODlhCAAKALMAAPX17Orq3/Hx5K2trc3NzP////r69eHh3/j4+PX19fj48fz8+urq6bW1 tcPDwpSUlCH5BAAAAAAALAAAAAAIAAoAAAQukBxUaj2kMVvWOs5heQvjbIWhGkdDqUpMEEWs AMAxJHgfDAScYCgYDADE4eARAQA7 --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailU4.gif" R0lGODlhFAAQALMPANLS0vj47OLi4sfHx/////Ly8rCwsPr68f39+f7+/J2dnfz89vr6+sDA wPz79f///yH5BAEAAA8ALAAAAAAUABAAAARo8MlJp0lpuRNEM2AoggmyHFxTJETrviuyBd3X AALzuuVJSwyFcCDYEXqcAKXgMQAKr9JMWXkgBk+eLFmdAADaaVeCMBRb29/4UWjokOo18Wji rh8CA91HvV/gfWsqgHcSeYSFDxd1NBEAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmail3J.gif" R0lGODlhFAALALMAAP///+7u3vn587W1s/r6+NfXyvLy5vX17MLCvMvLyq+vr/b28/39+uDg 2OHh4enp6SH5BAAAAAAALAAAAAAUAAsAAAQ4EMhJp2KY6Mrl1YQgdJwSiiJZJY24HIdKOQkM G/JEDI3h4znJA9EIGIMTB6JwRAoHS6cuoZBSFhEAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailP7.gif" R0lGODlhCAALALMAAPX148fHuOrq1Lq6s+TkxfDw0oSEhKysrJOTk9rawfLy2v////X19Z+f n8/Pz9/f3yH5BAAAAAAALAAAAAAIAAsAAAQwEEglxDESUIt1KcQ1fUmDKcoXIAhKDsaRggNi OK99MElQG43HomGLCReGmIOxaEYAADs= --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmail46.gif" R0lGODlhKAAoAMQAAOPOPNjY2GmYOumnXee3f5fOUIvB4d7e3vPNCebcw+fhy/Pv5MX0iOnp 6ezs7NnZ2e7u7vz8/OXl5fT09OHh4dzc3Nra2vP06vrzgvbyr1Om2PXw0CgpKN7g3wAAAP// /yH5BAAAAAAALAAAAAAoACgAAAX/4NeNZGmeaDqKX+u+cCzP7UrfuGznPL73wNgvSBR1ih+P cskb8jwMhkdD9eScOGh0StVYb1iap0AucLvfWVg2Lpu7aNoa1naf4WnY3FW3GwxwVTpHWQKG h4Yef4CBeTWEYoiSiouBXnqQMx6SiJSVeJgvS6OkpaajoXwXG6ysGa8YsRgItB6usrS1qS0e C62usLIAw7YbGcLDAI4/HL6/r8EYyRy3sdNCmc2/xtHSw9TGyByDL9rP3dPV0uPkLuat0MfW 3+rs7e7b8dDp3Bn29/ic6XvF79U/gO44KFzIsOHCK5lmcBhAsSLFgz4iyphosSJGMBpjcOw4 4KOckDA4bxBYyXKlSTUoy7Vs+RLhxpksa2KbEWEChAYSOCQYSjQBBwsVDlCQ0ADChAg2Pzg4 EKBqVQ4KsmrlYLVrgAMOdsaY6jWAQ65lv4bdBaPnTwkUDlSw8OBBgLpIlTJ1ClUsEiJ7/kYV DMaIisOIT3wIAQA7 --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailMD.gif" R0lGODlhAwAoAIAAAP///5KSkiH5BAAAAAAALAAAAAADACgAAAIShB+nkGvt4JKKIvcw0zbj vikFADs= --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailE3.gif" R0lGODlhKAAoAOZAAE1NTm9vb7KxsY6Pk5K0znGoy1WjYz9wj9bX1vjXlqu/0SkoKPr6+fK5 QkeFrv7CSDs6O+vr6tuhQZSZn/bVKnRXMqFxOc7Ozs2CQmKWuKnXXYiwldXn87qRNjdbVMnb 6P7syXh/hdutTGBqc1uuoldXWOOKQU49KjQzMrvP3SYyOg8UIGNiYyo7LkNEQ+Ps85yirS0s K3PF9hoZGvDx8jAwMB4hKuXv6dm1bNa4gd7g3yAfIBkeIyQkI8fHx////////wAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAoACgAAAf/gEA6g4SFhoeIiYOCP42O j5CRkpONg5SXmJOWmZyZm52gkp+hkwwvHwoFBTSPo6SNph8pCgQFGQ4ZHK06rww3HBy0tg7E BwfEKbucvjoIMBsbMjIZxsfEKh7EBMqSDBE+As8bBgYtLQYkMrYh1g4uHgUOBdw/DAwg+Ak5 LBUVFuMGPHhApy6FjxAZMhQIMYJAQlaVeP0AkSABjgYYKXTAYEKEBg3kyKWT8UFAwwIOS9gq 8MLRJhENOpyo0OABBQoYLHT4CDKgAVUEQqhUdcAFrhDJIjaC2WHFCgk2G5w4YcEjyBYLWhBz cKDE0REAWABYAMOlxAcPRKBYYeEBRgsW/zhKEFFhxg4exw54AFACQIwaMWb06DHAbKMEGE+s 6ICWggQTcU2YqMBjsAoVOxb00LwD8AIUC0IwUPoD8YN+NW9iqNCj34kag2PEWAAAQg8UED7b BswiAmnTaBtI6FDhRIzKCypDcFEiAAwYoGPkjgF6AW0Ev4dbKL6jhw0eNVCgABAgwAQfPgII YGH9bw/3syFg/7HpAmgeNlS4AEB+wgQB/oUwQAAQgLYDCrPBJh0EstXgA2kIuGBdDwHoMAA4 MIQgFoKb7SBbD4ChUAILLJTnwmYTkKZDCSjAVgIMGy4QQ3cLZPZXDcyVwCALGgbAAoMxFEaf RDQE8NcCgGXWXf8MILqwXw3N+ShUDzmWOIJQAZDGQAgfcobbAsyRGEIANYTFQl8QQFBiCCHA oMAEI5RA2g8TtNgDAGH+OGIJey5X22Y9lDCAfxMMQMCAAMwpAII1jBnAiAW68CUEfQFQXQwA tFkADFf6J+eQjkRYwwKPpukCYDXsAAFfJbJA3WwuGErAmwMooMCnn6yIYHvvyRgYpSU4CUEN qNbgJgEcyKIADImC2ggNroLZ12wy7lfbXyiACBpsEywLwwQMBSDkJwyQiamPKJxJKQuSWlfd qNaVwKaAAvhwgW/ONlInCi6cWYO/aR7Z6wKriguDABfoABE9PywaQ7/sdjnDDA/LOwBjwhGM hskoPjBIqaUzgFneAAL+Z6/CEaSsMr4M6zDduiXXi8DMM1+AwAXo5ZzzwnPWM6DBCNNsr85E F+0DDRrn+6zCNCDQDM1QRy01zTok7coroFyNNSdab72xIIqELTYiQAQCADsNCg== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailAK.gif" R0lGODlheAAoAOYAAFFRUdPCsraYeaOJbZSTk7m5uObo99K+qqDU2CpS/4RpTVRCNXtjSqKi o4iP14ie/8PDwiovr2hRPN7i+8zW/+np6Jms/0o8MopuUHJaQjIwLvT086uYg+je1ZF8Y8il hevk3ZyEaXeR/+Tk5G51y9zd3+3w/YxyVt3c3EdOuu7o4drd88PJ7dnLv9WykLuhhv7+/bS6 5wAAl5R0VKDa8tDQ0NnY2aCghvn5+Z18XKDa5d/TydWxj6CskKyOb7CSdb2un9i1lN26mfH0 /Jp4VvXy7rvA6nyD0pd2VV9nx9rW0/Ls5pV6Xfr8/9bW1fj5/u7n4K205Zmg3czr/zg+tdu4 lhE+/1hew9vc3qWq4sqtks+sjJVxT9va3Pj49wQHnfv7++7u7d/f4dzb2+S/ncGzpI13XQAw //8AFX9/f7vI/0Rn/2aD/6q6/1V1/2dnZ3Nzc3+T8KSDYcnO7s7U8ci0oLfj//80Rff39qC0 q55/X2F++rS+862traDa/////yH5BAAAAAAALAAAAAB4ACgAAAf/gH6Cg4SFhoeIiYqLjI2H NAh5IQwZGQyUl5USDAiDCDd+f6KjpKWmp6ipqqusraMbHQccZgoMChgKubWXlBkNMH8qWqCu rjEkLMXKy61FOy9ySBgYXNPTurqUEh5FMEIfxMynJkkRVxEr4urMYB0B0FzxSEjV1ti7mEA7 W+ChTwYGhox6soKOQIITDKyYYGIFwAkrVqT4YiSKjCzrMrLC0eKFDyJciIgkMu+EtRP3bGnL 8GPLFmJDUkSIIWqOzAhUjLCgQgVniiQ3qciUQYJEhAhzNCpFVeQFEz16cuQQOU+ktWu3dlVa IEGOgC09Qv2JICPZighf5hhAG8XAERlH/wzMMUFFRgy6FE0MGQLsD4wRYf6AGbHhD54NFcAg 7rtUFZrHkCM/njGDyNWsDCQs2LwggxwfAsJR+ZJMiowrohzISPJHtYNRKWQkrUvnT4xkf7wU 2B2mAIQ+FX4X6AOhAQTGjUs9XjVZmskZCjJo5rw5Q44BPgaIHZ3sLes/plO0lvFaVOxkqiOk IGFCVI0+MMD8bgLBdwEwBEaMaIAjuanlo7QghxxT6SHSH49ZVYsEF1DHWQZIfBbCdjLUZoQM ETTxRxJwjVfeH+f90UQWJEQBhlx//CZKfX84QRwEf/QRRgV9eOGfcqU0xYRURExFBIJoRMdg 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 --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailP4.gif" R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailMN.gif" R0lGODlhAQAKALMAAP///6+vr/j47Pv78/3++vj36v389/r67/7+/QAAAAAAAAAAAAAAAAAA AAAAAAAAACH5BAAAAAAALAAAAAABAAoAAAQIMACAiBlHlAgAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailPB.gif" R0lGODlhFAABAKIAAP////n57fj36v39+f7//fv68vz89q+vryH5BAAAAAAALAAAAAAUAAEA AAMICLq8R8OUIBIAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailTD.gif" R0lGODlhAQABAIAAAPj48QAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmail2I.gif" R0lGODlhCAABAKIAAOvr1ujo0vX15ff36K+vr+7v3PLy4YODgyH5BAAAAAAALAAAAAAIAAEA AAMGOGIFQScBADs= --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmailAL.gif" R0lGODlhAQALALMAAOnp1ujo0+fn0vHx4+3t3a+vr/T06vPz54ODg+/v4ezs2gAAAAAAAAAA AAAAAAAAACH5BAAAAAAALAAAAAABAAsAAAQJ0JyRiAJBFBQBADs= --------------EA73F47CCD917D0597777F74 Content-Type: image/gif Content-ID: Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="C:\WINDOWS\TEMP\nsmail3I.gif" R0lGODlhAwABAIABAEJCQv///yH5BAEAAAEALAAAAAADAAEAAAICRFIAOw== --------------EA73F47CCD917D0597777F74-- --------------B7522F926DBE60A08EAB1A20-- From luis.ibanez@kitware.com Tue Oct 22 14:29:32 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 22 Oct 2002 09:29:32 -0400 Subject: [Insight-users] GlutMaster build err - a fix References: <20021021222443.HSBD7345.tomts16-srv.bellnexxia.net@[209.226.175.72]> Message-ID: <3DB552BC.6060502@kitware.com> Hi Dean, I moved the hack to ITKFindGlut.cmake in Insight/Utilities as you proposed. It seems to be working fine in all platforms. Thanks for the hint. Luis ========================================== dean.inglis@on.aibn.com wrote: > Hi, > > to compile Code/IO/itkImageViewerWindow.cxx etc. > the 'hack' has to be added to Code/IO/CMakeLists.txt > and in Examples/ImageViewer/CMakeLists.txt. Alternatively, I put the 'hack' right in > ITKFindGLUT.cmake to propogate to wherever it is > needed ... > > Dean > From luis.ibanez@kitware.com Tue Oct 22 14:44:26 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 22 Oct 2002 09:44:26 -0400 Subject: [Insight-users] itk Gradient Descent Optimizer: References: <20021022125309.42110.qmail@web13703.mail.yahoo.com> Message-ID: <3DB5563A.3030500@kitware.com> Hi digvijay, There are no limitations in the numbers of parameters that the itk::Optimizers can accept. Parameters are passed in an Array that can be resized. This array derives from the vnl_vector. It should be able to manage at least thousands of parameters (it will not be fast... but it shouldn't crash). Are you sure that the error is a segmentation fault ? It could be an exception not being caught. Could you make sure that the StartOptimization() method is placed in a try/catch block, something like: try { optimizer->StartOptimization(); } catch( itk::ExceptionObject & exp ) { std::cerr << "ITK exception caught "; std::cerr << exp << std::endl; } catch( std::exception & exp ) { std::cerr << "STL exception caught "; std::cerr << exp.what() << std::endl; } catch( ... ) { std::cerr << "Unknown exception caught"; std::cerr << std::endl; } If it happens that the error is not an exception being caught. The next usual suspect is the lack of initialization of the parameters. Make sure that before you invoke StartOptimization(), you provide an initial value to start the optimization. In your case this will be a vector of size 4, with values that you think may be close to the optimal value or at least in the same hill. Something like: typename OptimizerType::ParametersType parameters(4); paramaters[0] = ?? ; paramaters[1] = ?? ; // up to you to select paramaters[2] = ?? ; // these values paramaters[3] = ?? ; optimizer->SetInitialPosition( parameters ); optimizer->SetLearningRate( learningRate ); optimizer->SetNumberOfIterations( numberOfIterations ); try { optimizer->StartOptimization(); } catch( itk::ExceptionObject & exp ) { //.....etc } Please take a look at the code in Insight/Testing/Code/Numerics/ itkGradientDescentOptimizerTest.cxx Let us know if you have further questions, Thanks Luis ========================================== digvijay singh wrote: > hi luis!! > I tried to modify the itk gradient descent optimizer. > At run time the program gives a segmentation fault , > right after the startoptimization() is called. > i am trying to pass 4 parameters to it. Is there a > restriction on the number of parameters that can be > given(space dimension is 4). please lemme know. > ciao > digvijay > > __________________________________________________ > Do you Yahoo!? > Y! Web Hosting - Let the expert host your web site > http://webhosting.yahoo.com/ > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From aylward@unc.edu Tue Oct 22 14:50:33 2002 From: aylward@unc.edu (Stephen R. Aylward) Date: Tue, 22 Oct 2002 09:50:33 -0400 Subject: [Insight-users] meta writers problem References: <006001c279cd$ab6ae080$aeb00286@wsigris.unituebingen.de> Message-ID: <3DB557A9.60909@unc.edu> Hi, This was actually how I intended metaImage to work. I find it safer/simpler to append .raw to files, than to try to substitute the last three letters or enforce a naming convention. There is a bit of history to this as well - traditionally, .mha is reserved for metaFiles in which the header and the data appears together (metaHeaderAll) and .mhd is reserved for metaFiles containing only header data (metaHeaDer) and that point to data (.raw) files. But to try to enforce this I would have to sometimes convert suffixes from .mhd to .mha, or append one or the other suffix and possibly .raw. To understand that behavior seemed more complex, so I went with something simple... You can also do a "m_Writer->SetDataFileName("LOCAL");" and it will write your header and data to the same file and that way the .raw file won't be created - it that more appropriate for what you intend? Thanks, Stephen Zein Salah wrote: > hello friends, > > I thing there is a bug in the Meta file writers (or by me). The problem is: > > 1. when I define the file name like this (for example) > m_Writer->SetFileName( "myfile" ); // with no extention > then the following two file will be produced > myfile (no extention) > myfile.raw > 2. when I define the file name like this > m_Writer->SetFileName( "myfile.mha" ); > then the following two file will be produced > myfile.mha > myfile.mha.raw > > I expect the produced two file to have the names: > myfile.mha > myfile.raw > > > > Do anybody have an idea where could the problem be? > > many thanks, > Zein > > > > > ->8<------------->8<------------->8<------------->8<------------->8<------------->8<- > Zein I. Salah > Universität Tübingen, WSI-GRIS > Sand 14 > 72076 Tübingen > Email: salah@gris.uni-tuebingen.de > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 -- =============================================== Dr. Stephen R. Aylward Assistant Professor of Radiology Adjunct Assistant Professor of Computer Science http://caddlab.rad.unc.edu aylward@unc.edu (919) 966-9695 From millerjv@crd.ge.com Tue Oct 22 15:14:39 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Tue, 22 Oct 2002 10:14:39 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Message-ID: I have been using the Voronoi segmentation techniques the last couple of days and discovered that they do not operate the way I expected. This may just be a documentation issue. >From the presentations of the algorithms at our various meetings, I expected the voronoi segmentations to subdivide the image until each voronoi region was "homogenous", using the classical definition of homogeneous from other split and merge segmentation techniques. So what I expected to see was a partitioning of the entire image where each voronoi region was "well" approximated as constant intensity (with extensions to piecewise linear and piecewise quadratic intensity surfaces). Instead, the algorithm labels each voronoi region as either "interior", "exterior", or "boundary" and subdivides the "boundary" voronoi regions down to a specified resolution. The definition of "interior" is not a homogeneity measure but rather a "compatibility" measure with a seed region (where the sample mean and sample variance of the voronoi region agree with the estimates from the seed region using an ad-hoc criterion). I am going to try to subclass the VoronoiSegmentationImageFilterBase class and construct an algorithm to produce the partitioning or oversegmentation of the scene that I am interested in. I think I can reuse the voronoi engine and use my own TestHomogeneity() method and use a virtual function to replace the "interior", "exterior", "boundary" designations that only allow the boundary regions to be subdivided with code that will subdivide any region that is not homogeneous enough. This will give us two types of voronoi segmentation algorithms, one that roughly segments a region that intensity value "consistent" or "compatible" with a seed region and one that partitions the image into homogeneous regions. I am thinking of calling the new filter VoronoiPartitioningImageFilter. Jim > -----Original Message----- > From: Celina Imielinska [mailto:ci42@columbia.edu] > Sent: Monday, October 21, 2002 6:19 PM > To: Yinpeng Jin > Cc: Seungbum Koo; insight-users@public.kitware.com > Subject: Re: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter > ? > > > > Seungbum, > > as Yinpeng said, the Voronoi Diagram classifier segments > globally all the > tissue in the image that is characterized by the homogeneity operator > (derived from the fuzzy connectendness method). If you are > interested in > picking one connected component from all the segmented > regions, you may > use the DeformableMeshFilter (DM) to do the selection (and > smoothing/improvement of the final segmentation as well). > > You can't use the DeformableMeshFilter without a prior, > since this is a > boundary-based segmentation method that has to be initialized near the > solution. For example, you can use as a prior the Markov Random Field > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > itkRGBGibbsPriorFilter), > and follow with DM, then repeat iteratively MRF and DM, and > so on. There is > a new version of the DM method that can be explained, in > details, by Ting > Chen (chenting@graphics.cis.upenn.edu). > > You may try also, a stand-alone, vectorial relative fuzzy > connectedness > method, the VectorFuzzyconnectednessImageFilter, to segment a region. > > The "Hybrid Segmentation Engine" consists of four > components: Deformable > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > Clssifier (VD), and Fuzzy Connectedness (FC). We have explored some > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > vectorial relatice FC... but other combinations could be > tested as well. > > Please let us know if need more detailed explanation. > > good luck, > > Celina Imielinska > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > VoronoiSegmenationImageFilter is a region-based classification, > > split-and-merge like algorithm. > > you are perfectly right, it picks up all the similar color > regions in whole > > image. It works well if you have multiple objects in the image to > > segment, it was used because SimpleFuzzyConnectedness can > only pick up > > one connected component. > > there is another version of FuzzyConnectedness, which is > able to claim > > multiple objects (VectoriorFuzzyConnectedness) > > And to use Deformable Models is definitedly a good idea, > actually, all > > those three methods had been tested for combining together > to build a > > hybrid segmentation framework. > > I bet Celina, Jay and Dimitris can explain the idea > > better, for your reference, please look at following paper > in MICCAI 2001: > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > Segmentation Methods of Anatomical Data." Proceedings of The Fourth > > International Conference on Medical Image Computing and Computer > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > October 2001, Utrecht > > Netherlands. > > > > > > ----- Original Message ----- > > From: Seungbum Koo > > To: Yinpeng Jin > > Cc: insight-users@public.kitware.com > > Sent: Monday, October 21, 2002 4:51 PM > > Subject: Re: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > > > > Hi, > > Thanks for the help. It worked and segmented but not as I > expected. I don't understand well about > VoronoiSegmentationImageFilter but it seems to segment all > similar color regions in whole image as the seed region. I > just wanted to find more exact boundary of that found using > FuzzyConnectednessScalarFilter. > > Anyway I think the VoronoiSegmentationImageFilter worked > fine. What do you think about using DeformableMeshFilter > instead of VoronoiSegmentationImageFilter? > > > > regards > > Seungbum Koo > > > > > Title : Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > From : "Yinpeng Jin" > > > To : Seungbum Koo, > > > > > > if you use takeaprior, then you don't want to setMean > and setVar, those two parameters will be calculated from the > binary mask. > > > and > > > try to use > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > in stead of > > > m_voronoiFilter->SetMeanTolerance(10); > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > they are trying to manipulate the same parameter, but > usually are more intuitive to figure. > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > and the VarPercentError could be between 1 to 3. they > don't depends on your pixel intensity range, while the > MeanTolerance and VarTolerance usually do. > > > Also, you can first output your m_binaryImage to see if > it is something reasonable. the > VoronoisegmentationImagefilter will need something at least represents > > > parts of your target object as the a prior. > > > Try the above, and let me know what happens. > > > Yinpeng. > > > > > > > > > > > > ----- Original Message ----- > > > From: Seungbum Koo > > > To: insight-users@public.kitware.com > > > Sent: Sunday, October 20, 2002 12:45 AM > > > Subject: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > > > > > > > Hi, > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > I made a binary image from > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > figure out how to set itkVoronoiSegmentationImageFilter > variables. Here is my source code. > > > > > > ============================================================= > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > m_voronoiFilter->SetMean(520); > > > m_voronoiFilter->SetVar(20); > > > m_voronoiFilter->SetMeanTolerance(10); > > > m_voronoiFilter->SetVarTolerance(20); > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > m_voronoiFilter->SetSteps(5); > > > m_voronoiFilter->Update(); > > > ============================================================= > > > > > > m_binaryImage is calculated from m_rawImageSource and > as I expected. > > > But this code just makes a black image... all zeros. > > > > > Seungbum Koo > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > 1<*a CN,?AI3Y !> > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From dean.inglis@on.aibn.com Tue Oct 22 15:26:16 2002 From: dean.inglis@on.aibn.com (dean.inglis@on.aibn.com) Date: Tue, 22 Oct 2002 10:26:16 -0400 Subject: [Insight-users] Data for Examples Message-ID: <20021022142615.CBHR15705.tomts21-srv.bellnexxia.net@[209.226.175.10]> Hi Luis, your welcome: my Borland builds are working fine (but still failing some tests). Re. examples, questions/suggestions: For many of the examples, it is not immediately clear what type of image data is expected (especially for command line apps) without digging into the code (i.e., 2-3D, 1-2 byte etc.). Would it be possible to have an InsightData CVS repository with data for each example to refer to, or, a link(s) to data in a ReadMe.txt for examples? Or, alternatively, more verbose usage statements in some of the examples? Dean From abert@mauriziano.it Tue Oct 22 15:22:35 2002 From: abert@mauriziano.it (Alberto Bert) Date: Tue, 22 Oct 2002 16:22:35 +0200 Subject: [Insight-users] polygonal surfaces Message-ID: <20021022142235.GA1624@rad7w026.mauriziano.it> Hi all, I'm interested in what you can do with polygonal surfaces using itk. I don't know nothing about that, I've looked to examples and tests, but... For example: - is there any place in which I can find some examples/descriptions - can I build a triangulated surface starting from other type data? which type of data? - which operations can I perform on the triangulated surface? - can I import triangulated surfaces from vtk? Sorry if the question is so generic and Thank you very much in advance Alberto. From luis.ibanez@kitware.com Tue Oct 22 15:35:09 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Tue, 22 Oct 2002 10:35:09 -0400 Subject: [Insight-users] Data for Examples References: <20021022142615.CBHR15705.tomts21-srv.bellnexxia.net@[209.226.175.10]> Message-ID: <3DB5621D.3020200@kitware.com> Hi Dean, Data is available in the ftp server. CVS proved not to be appropriate for managing large amounts of binary data. Details about the data are available at http://www.itk.org/HTML/Data.htm and the ftp site is ftp://public.kitware.com/pub/itk/Data/ Most of the examples are happy with input image from the BrainWeb project: ftp://public.kitware.com/pub/itk/Data/BrainWeb/ As you mention, the examples are not very homogeneous at this point. We are planning to reorganize this directory in the following weeks. The reorganization will involve moving most of the current example to an "Applications" directory and add a large number of small minimal examples associated with a tutorial document that is now being written in the InsightDocuemts checkout. Luis ========================================= dean.inglis@on.aibn.com wrote: > Hi Luis, > > your welcome: my Borland builds are > working fine (but still failing some tests). > Re. examples, questions/suggestions: > > For many of the examples, it is not > immediately clear what type of image data > is expected (especially for command line apps) > without digging into the code (i.e., 2-3D, > 1-2 byte etc.). Would it be possible to have > an InsightData CVS repository with data for > each example to refer to, or, a link(s) to data > in a ReadMe.txt for examples? Or, alternatively, > more verbose usage statements in some of > the examples? > > Dean > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From ci42@columbia.edu Tue Oct 22 16:06:38 2002 From: ci42@columbia.edu (Celina Imielinska) Date: Tue, 22 Oct 2002 11:06:38 -0400 (EDT) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? In-Reply-To: Message-ID: Jim, Your understanding of the Voronoi filter is right: "The definition of "interior" is not a homogeneity measure but rather a "compatibility" measure with a seed region." (I would call is a "sample" or "training" region). Also, you are right that the algorithm "subdivides the "boundary" Voronoi regions down to a specified resolution". The idea is to select and subdivide ONLY the regions "where the boudary is" (or we think where the boundary is), not to partition the image into homogeneous regions. The idea behind this filter is that the "homogeneity operator" that is derived from (simple) Fuzzy Connectedness method (we also experiment with the vectorial relative fuzzy connectedness method to get better results), where a sample of tissue is segmented and compared against its backgrund (this is not done in an ad hoc way), captures the characteristics of the sample region (of target tissue) that IS NOT inherently homogeneous (this is why it is expressed by FC method, that describes "connectedness of inherently inhomogeneous tissue that is recognized as one object - hanging-togetherness"). That is the finesse of this approach. Before, we were generating experimentally "homogeneity" statistcs of inherently inhomogeneous regions that represented one organ, and it was not a very sophisticated way to approach the problem (but it still could "drive" sucessfully the Voronoi Diagram classifier). Understanding the power of the fuzzy connectedness approach (we also experiment with the vectorial relative fuzzy filter to get better results) is important in understanding why inhomogeneous regions still form a "whole" structures that we can perceptually recognize as one. Also, this method allows us to generate the "homogeneity operators" automaticaally, instead of experimentally. The way we use the term "homogeneous operator" really means how we can describe the "homogeneous" component (the "strenght" of homogeneity) of something that is not homogeneous by nature. But, if you would like to use this filter to achieve a partition into homogeneous regions, you can easily do it. The only thing is that you will be able to tile the image with homogeneous regions but this will not give you a better estimation WHERE the object (if it is inherenty inhomogeneous) is. On the other hand, there could be a need for having the new filter: VoronoiPartitioningImageFilter since it can be easily derived from the original one (and it might be potentially useful). I am trully glad that we are having a discussion on the Voronoi Diagram filter, and I agree with your interpretation of the method and the your proposition to extend it to a new filter (one may always need it for something else). I would like to also see more discussion on other components of the hybrid segmentation enginge (the "stand-alone" vectorial relative fuzzy connectednes, Gibbs prior, and Deformable Model), -Celina On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > I have been using the Voronoi segmentation techniques the last couple of > days and discovered that they do not operate the way I expected. This > may just be a documentation issue. > > >From the presentations of the algorithms at our various meetings, I expected the voronoi > segmentations to subdivide the image until each voronoi region was "homogenous", using the classical > definition of homogeneous from other split and merge segmentation techniques. So what I expected to > see was a partitioning of the entire image where each voronoi region was "well" approximated as > constant intensity (with extensions to piecewise linear > and piecewise quadratic intensity surfaces). > > Instead, the algorithm labels each voronoi region as either "interior", "exterior", or "boundary" and > subdivides the "boundary" voronoi regions down to a specified resolution. The definition of > "interior" is not a homogeneity measure but rather a "compatibility" measure with a seed region > (where the sample mean and sample variance of the voronoi region agree with the estimates from the > seed region using an ad-hoc criterion). > > I am going to try to subclass the VoronoiSegmentationImageFilterBase class and construct an algorithm > to produce the partitioning or oversegmentation of the scene that I am interested in. I think I can > reuse the voronoi engine and use my own TestHomogeneity() method and use a virtual function to > replace the "interior", "exterior", "boundary" designations that only allow the boundary regions to > be subdivided with code that will subdivide any region that is not homogeneous enough. > > This will give us two types of voronoi segmentation algorithms, one that roughly segments a region > that intensity value "consistent" or "compatible" with a seed region and one that partitions the > image into homogeneous regions. > > I am thinking of calling the new filter VoronoiPartitioningImageFilter. > > Jim > > > > > -----Original Message----- > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > Sent: Monday, October 21, 2002 6:19 PM > > To: Yinpeng Jin > > Cc: Seungbum Koo; insight-users@public.kitware.com > > Subject: Re: Re: [Insight-users] using > > itkVoronoiSegmentationImageFilter > > ? > > > > > > > > Seungbum, > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > globally all the > > tissue in the image that is characterized by the homogeneity operator > > (derived from the fuzzy connectendness method). If you are > > interested in > > picking one connected component from all the segmented > > regions, you may > > use the DeformableMeshFilter (DM) to do the selection (and > > smoothing/improvement of the final segmentation as well). > > > > You can't use the DeformableMeshFilter without a prior, > > since this is a > > boundary-based segmentation method that has to be initialized near the > > solution. For example, you can use as a prior the Markov Random Field > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > itkRGBGibbsPriorFilter), > > and follow with DM, then repeat iteratively MRF and DM, and > > so on. There is > > a new version of the DM method that can be explained, in > > details, by Ting > > Chen (chenting@graphics.cis.upenn.edu). > > > > You may try also, a stand-alone, vectorial relative fuzzy > > connectedness > > method, the VectorFuzzyconnectednessImageFilter, to segment a region. > > > > The "Hybrid Segmentation Engine" consists of four > > components: Deformable > > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > > Clssifier (VD), and Fuzzy Connectedness (FC). We have explored some > > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > > vectorial relatice FC... but other combinations could be > > tested as well. > > > > Please let us know if need more detailed explanation. > > > > good luck, > > > > Celina Imielinska > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > VoronoiSegmenationImageFilter is a region-based classification, > > > split-and-merge like algorithm. > > > you are perfectly right, it picks up all the similar color > > regions in whole > > > image. It works well if you have multiple objects in the image to > > > segment, it was used because SimpleFuzzyConnectedness can > > only pick up > > > one connected component. > > > there is another version of FuzzyConnectedness, which is > > able to claim > > > multiple objects (VectoriorFuzzyConnectedness) > > > And to use Deformable Models is definitedly a good idea, > > actually, all > > > those three methods had been tested for combining together > > to build a > > > hybrid segmentation framework. > > > I bet Celina, Jay and Dimitris can explain the idea > > > better, for your reference, please look at following paper > > in MICCAI 2001: > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > > Segmentation Methods of Anatomical Data." Proceedings of The Fourth > > > International Conference on Medical Image Computing and Computer > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > October 2001, Utrecht > > > Netherlands. > > > > > > > > > ----- Original Message ----- > > > From: Seungbum Koo > > > To: Yinpeng Jin > > > Cc: insight-users@public.kitware.com > > > Sent: Monday, October 21, 2002 4:51 PM > > > Subject: Re: Re: [Insight-users] using > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > Hi, > > > Thanks for the help. It worked and segmented but not as I > > expected. I don't understand well about > > VoronoiSegmentationImageFilter but it seems to segment all > > similar color regions in whole image as the seed region. I > > just wanted to find more exact boundary of that found using > > FuzzyConnectednessScalarFilter. > > > Anyway I think the VoronoiSegmentationImageFilter worked > > fine. What do you think about using DeformableMeshFilter > > instead of VoronoiSegmentationImageFilter? > > > > > > regards > > > Seungbum Koo > > > > > > > Title : Re: [Insight-users] using > > itkVoronoiSegmentationImageFilter ? > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > From : "Yinpeng Jin" > > > > To : Seungbum Koo, > > > > > > > > if you use takeaprior, then you don't want to setMean > > and setVar, those two parameters will be calculated from the > > binary mask. > > > > and > > > > try to use > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > in stead of > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > they are trying to manipulate the same parameter, but > > usually are more intuitive to figure. > > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > > and the VarPercentError could be between 1 to 3. they > > don't depends on your pixel intensity range, while the > > MeanTolerance and VarTolerance usually do. > > > > Also, you can first output your m_binaryImage to see if > > it is something reasonable. the > > VoronoisegmentationImagefilter will need something at least represents > > > > parts of your target object as the a prior. > > > > Try the above, and let me know what happens. > > > > Yinpeng. > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > From: Seungbum Koo > > > > To: insight-users@public.kitware.com > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > Subject: [Insight-users] using > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > Hi, > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > I made a binary image from > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > figure out how to set itkVoronoiSegmentationImageFilter > > variables. Here is my source code. > > > > > > > > ============================================================= > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > m_voronoiFilter->SetMean(520); > > > > m_voronoiFilter->SetVar(20); > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > m_voronoiFilter->SetVarTolerance(20); > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > m_voronoiFilter->SetSteps(5); > > > > m_voronoiFilter->Update(); > > > > ============================================================= > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > as I expected. > > > > But this code just makes a black image... all zeros. > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > > 1<*a CN,?AI3Y !> > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > From millerjv@crd.ge.com Tue Oct 22 16:35:22 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Tue, 22 Oct 2002 11:35:22 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Message-ID: Celina, I am not sure the VoronoiSegmentationImage filter is using the fuzzy connectedness criterion to measure homogeneity. I have to admit that I don't have the formula for the (simple) fuzzy connectedness criterion in front of me. But the VoronoiSegmentation code is merely comparing (sample) means and (sample variances) based on the following: 1. sample mean of the region is within a specified percentage of the training mean 2. sample variance is less than a specified percentage of the training variance. I think a better statistic would be the two sample Student-t test or the two sample Hotelling T^2 statistic that would compare the difference in sample means taking into account the sample variances and the number of samples used in calculing the region sample mean (variance) and the training sample mean (and variance). This statistic is a Mahananobis (intensity) distance between the training set and the current region. Have you tried these types of statistics before? My interest in the "partitioning" version of the algorithm is not so much to segment to the boundary of a piece of anatomy but to characterize the texture in a piece of anatomy as it relates to function and disease. Jim > -----Original Message----- > From: Celina Imielinska [mailto:ci42@columbia.edu] > Sent: Tuesday, October 22, 2002 11:07 AM > To: Miller, James V (Research) > Cc: Yinpeng Jin; Seungbum Koo; insight-users@public.kitware.com > Subject: RE: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter > ? > > > > > Jim, > > Your understanding of the Voronoi filter is right: > "The definition of "interior" is not a homogeneity measure > but rather a > "compatibility" measure with a seed region." (I would call is > a "sample" > or "training" region). Also, you are right that the algorithm > "subdivides > the "boundary" Voronoi regions down to a specified > resolution". The idea is to > select and subdivide ONLY the regions "where the boudary is" > (or we think > where the boundary is), not to partition the image into > homogeneous regions. > > The idea behind this filter is that the "homogeneity > operator" that is > derived from (simple) Fuzzy Connectedness method (we also > experiment with > the vectorial relative fuzzy connectedness method to get > better results), > where a sample of tissue is segmented and compared against > its backgrund > (this is not done in an ad hoc way), captures the characteristics > of the sample region (of target tissue) that IS NOT > inherently homogeneous > (this is why it is expressed by FC method, that describes > "connectedness > of inherently inhomogeneous tissue that is recognized as one object - > hanging-togetherness"). > That is the finesse of this approach. Before, we were generating > experimentally "homogeneity" statistcs of inherently > inhomogeneous regions > that represented one organ, and it was not a very sophisticated way to > approach the problem (but it still could "drive" sucessfully > the Voronoi > Diagram classifier). Understanding the power of the fuzzy > connectedness > approach (we also experiment with the vectorial relative > fuzzy filter to > get better results) is important in understanding why inhomogeneous > regions still form a "whole" structures that we can > perceptually recognize > as one. Also, this method allows us to generate the "homogeneity > operators" automaticaally, instead of experimentally. The way > we use the > term "homogeneous operator" really means how we can describe > the "homogeneous" > component (the "strenght" of homogeneity) of something that is not > homogeneous by nature. > > But, if you would like to use this filter to achieve a partition into > homogeneous regions, you can easily do it. The only thing is > that you will > be able to tile the image with homogeneous regions but this > will not give > you a better estimation WHERE the object (if it is inherenty > inhomogeneous) is. On the other hand, there could be a need for having > the new filter: > > VoronoiPartitioningImageFilter > > since it can be easily derived from the original one (and it might be > potentially useful). > > I am trully glad that we are having a discussion on the > Voronoi Diagram > filter, and I agree with your interpretation of the method > and the your > proposition to extend it to a new filter (one may always need it for > something else). > > I would like to also see more discussion on other components of the > hybrid segmentation enginge (the "stand-alone" vectorial > relative fuzzy > connectednes, Gibbs prior, and Deformable Model), > > -Celina > > > > On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > > > I have been using the Voronoi segmentation techniques the > last couple of > > days and discovered that they do not operate the way I > expected. This > > may just be a documentation issue. > > > > >From the presentations of the algorithms at our various > meetings, I > expected the voronoi > > segmentations to subdivide the image until each voronoi region was > "homogenous", using the classical > > definition of homogeneous from other split and merge segmentation > techniques. So what I expected to > > see was a partitioning of the entire image where each > voronoi region > was "well" approximated as > > constant intensity (with extensions to piecewise linear > > and piecewise quadratic intensity surfaces). > > > > Instead, the algorithm labels each voronoi region as > either "interior", > "exterior", or "boundary" and > > subdivides the "boundary" voronoi regions down to a specified > resolution. The definition of > > "interior" is not a homogeneity measure but rather a > "compatibility" > measure with a seed region > > (where the sample mean and sample variance of the voronoi > region agree > with the estimates from the > > seed region using an ad-hoc criterion). > > > > I am going to try to subclass the > VoronoiSegmentationImageFilterBase > class and construct an algorithm > > to produce the partitioning or oversegmentation of the > scene that I am > interested in. I think I can > > reuse the voronoi engine and use my own TestHomogeneity() > method and > use a virtual function to > > replace the "interior", "exterior", "boundary" > designations that only > allow the boundary regions to > > be subdivided with code that will subdivide any region that is not > homogeneous enough. > > > > This will give us two types of voronoi segmentation algorithms, one > that roughly segments a region > > that intensity value "consistent" or "compatible" with a > seed region > and one that partitions the > > image into homogeneous regions. > > > > I am thinking of calling the new filter > VoronoiPartitioningImageFilter. > > > > Jim > > > > > > > > > -----Original Message----- > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > Sent: Monday, October 21, 2002 6:19 PM > > > To: Yinpeng Jin > > > Cc: Seungbum Koo; insight-users@public.kitware.com > > > Subject: Re: Re: [Insight-users] using > > > itkVoronoiSegmentationImageFilter > > > ? > > > > > > > > > > > > Seungbum, > > > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > > globally all the > > > tissue in the image that is characterized by the > homogeneity operator > > > (derived from the fuzzy connectendness method). If you are > > > interested in > > > picking one connected component from all the segmented > > > regions, you may > > > use the DeformableMeshFilter (DM) to do the selection (and > > > smoothing/improvement of the final segmentation as well). > > > > > > You can't use the DeformableMeshFilter without a prior, > > > since this is a > > > boundary-based segmentation method that has to be > initialized near the > > > solution. For example, you can use as a prior the Markov > Random Field > > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > > itkRGBGibbsPriorFilter), > > > and follow with DM, then repeat iteratively MRF and DM, and > > > so on. There is > > > a new version of the DM method that can be explained, in > > > details, by Ting > > > Chen (chenting@graphics.cis.upenn.edu). > > > > > > You may try also, a stand-alone, vectorial relative fuzzy > > > connectedness > > > method, the VectorFuzzyconnectednessImageFilter, to > segment a region. > > > > > > The "Hybrid Segmentation Engine" consists of four > > > components: Deformable > > > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > > > Clssifier (VD), and Fuzzy Connectedness (FC). We have > explored some > > > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > > > vectorial relatice FC... but other combinations could be > > > tested as well. > > > > > > Please let us know if need more detailed explanation. > > > > > > good luck, > > > > > > Celina Imielinska > > > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > > > VoronoiSegmenationImageFilter is a region-based classification, > > > > split-and-merge like algorithm. > > > > you are perfectly right, it picks up all the similar color > > > regions in whole > > > > image. It works well if you have multiple objects in > the image to > > > > segment, it was used because SimpleFuzzyConnectedness can > > > only pick up > > > > one connected component. > > > > there is another version of FuzzyConnectedness, which is > > > able to claim > > > > multiple objects (VectoriorFuzzyConnectedness) > > > > And to use Deformable Models is definitedly a good idea, > > > actually, all > > > > those three methods had been tested for combining together > > > to build a > > > > hybrid segmentation framework. > > > > I bet Celina, Jay and Dimitris can explain the idea > > > > better, for your reference, please look at following paper > > > in MICCAI 2001: > > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > > > Segmentation Methods of Anatomical Data." Proceedings > of The Fourth > > > > International Conference on Medical Image Computing and Computer > > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > > October 2001, Utrecht > > > > Netherlands. > > > > > > > > > > > > ----- Original Message ----- > > > > From: Seungbum Koo > > > > To: Yinpeng Jin > > > > Cc: insight-users@public.kitware.com > > > > Sent: Monday, October 21, 2002 4:51 PM > > > > Subject: Re: Re: [Insight-users] using > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > Hi, > > > > Thanks for the help. It worked and segmented but not as I > > > expected. I don't understand well about > > > VoronoiSegmentationImageFilter but it seems to segment all > > > similar color regions in whole image as the seed region. I > > > just wanted to find more exact boundary of that found using > > > FuzzyConnectednessScalarFilter. > > > > Anyway I think the VoronoiSegmentationImageFilter worked > > > fine. What do you think about using DeformableMeshFilter > > > instead of VoronoiSegmentationImageFilter? > > > > > > > > regards > > > > Seungbum Koo > > > > > > > > > Title : Re: [Insight-users] using > > > itkVoronoiSegmentationImageFilter ? > > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > > From : "Yinpeng Jin" > > > > > To : Seungbum Koo, > > > > > > > > > > if you use takeaprior, then you don't want to setMean > > > and setVar, those two parameters will be calculated from the > > > binary mask. > > > > > and > > > > > try to use > > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > > in stead of > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > > > they are trying to manipulate the same parameter, but > > > usually are more intuitive to figure. > > > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > > > and the VarPercentError could be between 1 to 3. they > > > don't depends on your pixel intensity range, while the > > > MeanTolerance and VarTolerance usually do. > > > > > Also, you can first output your m_binaryImage to see if > > > it is something reasonable. the > > > VoronoisegmentationImagefilter will need something at > least represents > > > > > parts of your target object as the a prior. > > > > > Try the above, and let me know what happens. > > > > > Yinpeng. > > > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > From: Seungbum Koo > > > > > To: insight-users@public.kitware.com > > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > > Subject: [Insight-users] using > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > Hi, > > > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > > > I made a binary image from > > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > > figure out how to set itkVoronoiSegmentationImageFilter > > > variables. Here is my source code. > > > > > > > > > > > ============================================================= > > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > > m_voronoiFilter->SetMean(520); > > > > > m_voronoiFilter->SetVar(20); > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > > m_voronoiFilter->SetSteps(5); > > > > > m_voronoiFilter->Update(); > > > > > > ============================================================= > > > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > > as I expected. > > > > > But this code just makes a black image... all zeros. > > > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > > > 1<*a CN,?AI3Y !> > > > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > > > > > > _______________________________________________ > > > Insight-users mailing list > > > Insight-users@public.kitware.com > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > From ci42@columbia.edu Tue Oct 22 16:59:42 2002 From: ci42@columbia.edu (Celina Imielinska) Date: Tue, 22 Oct 2002 11:59:42 -0400 (EDT) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? In-Reply-To: Message-ID: Jim, the fuzzy connectedness "criteria" is used indirectly when the sample region is grown into a fuzzy connectedness sample region. When this is achieved, there are varios options how the sample region can be compared with its background, and how the resulting homogeneity operator could be established. I am open to discuss it. My question is how "homogeneous" is (or is expected to be) "the texture in a piece of anatomy as it relates to function and disease"? -Celina On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > Celina, > > I am not sure the VoronoiSegmentationImage filter is using the fuzzy > connectedness criterion to measure homogeneity. I have to admit that > I don't have the formula for the (simple) fuzzy connectedness criterion > in front of me. But the VoronoiSegmentation code is merely comparing > (sample) means and (sample variances) based on the following: > > 1. sample mean of the region is within a specified percentage of the training mean > 2. sample variance is less than a specified percentage of the training > variance. > > I think a better statistic would be the two sample Student-t test or the > two sample Hotelling T^2 statistic that would compare the difference in > sample means taking into account the sample variances and the number of > samples used in calculing the region sample mean (variance) and the > training sample mean (and variance). > > This statistic is a Mahananobis (intensity) distance between the training set and the current region. > Have you tried these types of statistics before? > > My interest in the "partitioning" version of the algorithm is not so > much to segment to the boundary of a piece of anatomy but to characterize > the texture in a piece of anatomy as it relates to function and disease. > > Jim > > > > > -----Original Message----- > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > Sent: Tuesday, October 22, 2002 11:07 AM > > To: Miller, James V (Research) > > Cc: Yinpeng Jin; Seungbum Koo; insight-users@public.kitware.com > > Subject: RE: Re: [Insight-users] using > > itkVoronoiSegmentationImageFilter > > ? > > > > > > > > > > Jim, > > > > Your understanding of the Voronoi filter is right: > > "The definition of "interior" is not a homogeneity measure > > but rather a > > "compatibility" measure with a seed region." (I would call is > > a "sample" > > or "training" region). Also, you are right that the algorithm > > "subdivides > > the "boundary" Voronoi regions down to a specified > > resolution". The idea is to > > select and subdivide ONLY the regions "where the boudary is" > > (or we think > > where the boundary is), not to partition the image into > > homogeneous regions. > > > > The idea behind this filter is that the "homogeneity > > operator" that is > > derived from (simple) Fuzzy Connectedness method (we also > > experiment with > > the vectorial relative fuzzy connectedness method to get > > better results), > > where a sample of tissue is segmented and compared against > > its backgrund > > (this is not done in an ad hoc way), captures the characteristics > > of the sample region (of target tissue) that IS NOT > > inherently homogeneous > > (this is why it is expressed by FC method, that describes > > "connectedness > > of inherently inhomogeneous tissue that is recognized as one object - > > hanging-togetherness"). > > That is the finesse of this approach. Before, we were generating > > experimentally "homogeneity" statistcs of inherently > > inhomogeneous regions > > that represented one organ, and it was not a very sophisticated way to > > approach the problem (but it still could "drive" sucessfully > > the Voronoi > > Diagram classifier). Understanding the power of the fuzzy > > connectedness > > approach (we also experiment with the vectorial relative > > fuzzy filter to > > get better results) is important in understanding why inhomogeneous > > regions still form a "whole" structures that we can > > perceptually recognize > > as one. Also, this method allows us to generate the "homogeneity > > operators" automaticaally, instead of experimentally. The way > > we use the > > term "homogeneous operator" really means how we can describe > > the "homogeneous" > > component (the "strenght" of homogeneity) of something that is not > > homogeneous by nature. > > > > But, if you would like to use this filter to achieve a partition into > > homogeneous regions, you can easily do it. The only thing is > > that you will > > be able to tile the image with homogeneous regions but this > > will not give > > you a better estimation WHERE the object (if it is inherenty > > inhomogeneous) is. On the other hand, there could be a need for having > > the new filter: > > > > VoronoiPartitioningImageFilter > > > > since it can be easily derived from the original one (and it might be > > potentially useful). > > > > I am trully glad that we are having a discussion on the > > Voronoi Diagram > > filter, and I agree with your interpretation of the method > > and the your > > proposition to extend it to a new filter (one may always need it for > > something else). > > > > I would like to also see more discussion on other components of the > > hybrid segmentation enginge (the "stand-alone" vectorial > > relative fuzzy > > connectednes, Gibbs prior, and Deformable Model), > > > > -Celina > > > > > > > > On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > > > > > I have been using the Voronoi segmentation techniques the > > last couple of > > > days and discovered that they do not operate the way I > > expected. This > > > may just be a documentation issue. > > > > > > >From the presentations of the algorithms at our various > > meetings, I > > expected the voronoi > > > segmentations to subdivide the image until each voronoi region was > > "homogenous", using the classical > > > definition of homogeneous from other split and merge segmentation > > techniques. So what I expected to > > > see was a partitioning of the entire image where each > > voronoi region > > was "well" approximated as > > > constant intensity (with extensions to piecewise linear > > > and piecewise quadratic intensity surfaces). > > > > > > Instead, the algorithm labels each voronoi region as > > either "interior", > > "exterior", or "boundary" and > > > subdivides the "boundary" voronoi regions down to a specified > > resolution. The definition of > > > "interior" is not a homogeneity measure but rather a > > "compatibility" > > measure with a seed region > > > (where the sample mean and sample variance of the voronoi > > region agree > > with the estimates from the > > > seed region using an ad-hoc criterion). > > > > > > I am going to try to subclass the > > VoronoiSegmentationImageFilterBase > > class and construct an algorithm > > > to produce the partitioning or oversegmentation of the > > scene that I am > > interested in. I think I can > > > reuse the voronoi engine and use my own TestHomogeneity() > > method and > > use a virtual function to > > > replace the "interior", "exterior", "boundary" > > designations that only > > allow the boundary regions to > > > be subdivided with code that will subdivide any region that is not > > homogeneous enough. > > > > > > This will give us two types of voronoi segmentation algorithms, one > > that roughly segments a region > > > that intensity value "consistent" or "compatible" with a > > seed region > > and one that partitions the > > > image into homogeneous regions. > > > > > > I am thinking of calling the new filter > > VoronoiPartitioningImageFilter. > > > > > > Jim > > > > > > > > > > > > > -----Original Message----- > > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > > Sent: Monday, October 21, 2002 6:19 PM > > > > To: Yinpeng Jin > > > > Cc: Seungbum Koo; insight-users@public.kitware.com > > > > Subject: Re: Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter > > > > ? > > > > > > > > > > > > > > > > Seungbum, > > > > > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > > > globally all the > > > > tissue in the image that is characterized by the > > homogeneity operator > > > > (derived from the fuzzy connectendness method). If you are > > > > interested in > > > > picking one connected component from all the segmented > > > > regions, you may > > > > use the DeformableMeshFilter (DM) to do the selection (and > > > > smoothing/improvement of the final segmentation as well). > > > > > > > > You can't use the DeformableMeshFilter without a prior, > > > > since this is a > > > > boundary-based segmentation method that has to be > > initialized near the > > > > solution. For example, you can use as a prior the Markov > > Random Field > > > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > > > itkRGBGibbsPriorFilter), > > > > and follow with DM, then repeat iteratively MRF and DM, and > > > > so on. There is > > > > a new version of the DM method that can be explained, in > > > > details, by Ting > > > > Chen (chenting@graphics.cis.upenn.edu). > > > > > > > > You may try also, a stand-alone, vectorial relative fuzzy > > > > connectedness > > > > method, the VectorFuzzyconnectednessImageFilter, to > > segment a region. > > > > > > > > The "Hybrid Segmentation Engine" consists of four > > > > components: Deformable > > > > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > > > > Clssifier (VD), and Fuzzy Connectedness (FC). We have > > explored some > > > > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > > > > vectorial relatice FC... but other combinations could be > > > > tested as well. > > > > > > > > Please let us know if need more detailed explanation. > > > > > > > > good luck, > > > > > > > > Celina Imielinska > > > > > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > > > > > VoronoiSegmenationImageFilter is a region-based classification, > > > > > split-and-merge like algorithm. > > > > > you are perfectly right, it picks up all the similar color > > > > regions in whole > > > > > image. It works well if you have multiple objects in > > the image to > > > > > segment, it was used because SimpleFuzzyConnectedness can > > > > only pick up > > > > > one connected component. > > > > > there is another version of FuzzyConnectedness, which is > > > > able to claim > > > > > multiple objects (VectoriorFuzzyConnectedness) > > > > > And to use Deformable Models is definitedly a good idea, > > > > actually, all > > > > > those three methods had been tested for combining together > > > > to build a > > > > > hybrid segmentation framework. > > > > > I bet Celina, Jay and Dimitris can explain the idea > > > > > better, for your reference, please look at following paper > > > > in MICCAI 2001: > > > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > > > > Segmentation Methods of Anatomical Data." Proceedings > > of The Fourth > > > > > International Conference on Medical Image Computing and Computer > > > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > > > October 2001, Utrecht > > > > > Netherlands. > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > From: Seungbum Koo > > > > > To: Yinpeng Jin > > > > > Cc: insight-users@public.kitware.com > > > > > Sent: Monday, October 21, 2002 4:51 PM > > > > > Subject: Re: Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > Hi, > > > > > Thanks for the help. It worked and segmented but not as I > > > > expected. I don't understand well about > > > > VoronoiSegmentationImageFilter but it seems to segment all > > > > similar color regions in whole image as the seed region. I > > > > just wanted to find more exact boundary of that found using > > > > FuzzyConnectednessScalarFilter. > > > > > Anyway I think the VoronoiSegmentationImageFilter worked > > > > fine. What do you think about using DeformableMeshFilter > > > > instead of VoronoiSegmentationImageFilter? > > > > > > > > > > regards > > > > > Seungbum Koo > > > > > > > > > > > Title : Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > > > From : "Yinpeng Jin" > > > > > > To : Seungbum Koo, > > > > > > > > > > > > if you use takeaprior, then you don't want to setMean > > > > and setVar, those two parameters will be calculated from the > > > > binary mask. > > > > > > and > > > > > > try to use > > > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > > > in stead of > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > > > > > they are trying to manipulate the same parameter, but > > > > usually are more intuitive to figure. > > > > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > > > > and the VarPercentError could be between 1 to 3. they > > > > don't depends on your pixel intensity range, while the > > > > MeanTolerance and VarTolerance usually do. > > > > > > Also, you can first output your m_binaryImage to see if > > > > it is something reasonable. the > > > > VoronoisegmentationImagefilter will need something at > > least represents > > > > > > parts of your target object as the a prior. > > > > > > Try the above, and let me know what happens. > > > > > > Yinpeng. > > > > > > > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > From: Seungbum Koo > > > > > > To: insight-users@public.kitware.com > > > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > > > Subject: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > > > > > I made a binary image from > > > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > > > figure out how to set itkVoronoiSegmentationImageFilter > > > > variables. Here is my source code. > > > > > > > > > > > > > > ============================================================= > > > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > > > m_voronoiFilter->SetMean(520); > > > > > > m_voronoiFilter->SetVar(20); > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > > > m_voronoiFilter->SetSteps(5); > > > > > > m_voronoiFilter->Update(); > > > > > > > > ============================================================= > > > > > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > > > as I expected. > > > > > > But this code just makes a black image... all zeros. > > > > > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > > > > 1<*a CN,?AI3Y !> > > > > > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Insight-users mailing list > > > > Insight-users@public.kitware.com > > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From yj76@columbia.edu Tue Oct 22 17:14:28 2002 From: yj76@columbia.edu (Yinpeng Jin) Date: Tue, 22 Oct 2002 12:14:28 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? References: Message-ID: <002301c279e6$18b02070$75313b80@segment> I think Jim is right, you can certainly build more "advanced" homogeneity operator based on t-test or some other measurements. that is also what Elsa did before, she used some histogram based operator to mearsuring the homogeneity (not checked into ITK yet). actually, the VoronoiSegmenation we were using is rather a "matching" operator, which defines some descriptions (mean, std) of the target object, and trying to find regions that matches those descriptions within a certain tolerance level. And as we presented before in the ITK meeting, the VoronoiSegmenationImageFilterBase provide a general framework of segmentation based on this concept, and developer can build their own TestHomogeneity() for their own voronoi segmentation filters, and any reasonable description parameters can be added in for the "matching" purpose. But I am not so sure if the "partitioning" filter can be easily derived from this base class. certainly, the whole structure might be similar, a new base class might be needed. I think we can keep the the same design, e.g. a base class for the "partitioning" functionality. and user/developer can derive their own class by adding in different homogenerity operators. ----- Original Message ----- From: "Miller, James V (Research)" To: "'Celina Imielinska'" Cc: "Yinpeng Jin" ; "Seungbum Koo" ; Sent: Tuesday, October 22, 2002 11:35 AM Subject: RE: Re: [Insight-users] using itkVoronoiSegmentationImageFilter ? > Celina, > > I am not sure the VoronoiSegmentationImage filter is using the fuzzy > connectedness criterion to measure homogeneity. I have to admit that > I don't have the formula for the (simple) fuzzy connectedness criterion > in front of me. But the VoronoiSegmentation code is merely comparing > (sample) means and (sample variances) based on the following: > > 1. sample mean of the region is within a specified percentage of the training mean > 2. sample variance is less than a specified percentage of the training > variance. > > I think a better statistic would be the two sample Student-t test or the > two sample Hotelling T^2 statistic that would compare the difference in > sample means taking into account the sample variances and the number of > samples used in calculing the region sample mean (variance) and the > training sample mean (and variance). > > This statistic is a Mahananobis (intensity) distance between the training set and the current region. > Have you tried these types of statistics before? > > My interest in the "partitioning" version of the algorithm is not so > much to segment to the boundary of a piece of anatomy but to characterize > the texture in a piece of anatomy as it relates to function and disease. > > Jim > > > > > -----Original Message----- > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > Sent: Tuesday, October 22, 2002 11:07 AM > > To: Miller, James V (Research) > > Cc: Yinpeng Jin; Seungbum Koo; insight-users@public.kitware.com > > Subject: RE: Re: [Insight-users] using > > itkVoronoiSegmentationImageFilter > > ? > > > > > > > > > > Jim, > > > > Your understanding of the Voronoi filter is right: > > "The definition of "interior" is not a homogeneity measure > > but rather a > > "compatibility" measure with a seed region." (I would call is > > a "sample" > > or "training" region). Also, you are right that the algorithm > > "subdivides > > the "boundary" Voronoi regions down to a specified > > resolution". The idea is to > > select and subdivide ONLY the regions "where the boudary is" > > (or we think > > where the boundary is), not to partition the image into > > homogeneous regions. > > > > The idea behind this filter is that the "homogeneity > > operator" that is > > derived from (simple) Fuzzy Connectedness method (we also > > experiment with > > the vectorial relative fuzzy connectedness method to get > > better results), > > where a sample of tissue is segmented and compared against > > its backgrund > > (this is not done in an ad hoc way), captures the characteristics > > of the sample region (of target tissue) that IS NOT > > inherently homogeneous > > (this is why it is expressed by FC method, that describes > > "connectedness > > of inherently inhomogeneous tissue that is recognized as one object - > > hanging-togetherness"). > > That is the finesse of this approach. Before, we were generating > > experimentally "homogeneity" statistcs of inherently > > inhomogeneous regions > > that represented one organ, and it was not a very sophisticated way to > > approach the problem (but it still could "drive" sucessfully > > the Voronoi > > Diagram classifier). Understanding the power of the fuzzy > > connectedness > > approach (we also experiment with the vectorial relative > > fuzzy filter to > > get better results) is important in understanding why inhomogeneous > > regions still form a "whole" structures that we can > > perceptually recognize > > as one. Also, this method allows us to generate the "homogeneity > > operators" automaticaally, instead of experimentally. The way > > we use the > > term "homogeneous operator" really means how we can describe > > the "homogeneous" > > component (the "strenght" of homogeneity) of something that is not > > homogeneous by nature. > > > > But, if you would like to use this filter to achieve a partition into > > homogeneous regions, you can easily do it. The only thing is > > that you will > > be able to tile the image with homogeneous regions but this > > will not give > > you a better estimation WHERE the object (if it is inherenty > > inhomogeneous) is. On the other hand, there could be a need for having > > the new filter: > > > > VoronoiPartitioningImageFilter > > > > since it can be easily derived from the original one (and it might be > > potentially useful). > > > > I am trully glad that we are having a discussion on the > > Voronoi Diagram > > filter, and I agree with your interpretation of the method > > and the your > > proposition to extend it to a new filter (one may always need it for > > something else). > > > > I would like to also see more discussion on other components of the > > hybrid segmentation enginge (the "stand-alone" vectorial > > relative fuzzy > > connectednes, Gibbs prior, and Deformable Model), > > > > -Celina > > > > > > > > On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > > > > > I have been using the Voronoi segmentation techniques the > > last couple of > > > days and discovered that they do not operate the way I > > expected. This > > > may just be a documentation issue. > > > > > > >From the presentations of the algorithms at our various > > meetings, I > > expected the voronoi > > > segmentations to subdivide the image until each voronoi region was > > "homogenous", using the classical > > > definition of homogeneous from other split and merge segmentation > > techniques. So what I expected to > > > see was a partitioning of the entire image where each > > voronoi region > > was "well" approximated as > > > constant intensity (with extensions to piecewise linear > > > and piecewise quadratic intensity surfaces). > > > > > > Instead, the algorithm labels each voronoi region as > > either "interior", > > "exterior", or "boundary" and > > > subdivides the "boundary" voronoi regions down to a specified > > resolution. The definition of > > > "interior" is not a homogeneity measure but rather a > > "compatibility" > > measure with a seed region > > > (where the sample mean and sample variance of the voronoi > > region agree > > with the estimates from the > > > seed region using an ad-hoc criterion). > > > > > > I am going to try to subclass the > > VoronoiSegmentationImageFilterBase > > class and construct an algorithm > > > to produce the partitioning or oversegmentation of the > > scene that I am > > interested in. I think I can > > > reuse the voronoi engine and use my own TestHomogeneity() > > method and > > use a virtual function to > > > replace the "interior", "exterior", "boundary" > > designations that only > > allow the boundary regions to > > > be subdivided with code that will subdivide any region that is not > > homogeneous enough. > > > > > > This will give us two types of voronoi segmentation algorithms, one > > that roughly segments a region > > > that intensity value "consistent" or "compatible" with a > > seed region > > and one that partitions the > > > image into homogeneous regions. > > > > > > I am thinking of calling the new filter > > VoronoiPartitioningImageFilter. > > > > > > Jim > > > > > > > > > > > > > -----Original Message----- > > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > > Sent: Monday, October 21, 2002 6:19 PM > > > > To: Yinpeng Jin > > > > Cc: Seungbum Koo; insight-users@public.kitware.com > > > > Subject: Re: Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter > > > > ? > > > > > > > > > > > > > > > > Seungbum, > > > > > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > > > globally all the > > > > tissue in the image that is characterized by the > > homogeneity operator > > > > (derived from the fuzzy connectendness method). If you are > > > > interested in > > > > picking one connected component from all the segmented > > > > regions, you may > > > > use the DeformableMeshFilter (DM) to do the selection (and > > > > smoothing/improvement of the final segmentation as well). > > > > > > > > You can't use the DeformableMeshFilter without a prior, > > > > since this is a > > > > boundary-based segmentation method that has to be > > initialized near the > > > > solution. For example, you can use as a prior the Markov > > Random Field > > > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > > > itkRGBGibbsPriorFilter), > > > > and follow with DM, then repeat iteratively MRF and DM, and > > > > so on. There is > > > > a new version of the DM method that can be explained, in > > > > details, by Ting > > > > Chen (chenting@graphics.cis.upenn.edu). > > > > > > > > You may try also, a stand-alone, vectorial relative fuzzy > > > > connectedness > > > > method, the VectorFuzzyconnectednessImageFilter, to > > segment a region. > > > > > > > > The "Hybrid Segmentation Engine" consists of four > > > > components: Deformable > > > > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > > > > Clssifier (VD), and Fuzzy Connectedness (FC). We have > > explored some > > > > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > > > > vectorial relatice FC... but other combinations could be > > > > tested as well. > > > > > > > > Please let us know if need more detailed explanation. > > > > > > > > good luck, > > > > > > > > Celina Imielinska > > > > > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > > > > > VoronoiSegmenationImageFilter is a region-based classification, > > > > > split-and-merge like algorithm. > > > > > you are perfectly right, it picks up all the similar color > > > > regions in whole > > > > > image. It works well if you have multiple objects in > > the image to > > > > > segment, it was used because SimpleFuzzyConnectedness can > > > > only pick up > > > > > one connected component. > > > > > there is another version of FuzzyConnectedness, which is > > > > able to claim > > > > > multiple objects (VectoriorFuzzyConnectedness) > > > > > And to use Deformable Models is definitedly a good idea, > > > > actually, all > > > > > those three methods had been tested for combining together > > > > to build a > > > > > hybrid segmentation framework. > > > > > I bet Celina, Jay and Dimitris can explain the idea > > > > > better, for your reference, please look at following paper > > > > in MICCAI 2001: > > > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > > > > Segmentation Methods of Anatomical Data." Proceedings > > of The Fourth > > > > > International Conference on Medical Image Computing and Computer > > > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > > > October 2001, Utrecht > > > > > Netherlands. > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > From: Seungbum Koo > > > > > To: Yinpeng Jin > > > > > Cc: insight-users@public.kitware.com > > > > > Sent: Monday, October 21, 2002 4:51 PM > > > > > Subject: Re: Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > Hi, > > > > > Thanks for the help. It worked and segmented but not as I > > > > expected. I don't understand well about > > > > VoronoiSegmentationImageFilter but it seems to segment all > > > > similar color regions in whole image as the seed region. I > > > > just wanted to find more exact boundary of that found using > > > > FuzzyConnectednessScalarFilter. > > > > > Anyway I think the VoronoiSegmentationImageFilter worked > > > > fine. What do you think about using DeformableMeshFilter > > > > instead of VoronoiSegmentationImageFilter? > > > > > > > > > > regards > > > > > Seungbum Koo > > > > > > > > > > > Title : Re: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > > > From : "Yinpeng Jin" > > > > > > To : Seungbum Koo, > > > > > > > > > > > > if you use takeaprior, then you don't want to setMean > > > > and setVar, those two parameters will be calculated from the > > > > binary mask. > > > > > > and > > > > > > try to use > > > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > > > in stead of > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > > > > > they are trying to manipulate the same parameter, but > > > > usually are more intuitive to figure. > > > > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > > > > and the VarPercentError could be between 1 to 3. they > > > > don't depends on your pixel intensity range, while the > > > > MeanTolerance and VarTolerance usually do. > > > > > > Also, you can first output your m_binaryImage to see if > > > > it is something reasonable. the > > > > VoronoisegmentationImagefilter will need something at > > least represents > > > > > > parts of your target object as the a prior. > > > > > > Try the above, and let me know what happens. > > > > > > Yinpeng. > > > > > > > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > From: Seungbum Koo > > > > > > To: insight-users@public.kitware.com > > > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > > > Subject: [Insight-users] using > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > > > > > I made a binary image from > > > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > > > figure out how to set itkVoronoiSegmentationImageFilter > > > > variables. Here is my source code. > > > > > > > > > > > > > > ============================================================= > > > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > > > m_voronoiFilter->SetMean(520); > > > > > > m_voronoiFilter->SetVar(20); > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > > > m_voronoiFilter->SetSteps(5); > > > > > > m_voronoiFilter->Update(); > > > > > > > > ============================================================= > > > > > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > > > as I expected. > > > > > > But this code just makes a black image... all zeros. > > > > > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > > > > 1<*a CN,?AI3Y !> > > > > > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Insight-users mailing list > > > > Insight-users@public.kitware.com > > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > From millerjv@crd.ge.com Tue Oct 22 17:49:39 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Tue, 22 Oct 2002 12:49:39 -0400 Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? Message-ID: Yinpeng, I just threw together a quick partitioning voronoi filter. I overrode the methods: TestHomogeneity() - of course ClassifyDiagram() - remove the code that tries to identify boundaries. rather I just keep track of whehter a region was homogeneous or not. GenerateAddingSeeds() - add a new seed if either adjacent region is inhomogeneous MakeSegmentBoundary() - output all edges MakeSegmentObject() - not completed. need to output a segment id for each region. So it was quite simple to create a partitioning filter. Though I must admit that I ended up copying the code in the above methods are removing the parts that identified boundary regions. It is not a clean as I would like. The other option was to put a mode into the base class that could be used to determine whether the filter is segmenting or partitioning. I didn't take that path initially because I didn't want a the variable to be something that could be changed on the fly. I might rework the functions a bit so each of the methods in the base class call a virtual function whose default implementations would be for segmentation and the subclass could override for partitioning. > -----Original Message----- > From: Yinpeng Jin [mailto:yj76@columbia.edu] > Sent: Tuesday, October 22, 2002 12:14 PM > To: Miller, James V (Research); 'Celina Imielinska' > Cc: insight-users@public.kitware.com > Subject: Re: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > I think Jim is right, you can certainly build more "advanced" > homogeneity > operator based on t-test or some other measurements. > that is also what Elsa did before, she used some histogram > based operator to > mearsuring the homogeneity (not checked into ITK yet). > actually, the VoronoiSegmenation we were using is rather a "matching" > operator, which defines some descriptions (mean, std) of the > target object, and trying to find regions that matches those > descriptions > within a certain tolerance level. > And as we presented before in the ITK meeting, the > VoronoiSegmenationImageFilterBase provide a general framework of > segmentation based on > this concept, and developer can build their own > TestHomogeneity() for their > own voronoi segmentation filters, and any reasonable > description parameters > can be added in for the "matching" purpose. > But I am not so sure if the "partitioning" filter can be > easily derived from > this base class. certainly, the whole structure might be > similar, a new base class might be needed. > I think we can keep the the same design, e.g. a base class for the > "partitioning" functionality. > and user/developer can derive their own class by adding in different > homogenerity operators. > > > > ----- Original Message ----- > From: "Miller, James V (Research)" > To: "'Celina Imielinska'" > Cc: "Yinpeng Jin" ; "Seungbum Koo" > ; > > Sent: Tuesday, October 22, 2002 11:35 AM > Subject: RE: Re: [Insight-users] using > itkVoronoiSegmentationImageFilter ? > > > > Celina, > > > > I am not sure the VoronoiSegmentationImage filter is using the fuzzy > > connectedness criterion to measure homogeneity. I have to > admit that > > I don't have the formula for the (simple) fuzzy > connectedness criterion > > in front of me. But the VoronoiSegmentation code is merely > comparing > > (sample) means and (sample variances) based on the following: > > > > 1. sample mean of the region is within a specified percentage of the > training mean > > 2. sample variance is less than a specified percentage of > the training > > variance. > > > > I think a better statistic would be the two sample > Student-t test or the > > two sample Hotelling T^2 statistic that would compare the > difference in > > sample means taking into account the sample variances and > the number of > > samples used in calculing the region sample mean (variance) and the > > training sample mean (and variance). > > > > This statistic is a Mahananobis (intensity) distance > between the training > set and the current region. > > Have you tried these types of statistics before? > > > > My interest in the "partitioning" version of the algorithm is not so > > much to segment to the boundary of a piece of anatomy but > to characterize > > the texture in a piece of anatomy as it relates to function > and disease. > > > > Jim > > > > > > > > > -----Original Message----- > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > Sent: Tuesday, October 22, 2002 11:07 AM > > > To: Miller, James V (Research) > > > Cc: Yinpeng Jin; Seungbum Koo; insight-users@public.kitware.com > > > Subject: RE: Re: [Insight-users] using > > > itkVoronoiSegmentationImageFilter > > > ? > > > > > > > > > > > > > > > Jim, > > > > > > Your understanding of the Voronoi filter is right: > > > "The definition of "interior" is not a homogeneity measure > > > but rather a > > > "compatibility" measure with a seed region." (I would call is > > > a "sample" > > > or "training" region). Also, you are right that the algorithm > > > "subdivides > > > the "boundary" Voronoi regions down to a specified > > > resolution". The idea is to > > > select and subdivide ONLY the regions "where the boudary is" > > > (or we think > > > where the boundary is), not to partition the image into > > > homogeneous regions. > > > > > > The idea behind this filter is that the "homogeneity > > > operator" that is > > > derived from (simple) Fuzzy Connectedness method (we also > > > experiment with > > > the vectorial relative fuzzy connectedness method to get > > > better results), > > > where a sample of tissue is segmented and compared against > > > its backgrund > > > (this is not done in an ad hoc way), captures the characteristics > > > of the sample region (of target tissue) that IS NOT > > > inherently homogeneous > > > (this is why it is expressed by FC method, that describes > > > "connectedness > > > of inherently inhomogeneous tissue that is recognized as > one object - > > > hanging-togetherness"). > > > That is the finesse of this approach. Before, we were generating > > > experimentally "homogeneity" statistcs of inherently > > > inhomogeneous regions > > > that represented one organ, and it was not a very > sophisticated way to > > > approach the problem (but it still could "drive" sucessfully > > > the Voronoi > > > Diagram classifier). Understanding the power of the fuzzy > > > connectedness > > > approach (we also experiment with the vectorial relative > > > fuzzy filter to > > > get better results) is important in understanding why > inhomogeneous > > > regions still form a "whole" structures that we can > > > perceptually recognize > > > as one. Also, this method allows us to generate the "homogeneity > > > operators" automaticaally, instead of experimentally. The way > > > we use the > > > term "homogeneous operator" really means how we can describe > > > the "homogeneous" > > > component (the "strenght" of homogeneity) of something that is not > > > homogeneous by nature. > > > > > > But, if you would like to use this filter to achieve a > partition into > > > homogeneous regions, you can easily do it. The only thing is > > > that you will > > > be able to tile the image with homogeneous regions but this > > > will not give > > > you a better estimation WHERE the object (if it is inherenty > > > inhomogeneous) is. On the other hand, there could be a > need for having > > > the new filter: > > > > > > VoronoiPartitioningImageFilter > > > > > > since it can be easily derived from the original one > (and it might be > > > potentially useful). > > > > > > I am trully glad that we are having a discussion on the > > > Voronoi Diagram > > > filter, and I agree with your interpretation of the method > > > and the your > > > proposition to extend it to a new filter (one may always > need it for > > > something else). > > > > > > I would like to also see more discussion on other > components of the > > > hybrid segmentation enginge (the "stand-alone" vectorial > > > relative fuzzy > > > connectednes, Gibbs prior, and Deformable Model), > > > > > > -Celina > > > > > > > > > > > > On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > > > > > > > I have been using the Voronoi segmentation techniques the > > > last couple of > > > > days and discovered that they do not operate the way I > > > expected. This > > > > may just be a documentation issue. > > > > > > > > >From the presentations of the algorithms at our various > > > meetings, I > > > expected the voronoi > > > > segmentations to subdivide the image until each > voronoi region was > > > "homogenous", using the classical > > > > definition of homogeneous from other split and merge > segmentation > > > techniques. So what I expected to > > > > see was a partitioning of the entire image where each > > > voronoi region > > > was "well" approximated as > > > > constant intensity (with extensions to piecewise linear > > > > and piecewise quadratic intensity surfaces). > > > > > > > > Instead, the algorithm labels each voronoi region as > > > either "interior", > > > "exterior", or "boundary" and > > > > subdivides the "boundary" voronoi regions down to a specified > > > resolution. The definition of > > > > "interior" is not a homogeneity measure but rather a > > > "compatibility" > > > measure with a seed region > > > > (where the sample mean and sample variance of the voronoi > > > region agree > > > with the estimates from the > > > > seed region using an ad-hoc criterion). > > > > > > > > I am going to try to subclass the > > > VoronoiSegmentationImageFilterBase > > > class and construct an algorithm > > > > to produce the partitioning or oversegmentation of the > > > scene that I am > > > interested in. I think I can > > > > reuse the voronoi engine and use my own TestHomogeneity() > > > method and > > > use a virtual function to > > > > replace the "interior", "exterior", "boundary" > > > designations that only > > > allow the boundary regions to > > > > be subdivided with code that will subdivide any region > that is not > > > homogeneous enough. > > > > > > > > This will give us two types of voronoi segmentation > algorithms, one > > > that roughly segments a region > > > > that intensity value "consistent" or "compatible" with a > > > seed region > > > and one that partitions the > > > > image into homogeneous regions. > > > > > > > > I am thinking of calling the new filter > > > VoronoiPartitioningImageFilter. > > > > > > > > Jim > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > > > Sent: Monday, October 21, 2002 6:19 PM > > > > > To: Yinpeng Jin > > > > > Cc: Seungbum Koo; insight-users@public.kitware.com > > > > > Subject: Re: Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter > > > > > ? > > > > > > > > > > > > > > > > > > > > Seungbum, > > > > > > > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > > > > globally all the > > > > > tissue in the image that is characterized by the > > > homogeneity operator > > > > > (derived from the fuzzy connectendness method). If you are > > > > > interested in > > > > > picking one connected component from all the segmented > > > > > regions, you may > > > > > use the DeformableMeshFilter (DM) to do the selection (and > > > > > smoothing/improvement of the final segmentation as well). > > > > > > > > > > You can't use the DeformableMeshFilter without a prior, > > > > > since this is a > > > > > boundary-based segmentation method that has to be > > > initialized near the > > > > > solution. For example, you can use as a prior the Markov > > > Random Field > > > > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > > > > itkRGBGibbsPriorFilter), > > > > > and follow with DM, then repeat iteratively MRF and DM, and > > > > > so on. There is > > > > > a new version of the DM method that can be explained, in > > > > > details, by Ting > > > > > Chen (chenting@graphics.cis.upenn.edu). > > > > > > > > > > You may try also, a stand-alone, vectorial relative fuzzy > > > > > connectedness > > > > > method, the VectorFuzzyconnectednessImageFilter, to > > > segment a region. > > > > > > > > > > The "Hybrid Segmentation Engine" consists of four > > > > > components: Deformable > > > > > Model (DM), Gibbs Prior/Markov Random Field (MRF), > Voroni Diagram > > > > > Clssifier (VD), and Fuzzy Connectedness (FC). We have > > > explored some > > > > > hybrid "mixtures" derived from the engine: e.g. > FC/VD/DM, MRF/DM, > > > > > vectorial relatice FC... but other combinations could be > > > > > tested as well. > > > > > > > > > > Please let us know if need more detailed explanation. > > > > > > > > > > good luck, > > > > > > > > > > Celina Imielinska > > > > > > > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > > > > > > > VoronoiSegmenationImageFilter is a region-based > classification, > > > > > > split-and-merge like algorithm. > > > > > > you are perfectly right, it picks up all the similar color > > > > > regions in whole > > > > > > image. It works well if you have multiple objects in > > > the image to > > > > > > segment, it was used because SimpleFuzzyConnectedness can > > > > > only pick up > > > > > > one connected component. > > > > > > there is another version of FuzzyConnectedness, which is > > > > > able to claim > > > > > > multiple objects (VectoriorFuzzyConnectedness) > > > > > > And to use Deformable Models is definitedly a good idea, > > > > > actually, all > > > > > > those three methods had been tested for combining together > > > > > to build a > > > > > > hybrid segmentation framework. > > > > > > I bet Celina, Jay and Dimitris can explain the idea > > > > > > better, for your reference, please look at following paper > > > > > in MICCAI 2001: > > > > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. > Chen, "Hybrid > > > > > > Segmentation Methods of Anatomical Data." Proceedings > > > of The Fourth > > > > > > International Conference on Medical Image Computing > and Computer > > > > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > > > > October 2001, Utrecht > > > > > > Netherlands. > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > From: Seungbum Koo > > > > > > To: Yinpeng Jin > > > > > > Cc: insight-users@public.kitware.com > > > > > > Sent: Monday, October 21, 2002 4:51 PM > > > > > > Subject: Re: Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > Hi, > > > > > > Thanks for the help. It worked and segmented but not as I > > > > > expected. I don't understand well about > > > > > VoronoiSegmentationImageFilter but it seems to segment all > > > > > similar color regions in whole image as the seed region. I > > > > > just wanted to find more exact boundary of that found using > > > > > FuzzyConnectednessScalarFilter. > > > > > > Anyway I think the VoronoiSegmentationImageFilter worked > > > > > fine. What do you think about using DeformableMeshFilter > > > > > instead of VoronoiSegmentationImageFilter? > > > > > > > > > > > > regards > > > > > > Seungbum Koo > > > > > > > > > > > > > Title : Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > > > > From : "Yinpeng Jin" > > > > > > > To : Seungbum Koo, > > > > > > > > > > > > > > if you use takeaprior, then you don't want to setMean > > > > > and setVar, those two parameters will be calculated from the > > > > > binary mask. > > > > > > > and > > > > > > > try to use > > > > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > > > > in stead of > > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > > > > > > > they are trying to manipulate the same parameter, but > > > > > usually are more intuitive to figure. > > > > > > > the MeanPercentError could usually be set > between 0.1 to 0.3 > > > > > > > and the VarPercentError could be between 1 to 3. they > > > > > don't depends on your pixel intensity range, while the > > > > > MeanTolerance and VarTolerance usually do. > > > > > > > Also, you can first output your m_binaryImage to see if > > > > > it is something reasonable. the > > > > > VoronoisegmentationImagefilter will need something at > > > least represents > > > > > > > parts of your target object as the a prior. > > > > > > > Try the above, and let me know what happens. > > > > > > > Yinpeng. > > > > > > > > > > > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > > From: Seungbum Koo > > > > > > > To: insight-users@public.kitware.com > > > > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > > > > Subject: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > > > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > > > > > > > I made a binary image from > > > > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > > > > figure out how to set itkVoronoiSegmentationImageFilter > > > > > variables. Here is my source code. > > > > > > > > > > > > > > > > > ============================================================= > > > > > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > > > > m_voronoiFilter->SetMean(520); > > > > > > > m_voronoiFilter->SetVar(20); > > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > > > > m_voronoiFilter->SetSteps(5); > > > > > > > m_voronoiFilter->Update(); > > > > > > > > > > ============================================================= > > > > > > > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > > > > as I expected. > > > > > > > But this code just makes a black image... all zeros. > > > > > > > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net > !o AEo>y3/42?A > > > > > 1<*a CN,?AI3Y !> > > > > > > > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > > > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Insight-users mailing list > > > > > Insight-users@public.kitware.com > > > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > > > > From harri.jaalinoja@helsinki.fi Tue Oct 22 18:05:40 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Tue, 22 Oct 2002 20:05:40 +0300 (EET DST) Subject: [Insight-users] Performance of 3D Watershed? Message-ID: Hi! I am running code based on the watershed example to segment a 101^3 cube of electron microscopy density data (type = short). The problem is that the code seems to stall my machine. The progress command meter writes first 3 dots almost right away, the 4th after a while, but the 5th I never saw. I am not using the gradient magnitude image filter because the density values as such should be a valid height function. I don't have a smaller data cube at the moment I could experiment with. I can simply read data from the existing file, to fill in a smaller cube. This of course messes up the structure, but might give some idea about the processing. A cube of 33^3 already stalls the machine, 32^3 is processed fairly quickly. My processor: model name : AMD Athlon(TM) XP2200+ stepping : 0 cpu MHz : 1800.110 Available memory: [hajaalin@gene work]$ free -m total used free shared buffers cached Mem: 1008 170 837 0 15 77 -/+ buffers/cache: 77 931 Swap: 243 11 231 I am running Mandrake Linux 9.0. Here's some info about the data Number of images: 1 Dimensions: 101 101 101 voxels Page dimensions: 101 101 101 voxels Channels: 1 Data type: short (size = 2) Color model: Gray scale Voxel units/sampling: 8.89903 8.89903 8.89903 A/voxel Min, max, ave, std: -1813.35 2149.04 11.9238 0 I have tried various values for the anisotropic diffusion filter. At all values a cube size can be found that is no longer processed (at least nowhere as quickly as the one step smaller cube). The biggest cube (32^3) was in fact processed without the filter. With some values I get this: ..........Exception caught during processing. Unknown itk::ERROR: itk::watershed::SegmentTreeGenerator::MergeSegments:: An unexpected and fatal error has occurred. This is probably the result of overthresholding of the input image. which at least clearly tells that something is going wrong. Based on your experience, what do you make of the numbers and ramblings above? Any ideas I could experiment with? Thanks for your help! Harri From cates@sci.utah.edu Tue Oct 22 18:56:15 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Tue, 22 Oct 2002 11:56:15 -0600 (MDT) Subject: [Insight-users] Performance of 3D Watershed? In-Reply-To: Message-ID: Hi, My first guess as to what is happening is that you are processing a data set which contains too much detail for the algorithm to handle in a reasonable time frame. The complexity of the watersheds algorithm is nonlinear, so too much detail in an image (regardless of image size) will cause executions times to blow up from seconds to hours. (Have you checked the endianness of your data? Reading in unsigned short data using the wrong byte order will give very noisy looking data.) Good preprocessing to remove noise and uninteresting detail is critical to getting a good result with the watersheds technique. Consider more iterations of the GradientMagnitudeAnisotropicDiffusionImageFilter (10 is a good number to try, with conductance term 1.0). Also, cropping the data to contain only the region you are interested in is helpful. The watersheds algorithm operates on the entire image at once, so any areas of the image which are uninteresting are only going to slow down the process for you. That said, I'm surprised that the algorithm is bogging down without using up more of your memory. Is the amount of free memory you show during processing? I have run the watersheds algorithm on MRI volumes larger than your data (256x256x123) by smoothing first with GradientAnisotropicDiffusionImageFilter 10x 1.0 conductance. After extracting edge features, the watersheds finishes in roughly 30 seconds. Hope this helps, Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Tue, 22 Oct 2002, Harri Tapio Jaalinoja wrote: > > Hi! > > I am running code based on the watershed example to segment a 101^3 cube > of electron microscopy density data (type = short). > > The problem is that the code seems to stall my machine. > The progress command meter writes first 3 dots almost right away, the 4th > after a while, but the 5th I never saw. > > I am not using the gradient magnitude image filter because the density > values as such should be a valid height function. > > I don't have a smaller data cube at the moment I could experiment with. > I can simply read data from the existing file, to fill in a smaller cube. > This of course messes up the structure, but might give some idea about the > processing. A cube of 33^3 already stalls the machine, 32^3 is processed > fairly quickly. > > My processor: > model name : AMD Athlon(TM) XP2200+ > stepping : 0 > cpu MHz : 1800.110 > > Available memory: > [hajaalin@gene work]$ free -m > total used free shared buffers cached > Mem: 1008 170 837 0 15 77 > -/+ buffers/cache: 77 931 > Swap: 243 11 231 > > I am running Mandrake Linux 9.0. > > Here's some info about the data > Number of images: 1 > Dimensions: 101 101 101 voxels > Page dimensions: 101 101 101 voxels > Channels: 1 > Data type: short (size = 2) > Color model: Gray scale > Voxel units/sampling: 8.89903 8.89903 8.89903 A/voxel > Min, max, ave, std: -1813.35 2149.04 11.9238 0 > > I have tried various values for the anisotropic diffusion filter. At all > values a cube size can be found that is no longer processed (at least > nowhere as quickly as the one step smaller cube). The biggest cube (32^3) > was in fact processed without the filter. > > With some values I get this: > ..........Exception caught during processing. > Unknown > itk::ERROR: itk::watershed::SegmentTreeGenerator::MergeSegments:: An > unexpected and fatal error has occurred. This is probably the result of > overthresholding of the input image. > > which at least clearly tells that something is going wrong. > > Based on your experience, what do you make of the numbers and ramblings > above? Any ideas I could experiment with? > > Thanks for your help! > > Harri > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From cates@sci.utah.edu Tue Oct 22 19:07:18 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Tue, 22 Oct 2002 12:07:18 -0600 (MDT) Subject: [Insight-users] Performance of 3D Watershed? In-Reply-To: Message-ID: Hi again, One more critial thing I forgot to mention: Be very conservative in setting the Level parameter of the WatershedImageFilter. Try using only 0.01 (i.e. 1%) or so as a first test, just to see what sort of results you are getting. The Lower threshold parameter is usually set very low (in my experience, less than 1%). Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Tue, 22 Oct 2002, Harri Tapio Jaalinoja wrote: > > Hi! > > I am running code based on the watershed example to segment a 101^3 cube > of electron microscopy density data (type = short). > > The problem is that the code seems to stall my machine. > The progress command meter writes first 3 dots almost right away, the 4th > after a while, but the 5th I never saw. > > I am not using the gradient magnitude image filter because the density > values as such should be a valid height function. > > I don't have a smaller data cube at the moment I could experiment with. > I can simply read data from the existing file, to fill in a smaller cube. > This of course messes up the structure, but might give some idea about the > processing. A cube of 33^3 already stalls the machine, 32^3 is processed > fairly quickly. > > My processor: > model name : AMD Athlon(TM) XP2200+ > stepping : 0 > cpu MHz : 1800.110 > > Available memory: > [hajaalin@gene work]$ free -m > total used free shared buffers cached > Mem: 1008 170 837 0 15 77 > -/+ buffers/cache: 77 931 > Swap: 243 11 231 > > I am running Mandrake Linux 9.0. > > Here's some info about the data > Number of images: 1 > Dimensions: 101 101 101 voxels > Page dimensions: 101 101 101 voxels > Channels: 1 > Data type: short (size = 2) > Color model: Gray scale > Voxel units/sampling: 8.89903 8.89903 8.89903 A/voxel > Min, max, ave, std: -1813.35 2149.04 11.9238 0 > > I have tried various values for the anisotropic diffusion filter. At all > values a cube size can be found that is no longer processed (at least > nowhere as quickly as the one step smaller cube). The biggest cube (32^3) > was in fact processed without the filter. > > With some values I get this: > ..........Exception caught during processing. > Unknown > itk::ERROR: itk::watershed::SegmentTreeGenerator::MergeSegments:: An > unexpected and fatal error has occurred. This is probably the result of > overthresholding of the input image. > > which at least clearly tells that something is going wrong. > > Based on your experience, what do you make of the numbers and ramblings > above? Any ideas I could experiment with? > > Thanks for your help! > > Harri > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From mark_foskey@unc.edu Tue Oct 22 19:38:50 2002 From: mark_foskey@unc.edu (Mark Foskey) Date: Tue, 22 Oct 2002 14:38:50 -0400 Subject: [Insight-users] Bugs (maybe) in itkDicomImageIO.cxx and questions References: Message-ID: <3DB59B3A.90202@unc.edu> There are definitely problems with this file. I am in the process of adding the key you mentioned as a step towards reading a directory full of slices into a single 3D image. A am also cleaning up some infelicities in the code, including the unfreed memory. Streams are automatically closed by their destructors, when they go out of scope. This has been on my plate for some time. Thanks for handing me a fork. Feng Ma wrote: > Hi, > > I worked a little bit with file itkDicomImageIO.cxx to read CT dicom > files. I found a few place that are possibly bugs. > > 1. In method CanReadFile(), inputStream is not closed. Nor is it closed > in CheckTagTable(). I am not experienced in C++. Does an open stream > need not to be closed? > > 2. In method ReadImageInformation(), array value, spac1value, > spac2value are not freed in the end of this method. inFile stream is not > closed. > > > Below are my questions. > > 1. Dicom header size. I printed out m_InputPosition, which is supposed > to be the dicom header size. I read one image and got the header size > 2522 (which is a 512x512 2 bytes CT image, file size 526812). this > number is different from what I got from commecial merge library. The > mergelib number is 2524 which is closer to the guess > 526812-512x512x2=2524. This happens in many files. Is the header size > reported by itkDicomImageIO class possibly wrong? > > 2. Unable to read image position tag (0x0020 0x0032). This tag is very > important to determine the z-value of the dicom image in a volume. When > I add a segment of code to read this tag, method GoToTag() simply can > not find it. I posted my code segment here. The last few lines in the > posted method CheckTagTable() is what I added. I did rewind the file > pointer before call GoToTag(). What's could be wrong? > > Btw, my ITK version is Oct 7 CVS version. > > Thank you very much. > > -Feng > > **** Run output **** > fma@ctreg1:/r2net/space_fma1/vhds/test 728 % > ../../Devel/ITKDebug/bin/DicomImageViewer > /r2net/space_fma2/data/LV00000500/LV00000500_152.dcm > Loading File: /r2net/space_fma2/data/LV00000500/LV00000500_152.dcm > Can not locate position tag 0x0020 0x0032 > Header Size: 2522 > ...Done Loading File > > **** Code segment of CheckTagTable() **** > > bool DicomImageIO::CheckTagTable(std::ifstream & inputStream,std::list > &TableOfTags) const > { > long int i, j; > long int max; > Tag tagcurrent; > unsigned char c; > char chaine[4]; > > i=0; > //0x7FE0 and 0x0010 is the last tag before data pixel > if(!DicomImageIO::GoToTheEndOfHeader(inputStream,i,tagcurrent)) > { > return (false); > } > else > { > TableOfTags.push_back(tagcurrent); > max=i; > //start the reading of the Stream from the begining > inputStream.seekg(0); > i=0; > } > > ////0x0028 and 0x0010 >> tag before the number of rows > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0010,i,max,tagcurrent)) > { > return false; > } > else > { > TableOfTags.push_back(tagcurrent); > } > > //0x0028 and 0x0011 >> tag before the number of columns > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0011,i,max,tagcurrent)) > { > return false; > } > else > { > TableOfTags.push_back(tagcurrent); > } > > //0x0028 and 0x0030 >> tag before each the value of spacing > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0030,i,max,tagcurrent)) > { > //if there is no information about the spacing, we set the value > compt to 0 > tagcurrent.Balise1[1]=0x28; > tagcurrent.Balise1[0]=0x00; > tagcurrent.Balise2[1]=0x30; > tagcurrent.Balise2[0]=0x0; > tagcurrent.compt=0; // > TableOfTags.push_back(tagcurrent); > //start the reading of the Stream from the begining > inputStream.seekg(0); > i=0; > } > else > { > TableOfTags.push_back(tagcurrent); > } > > //0x0028 and 0x0100 >> tag before the number of bits allocated > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0100,i,max,tagcurrent)) > { > return false; > } > else > { > TableOfTags.push_back(tagcurrent); > } > > //0x0028 and 0x0103 >> tag before the place of sample representation > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0103,i,max,tagcurrent)) > { > return false; > } > else > { > TableOfTags.push_back(tagcurrent); > } > > i = 0; > inputStream.seekg(0); > ////0x0020 and 0x0032 >> tag before value of position > if(DicomImageIO::GoToTag( inputStream,0x0020,0x0032, > i,max,tagcurrent)){ > std::cout << "Position tag located.\n"; > } > else > std::cout << "Can not locate position tag 0x0020 0x0032\n"; > > return(true); > } > > > > > > _________________________________________________________________ > Get faster connections -- switch to MSN Internet Access! > http://resourcecenter.msn.com/access/plans/default.asp > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-user > s -- Mark Foskey (919) 843-5436 Computer-Aided Diagnosis and Display Lab mark_foskey@unc.edu Department of Radiology, CB 7515, UNC http://www.cs.unc.edu/~foskey Chapel Hill, NC 27599-7515 From ci42@columbia.edu Tue Oct 22 19:52:11 2002 From: ci42@columbia.edu (Celina Imielinska) Date: Tue, 22 Oct 2002 14:52:11 -0400 (EDT) Subject: [Insight-users] using itkVoronoiSegmentationImageFilter ? In-Reply-To: <002301c279e6$18b02070$75313b80@segment> Message-ID: Yinpeng, that could be many ways how the homogeneity operator is built from a sample region, where the region is selected/grown by the fuzzy connectedness method. Thus, selecting the sample region is the step where the the "strength" of homogeneity of a region, that might be inherently inhomogeneous (but "hanging together" as a one structure), is captured. Partitioning of an image into trully homogeneous regions, while might be useful for inherently homogeneous objects, will definitely miss the more complex regions that we try to segment (the "hanging-togetherness" will not be captured)... Or we can say that if we will train our algorithm on a highly homogeneous target region, then the resulting homogeneity operator should work perfectly on segmenting "all regions" that match this homogeneity criteria... -Celina On Tue, 22 Oct 2002, Yinpeng Jin wrote: > I think Jim is right, you can certainly build more "advanced" homogeneity > operator based on t-test or some other measurements. > that is also what Elsa did before, she used some histogram based operator to > mearsuring the homogeneity (not checked into ITK yet). > actually, the VoronoiSegmenation we were using is rather a "matching" > operator, which defines some descriptions (mean, std) of the > target object, and trying to find regions that matches those descriptions > within a certain tolerance level. > And as we presented before in the ITK meeting, the > VoronoiSegmenationImageFilterBase provide a general framework of > segmentation based on > this concept, and developer can build their own TestHomogeneity() for their > own voronoi segmentation filters, and any reasonable description parameters > can be added in for the "matching" purpose. > But I am not so sure if the "partitioning" filter can be easily derived from > this base class. certainly, the whole structure might be > similar, a new base class might be needed. > I think we can keep the the same design, e.g. a base class for the > "partitioning" functionality. > and user/developer can derive their own class by adding in different > homogenerity operators. > > > > ----- Original Message ----- > From: "Miller, James V (Research)" > To: "'Celina Imielinska'" > Cc: "Yinpeng Jin" ; "Seungbum Koo" ; > > Sent: Tuesday, October 22, 2002 11:35 AM > Subject: RE: Re: [Insight-users] using itkVoronoiSegmentationImageFilter ? > > > > Celina, > > > > I am not sure the VoronoiSegmentationImage filter is using the fuzzy > > connectedness criterion to measure homogeneity. I have to admit that > > I don't have the formula for the (simple) fuzzy connectedness criterion > > in front of me. But the VoronoiSegmentation code is merely comparing > > (sample) means and (sample variances) based on the following: > > > > 1. sample mean of the region is within a specified percentage of the > training mean > > 2. sample variance is less than a specified percentage of the training > > variance. > > > > I think a better statistic would be the two sample Student-t test or the > > two sample Hotelling T^2 statistic that would compare the difference in > > sample means taking into account the sample variances and the number of > > samples used in calculing the region sample mean (variance) and the > > training sample mean (and variance). > > > > This statistic is a Mahananobis (intensity) distance between the training > set and the current region. > > Have you tried these types of statistics before? > > > > My interest in the "partitioning" version of the algorithm is not so > > much to segment to the boundary of a piece of anatomy but to characterize > > the texture in a piece of anatomy as it relates to function and disease. > > > > Jim > > > > > > > > > -----Original Message----- > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > Sent: Tuesday, October 22, 2002 11:07 AM > > > To: Miller, James V (Research) > > > Cc: Yinpeng Jin; Seungbum Koo; insight-users@public.kitware.com > > > Subject: RE: Re: [Insight-users] using > > > itkVoronoiSegmentationImageFilter > > > ? > > > > > > > > > > > > > > > Jim, > > > > > > Your understanding of the Voronoi filter is right: > > > "The definition of "interior" is not a homogeneity measure > > > but rather a > > > "compatibility" measure with a seed region." (I would call is > > > a "sample" > > > or "training" region). Also, you are right that the algorithm > > > "subdivides > > > the "boundary" Voronoi regions down to a specified > > > resolution". The idea is to > > > select and subdivide ONLY the regions "where the boudary is" > > > (or we think > > > where the boundary is), not to partition the image into > > > homogeneous regions. > > > > > > The idea behind this filter is that the "homogeneity > > > operator" that is > > > derived from (simple) Fuzzy Connectedness method (we also > > > experiment with > > > the vectorial relative fuzzy connectedness method to get > > > better results), > > > where a sample of tissue is segmented and compared against > > > its backgrund > > > (this is not done in an ad hoc way), captures the characteristics > > > of the sample region (of target tissue) that IS NOT > > > inherently homogeneous > > > (this is why it is expressed by FC method, that describes > > > "connectedness > > > of inherently inhomogeneous tissue that is recognized as one object - > > > hanging-togetherness"). > > > That is the finesse of this approach. Before, we were generating > > > experimentally "homogeneity" statistcs of inherently > > > inhomogeneous regions > > > that represented one organ, and it was not a very sophisticated way to > > > approach the problem (but it still could "drive" sucessfully > > > the Voronoi > > > Diagram classifier). Understanding the power of the fuzzy > > > connectedness > > > approach (we also experiment with the vectorial relative > > > fuzzy filter to > > > get better results) is important in understanding why inhomogeneous > > > regions still form a "whole" structures that we can > > > perceptually recognize > > > as one. Also, this method allows us to generate the "homogeneity > > > operators" automaticaally, instead of experimentally. The way > > > we use the > > > term "homogeneous operator" really means how we can describe > > > the "homogeneous" > > > component (the "strenght" of homogeneity) of something that is not > > > homogeneous by nature. > > > > > > But, if you would like to use this filter to achieve a partition into > > > homogeneous regions, you can easily do it. The only thing is > > > that you will > > > be able to tile the image with homogeneous regions but this > > > will not give > > > you a better estimation WHERE the object (if it is inherenty > > > inhomogeneous) is. On the other hand, there could be a need for having > > > the new filter: > > > > > > VoronoiPartitioningImageFilter > > > > > > since it can be easily derived from the original one (and it might be > > > potentially useful). > > > > > > I am trully glad that we are having a discussion on the > > > Voronoi Diagram > > > filter, and I agree with your interpretation of the method > > > and the your > > > proposition to extend it to a new filter (one may always need it for > > > something else). > > > > > > I would like to also see more discussion on other components of the > > > hybrid segmentation enginge (the "stand-alone" vectorial > > > relative fuzzy > > > connectednes, Gibbs prior, and Deformable Model), > > > > > > -Celina > > > > > > > > > > > > On Tue, 22 Oct 2002, Miller, James V (Research) wrote: > > > > > > > I have been using the Voronoi segmentation techniques the > > > last couple of > > > > days and discovered that they do not operate the way I > > > expected. This > > > > may just be a documentation issue. > > > > > > > > >From the presentations of the algorithms at our various > > > meetings, I > > > expected the voronoi > > > > segmentations to subdivide the image until each voronoi region was > > > "homogenous", using the classical > > > > definition of homogeneous from other split and merge segmentation > > > techniques. So what I expected to > > > > see was a partitioning of the entire image where each > > > voronoi region > > > was "well" approximated as > > > > constant intensity (with extensions to piecewise linear > > > > and piecewise quadratic intensity surfaces). > > > > > > > > Instead, the algorithm labels each voronoi region as > > > either "interior", > > > "exterior", or "boundary" and > > > > subdivides the "boundary" voronoi regions down to a specified > > > resolution. The definition of > > > > "interior" is not a homogeneity measure but rather a > > > "compatibility" > > > measure with a seed region > > > > (where the sample mean and sample variance of the voronoi > > > region agree > > > with the estimates from the > > > > seed region using an ad-hoc criterion). > > > > > > > > I am going to try to subclass the > > > VoronoiSegmentationImageFilterBase > > > class and construct an algorithm > > > > to produce the partitioning or oversegmentation of the > > > scene that I am > > > interested in. I think I can > > > > reuse the voronoi engine and use my own TestHomogeneity() > > > method and > > > use a virtual function to > > > > replace the "interior", "exterior", "boundary" > > > designations that only > > > allow the boundary regions to > > > > be subdivided with code that will subdivide any region that is not > > > homogeneous enough. > > > > > > > > This will give us two types of voronoi segmentation algorithms, one > > > that roughly segments a region > > > > that intensity value "consistent" or "compatible" with a > > > seed region > > > and one that partitions the > > > > image into homogeneous regions. > > > > > > > > I am thinking of calling the new filter > > > VoronoiPartitioningImageFilter. > > > > > > > > Jim > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > From: Celina Imielinska [mailto:ci42@columbia.edu] > > > > > Sent: Monday, October 21, 2002 6:19 PM > > > > > To: Yinpeng Jin > > > > > Cc: Seungbum Koo; insight-users@public.kitware.com > > > > > Subject: Re: Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter > > > > > ? > > > > > > > > > > > > > > > > > > > > Seungbum, > > > > > > > > > > as Yinpeng said, the Voronoi Diagram classifier segments > > > > > globally all the > > > > > tissue in the image that is characterized by the > > > homogeneity operator > > > > > (derived from the fuzzy connectendness method). If you are > > > > > interested in > > > > > picking one connected component from all the segmented > > > > > regions, you may > > > > > use the DeformableMeshFilter (DM) to do the selection (and > > > > > smoothing/improvement of the final segmentation as well). > > > > > > > > > > You can't use the DeformableMeshFilter without a prior, > > > > > since this is a > > > > > boundary-based segmentation method that has to be > > > initialized near the > > > > > solution. For example, you can use as a prior the Markov > > > Random Field > > > > > (MRF)/Gibbs Prior, the itkGibbsPriorFilter (or > > > > > itkRGBGibbsPriorFilter), > > > > > and follow with DM, then repeat iteratively MRF and DM, and > > > > > so on. There is > > > > > a new version of the DM method that can be explained, in > > > > > details, by Ting > > > > > Chen (chenting@graphics.cis.upenn.edu). > > > > > > > > > > You may try also, a stand-alone, vectorial relative fuzzy > > > > > connectedness > > > > > method, the VectorFuzzyconnectednessImageFilter, to > > > segment a region. > > > > > > > > > > The "Hybrid Segmentation Engine" consists of four > > > > > components: Deformable > > > > > Model (DM), Gibbs Prior/Markov Random Field (MRF), Voroni Diagram > > > > > Clssifier (VD), and Fuzzy Connectedness (FC). We have > > > explored some > > > > > hybrid "mixtures" derived from the engine: e.g. FC/VD/DM, MRF/DM, > > > > > vectorial relatice FC... but other combinations could be > > > > > tested as well. > > > > > > > > > > Please let us know if need more detailed explanation. > > > > > > > > > > good luck, > > > > > > > > > > Celina Imielinska > > > > > > > > > > On Mon, 21 Oct 2002, Yinpeng Jin wrote: > > > > > > > > > > > VoronoiSegmenationImageFilter is a region-based classification, > > > > > > split-and-merge like algorithm. > > > > > > you are perfectly right, it picks up all the similar color > > > > > regions in whole > > > > > > image. It works well if you have multiple objects in > > > the image to > > > > > > segment, it was used because SimpleFuzzyConnectedness can > > > > > only pick up > > > > > > one connected component. > > > > > > there is another version of FuzzyConnectedness, which is > > > > > able to claim > > > > > > multiple objects (VectoriorFuzzyConnectedness) > > > > > > And to use Deformable Models is definitedly a good idea, > > > > > actually, all > > > > > > those three methods had been tested for combining together > > > > > to build a > > > > > > hybrid segmentation framework. > > > > > > I bet Celina, Jay and Dimitris can explain the idea > > > > > > better, for your reference, please look at following paper > > > > > in MICCAI 2001: > > > > > > C. Imielinska, D. Metaxas, J. Udupa, Y.Jin and T. Chen, "Hybrid > > > > > > Segmentation Methods of Anatomical Data." Proceedings > > > of The Fourth > > > > > > International Conference on Medical Image Computing and Computer > > > > > > Assisted Interventions (MICCAI 2001), pp. 1058-1066, > > > > > October 2001, Utrecht > > > > > > Netherlands. > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > From: Seungbum Koo > > > > > > To: Yinpeng Jin > > > > > > Cc: insight-users@public.kitware.com > > > > > > Sent: Monday, October 21, 2002 4:51 PM > > > > > > Subject: Re: Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > Hi, > > > > > > Thanks for the help. It worked and segmented but not as I > > > > > expected. I don't understand well about > > > > > VoronoiSegmentationImageFilter but it seems to segment all > > > > > similar color regions in whole image as the seed region. I > > > > > just wanted to find more exact boundary of that found using > > > > > FuzzyConnectednessScalarFilter. > > > > > > Anyway I think the VoronoiSegmentationImageFilter worked > > > > > fine. What do you think about using DeformableMeshFilter > > > > > instead of VoronoiSegmentationImageFilter? > > > > > > > > > > > > regards > > > > > > Seungbum Koo > > > > > > > > > > > > > Title : Re: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > Date : Sun, 20 Oct 2002 13:34:32 -0400 > > > > > > > From : "Yinpeng Jin" > > > > > > > To : Seungbum Koo, > > > > > > > > > > > > > > if you use takeaprior, then you don't want to setMean > > > > > and setVar, those two parameters will be calculated from the > > > > > binary mask. > > > > > > > and > > > > > > > try to use > > > > > > > m_voronoiFilter->SetMeanPercentError(PERCENT); > > > > > > > m_voronoiFilter->SetVarPercentError(VARPERCENT); > > > > > > > in stead of > > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > > > > > > > > they are trying to manipulate the same parameter, but > > > > > usually are more intuitive to figure. > > > > > > > the MeanPercentError could usually be set between 0.1 to 0.3 > > > > > > > and the VarPercentError could be between 1 to 3. they > > > > > don't depends on your pixel intensity range, while the > > > > > MeanTolerance and VarTolerance usually do. > > > > > > > Also, you can first output your m_binaryImage to see if > > > > > it is something reasonable. the > > > > > VoronoisegmentationImagefilter will need something at > > > least represents > > > > > > > parts of your target object as the a prior. > > > > > > > Try the above, and let me know what happens. > > > > > > > Yinpeng. > > > > > > > > > > > > > > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > > > From: Seungbum Koo > > > > > > > To: insight-users@public.kitware.com > > > > > > > Sent: Sunday, October 20, 2002 12:45 AM > > > > > > > Subject: [Insight-users] using > > > > > itkVoronoiSegmentationImageFilter ? > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I'm trying to use itkVoronoiSegmentationImageFilter > > > > > combined with itkSimpleFuzzyConnectednessScalarImageFilter. > > > > > > > > > > > > > > I made a binary image from > > > > > itkSimpleFuzzyConnectednessScalarImageFilter but I couldn't > > > > > figure out how to set itkVoronoiSegmentationImageFilter > > > > > variables. Here is my source code. > > > > > > > > > > > > > > > > > ============================================================= > > > > > > > m_voronoiFilter->SetInput(m_rawImageSource->GetOutput()); > > > > > > > m_voronoiFilter->TakeAPrior(m_binaryImage); > > > > > > > m_voronoiFilter->SetMean(520); > > > > > > > m_voronoiFilter->SetVar(20); > > > > > > > m_voronoiFilter->SetMeanTolerance(10); > > > > > > > m_voronoiFilter->SetVarTolerance(20); > > > > > > > // m_voronoiFilter->SetNumberOfSeeds(400); // ?? > > > > > > > m_voronoiFilter->SetSteps(5); > > > > > > > m_voronoiFilter->Update(); > > > > > > > > > > ============================================================= > > > > > > > > > > > > > > m_binaryImage is calculated from m_rawImageSource and > > > > > as I expected. > > > > > > > But this code just makes a black image... all zeros. > > > > > > > > > > > > > Seungbum Koo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "?i,(r) AIAI3Y, Daum" http://www.daum.net !o AEo>y3/42?A > > > > > 1<*a CN,?AI3Y !> > > > > > > > > > > > > ou,??U! AEiCI?U! Daum,?1/2AAu > > > > > > ,AAI,AAI 3/42?i ?e1/2AAO? Daum??AIA > > > > > DaumE,?oAC CE1/4oC?! ?A?ACA AO?iAC CyAA~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Insight-users mailing list > > > > > Insight-users@public.kitware.com > > > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Wed Oct 23 05:47:46 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 23 Oct 2002 00:47:46 -0400 Subject: [Insight-users] itk Gradient Descent Optimizer: Message-ID: <3DB629F2.6070900@kitware.com> Hi digvijay Thanks for sending the code the class you wrote using the itk::GradientDescent optimizer. -- The segmentation fault is generated by the GetValue() method of your cost function. You are using intermediate values in an array of size 10000. The computation however, attempts to access the element # 10003. (out of bounds). You can easily track this down using gdb and/or valgrind. Or the debugger of VC++ if you are working under windows. The problem is originated by the following code in the GetValue() method, around line 570 for(j = 0 ; Intensity[j] != -1 ; j++) { temp_one[j] = Frequency[j] - maxfrequency_one*(exp((-1)*pow((Intensity[j] - nu_one),2)/pow(sigma_one,2))) - constant_term ; if (temp_one[j] < 0) temp_one[j] = (-1)*(temp_one[j]); if (j != 0) temp_one[j] = temp_one[j] + temp_one[j-1]; } ------------ Also, a couple of minor details, in your code you are using using namespace std; using namespace itk; This is not a good practice. It is like having very secure doors and leaving them open. If you open the namespaces all the types are visible as if they were defined in the global namespace. This opens the posibilities for name conflicts. Please try to use the namespaces with every type: like itk::Image and std::cout --------------- Please let us know if you find further problems Thanks Luis From ghamarneh@yahoo.com Wed Oct 23 15:11:27 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Wed, 23 Oct 2002 10:11:27 -0400 (EDT) Subject: [Insight-users] Problem building on linux Message-ID: <20021023141128.19095.qmail@web11504.mail.yahoo.com> Hi, I am now stuck on the error below, any advise on how to overcome it? (I am using the ITK CVS version) Thanks, /Ghassan /lhome/ghassan/Cable/Executables/cable /lhome/ghassan/Insight/Wrapping/Tcl/Numerics/wrap_ITKNumerics.cxx -tcl wrap_ITKNumerics_tc l.cxx --gccxml-compiler /usr/bin/c++ -I/lhome/ghassan/Insight/Wrapping/Tcl/Numerics -I/lhome/ghassan/Insight/Code/Algorithms -I/l home/ghassan/Insight/Code/BasicFilters -I/lhome/ghassan/Insight/Code/Common -I/lhome/ghassan/Insight/Code/Numerics -I/lhome/ghass an/Insight/Code/IO -I/lhome/ghassan/Insight/Code/Numerics/FEM -I/lhome/ghassan/Insight/Code/Numerics/Statistics -I/lhome/ghassan/ Insight/Code/Numerics/vxl -I/lhome/ghassan/Insight/Code/Numerics/vxl/vcl -I/lhome/ghassan/Insight/Code/SpatialObject -I/lhome/gha ssan/Insight/Utilities/png -I/lhome/ghassan/Insight/Utilities/zlib -I/lhome/ghassan/Insight/Utilities/MetaIO -I/lhome/ghassan/Ins ight -I/lhome/ghassan/VTK/Rendering -I/lhome/ghassan/VTK/Hybrid -I/lhome/ghassan/VTK -I/lhome/ghassan/VTK/Common -I/lhome/ghassan /VTK/Filtering -I/lhome/ghassan/VTK/Imaging -I/lhome/ghassan/VTK/Graphics -I/lhome/ghassan/VTK/IO -I/lhome/ghassan/VTK/Utilities/ zlib -I/lhome/ghassan/VTK/Utilities/png -I/lhome/ghassan/VTK/Utilities/jpeg -I/lhome/ghassan/VTK/Common/Testing/Cxx -I/usr/includ e -I/usr/include/python1.5 -I/lhome/ghassan/Cable -I/lhome/ghassan/Insight/Code/Numerics/vxl/vcl/doc -I/lhome/ghassan/Insight/Cod e/Numerics/vxl/vnl -I/lhome/ghassan/Insight/Wrapping/Tcl -I/lhome/ghassan/Insight/Wrapping/Tcl/Numerics /lhome/ghassan/Cable/Executables/cable: relocation error: /lhome/ghassan/Cable/Executables/cable: undefined symbol: __dynamic_cas t_2 make[7]: *** [/lhome/ghassan/Insight/Wrapping/Tcl/Numerics/wrap_ITKNumerics_tcl.cxx] Error 127 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Numerics] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Tcl] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Wrapping] Error 2 make: *** [default_target] Error 2 ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From harri.jaalinoja@helsinki.fi Wed Oct 23 15:22:15 2002 From: harri.jaalinoja@helsinki.fi (Harri Tapio Jaalinoja) Date: Wed, 23 Oct 2002 17:22:15 +0300 (EET DST) Subject: [Insight-users] Performance of 3D Watershed? In-Reply-To: Message-ID: Hi Joshua, thanks for your help! Right endianness did the trick. I have yet to figure out how to visualize the structure (we use OpenDX), but apart from fine tuning the filtering values, the segmentation code seems to be in place. So easy? Thanks, Harri On Tue, 22 Oct 2002, Joshua Cates wrote: > Hi, > > My first guess as to what is happening is that you are processing a data > set which contains too much detail for the algorithm to handle in a > reasonable time frame. The complexity of the watersheds algorithm is > nonlinear, so too much detail in an image (regardless of image size) will > cause executions times to blow up from seconds to hours. (Have you > checked the endianness of your data? Reading in unsigned short data using > the wrong byte order will give very noisy looking data.) > > Good preprocessing to remove noise and uninteresting detail is critical to > getting a good result with the watersheds technique. Consider more > iterations of the GradientMagnitudeAnisotropicDiffusionImageFilter (10 is > a good number to try, with conductance term 1.0). Also, cropping the data > to contain only the region you are interested in is helpful. The > watersheds algorithm operates on the entire image at once, so any areas of > the image which are uninteresting are only going to slow down the process > for you. > > That said, I'm surprised that the algorithm is bogging down without using > up more of your memory. Is the amount of free memory you show during > processing? I have run the watersheds algorithm on MRI volumes larger > than your data (256x256x123) by smoothing first with > GradientAnisotropicDiffusionImageFilter 10x 1.0 conductance. After > extracting edge features, the watersheds finishes in roughly 30 seconds. > > Hope this helps, > > Josh. > > ______________________________ > Josh Cates > School of Computer Science > University of Utah > Email: cates@sci.utah.edu > Phone: (801) 587-7697 > URL: www.cs.utk.edu/~cates > > > On Tue, 22 Oct 2002, Harri Tapio Jaalinoja wrote: > > > > > Hi! > > > > I am running code based on the watershed example to segment a 101^3 cube > > of electron microscopy density data (type = short). > > > > The problem is that the code seems to stall my machine. > > The progress command meter writes first 3 dots almost right away, the 4th > > after a while, but the 5th I never saw. > > > > I am not using the gradient magnitude image filter because the density > > values as such should be a valid height function. > > > > I don't have a smaller data cube at the moment I could experiment with. > > I can simply read data from the existing file, to fill in a smaller cube. > > This of course messes up the structure, but might give some idea about the > > processing. A cube of 33^3 already stalls the machine, 32^3 is processed > > fairly quickly. > > > > My processor: > > model name : AMD Athlon(TM) XP2200+ > > stepping : 0 > > cpu MHz : 1800.110 > > > > Available memory: > > [hajaalin@gene work]$ free -m > > total used free shared buffers cached > > Mem: 1008 170 837 0 15 77 > > -/+ buffers/cache: 77 931 > > Swap: 243 11 231 > > > > I am running Mandrake Linux 9.0. > > > > Here's some info about the data > > Number of images: 1 > > Dimensions: 101 101 101 voxels > > Page dimensions: 101 101 101 voxels > > Channels: 1 > > Data type: short (size = 2) > > Color model: Gray scale > > Voxel units/sampling: 8.89903 8.89903 8.89903 A/voxel > > Min, max, ave, std: -1813.35 2149.04 11.9238 0 > > > > I have tried various values for the anisotropic diffusion filter. At all > > values a cube size can be found that is no longer processed (at least > > nowhere as quickly as the one step smaller cube). The biggest cube (32^3) > > was in fact processed without the filter. > > > > With some values I get this: > > ..........Exception caught during processing. > > Unknown > > itk::ERROR: itk::watershed::SegmentTreeGenerator::MergeSegments:: An > > unexpected and fatal error has occurred. This is probably the result of > > overthresholding of the input image. > > > > which at least clearly tells that something is going wrong. > > > > Based on your experience, what do you make of the numbers and ramblings > > above? Any ideas I could experiment with? > > > > Thanks for your help! > > > > Harri > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > From brad.king@kitware.com Wed Oct 23 15:30:19 2002 From: brad.king@kitware.com (Brad King) Date: Wed, 23 Oct 2002 10:30:19 -0400 (EDT) Subject: [Insight-users] Problem building on linux In-Reply-To: <20021023141128.19095.qmail@web11504.mail.yahoo.com> Message-ID: > /lhome/ghassan/Cable/Executables/cable: relocation error: > /lhome/ghassan/Cable/Executables/cable: undefined symbol: __dynamic_cas > t_2 What compiler(s) are you using? This problem has been known to occur when some mixture of gcc 2.95 and 2.96 are used. Please send the output of this command: ldd /lhome/ghassan/Cable/Executables/cable Thanks, -Brad From cates@sci.utah.edu Wed Oct 23 16:16:04 2002 From: cates@sci.utah.edu (Joshua Cates) Date: Wed, 23 Oct 2002 09:16:04 -0600 (MDT) Subject: [Insight-users] Performance of 3D Watershed? In-Reply-To: Message-ID: Hi Harri, Glad you got this working. For visualization, I would suggest mapping the unsigned long labels to different RGB values and looking at slices of your data. (If quantize to 256 graylevels, but you will probably be losing a lot of information.) Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@sci.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates On Wed, 23 Oct 2002, Harri Tapio Jaalinoja wrote: > > Hi Joshua, > > thanks for your help! Right endianness did the trick. > > I have yet to figure out how to visualize the structure (we use OpenDX), > but apart from fine tuning the filtering values, the segmentation > code seems to be in place. So easy? > > Thanks, > Harri > > On Tue, 22 Oct 2002, Joshua Cates wrote: > > > Hi, > > > > My first guess as to what is happening is that you are processing a data > > set which contains too much detail for the algorithm to handle in a > > reasonable time frame. The complexity of the watersheds algorithm is > > nonlinear, so too much detail in an image (regardless of image size) will > > cause executions times to blow up from seconds to hours. (Have you > > checked the endianness of your data? Reading in unsigned short data using > > the wrong byte order will give very noisy looking data.) > > > > Good preprocessing to remove noise and uninteresting detail is critical to > > getting a good result with the watersheds technique. Consider more > > iterations of the GradientMagnitudeAnisotropicDiffusionImageFilter (10 is > > a good number to try, with conductance term 1.0). Also, cropping the data > > to contain only the region you are interested in is helpful. The > > watersheds algorithm operates on the entire image at once, so any areas of > > the image which are uninteresting are only going to slow down the process > > for you. > > > > That said, I'm surprised that the algorithm is bogging down without using > > up more of your memory. Is the amount of free memory you show during > > processing? I have run the watersheds algorithm on MRI volumes larger > > than your data (256x256x123) by smoothing first with > > GradientAnisotropicDiffusionImageFilter 10x 1.0 conductance. After > > extracting edge features, the watersheds finishes in roughly 30 seconds. > > > > Hope this helps, > > > > Josh. > > > > ______________________________ > > Josh Cates > > School of Computer Science > > University of Utah > > Email: cates@sci.utah.edu > > Phone: (801) 587-7697 > > URL: www.cs.utk.edu/~cates > > > > > > On Tue, 22 Oct 2002, Harri Tapio Jaalinoja wrote: > > > > > > > > Hi! > > > > > > I am running code based on the watershed example to segment a 101^3 cube > > > of electron microscopy density data (type = short). > > > > > > The problem is that the code seems to stall my machine. > > > The progress command meter writes first 3 dots almost right away, the 4th > > > after a while, but the 5th I never saw. > > > > > > I am not using the gradient magnitude image filter because the density > > > values as such should be a valid height function. > > > > > > I don't have a smaller data cube at the moment I could experiment with. > > > I can simply read data from the existing file, to fill in a smaller cube. > > > This of course messes up the structure, but might give some idea about the > > > processing. A cube of 33^3 already stalls the machine, 32^3 is processed > > > fairly quickly. > > > > > > My processor: > > > model name : AMD Athlon(TM) XP2200+ > > > stepping : 0 > > > cpu MHz : 1800.110 > > > > > > Available memory: > > > [hajaalin@gene work]$ free -m > > > total used free shared buffers cached > > > Mem: 1008 170 837 0 15 77 > > > -/+ buffers/cache: 77 931 > > > Swap: 243 11 231 > > > > > > I am running Mandrake Linux 9.0. > > > > > > Here's some info about the data > > > Number of images: 1 > > > Dimensions: 101 101 101 voxels > > > Page dimensions: 101 101 101 voxels > > > Channels: 1 > > > Data type: short (size = 2) > > > Color model: Gray scale > > > Voxel units/sampling: 8.89903 8.89903 8.89903 A/voxel > > > Min, max, ave, std: -1813.35 2149.04 11.9238 0 > > > > > > I have tried various values for the anisotropic diffusion filter. At all > > > values a cube size can be found that is no longer processed (at least > > > nowhere as quickly as the one step smaller cube). The biggest cube (32^3) > > > was in fact processed without the filter. > > > > > > With some values I get this: > > > ..........Exception caught during processing. > > > Unknown > > > itk::ERROR: itk::watershed::SegmentTreeGenerator::MergeSegments:: An > > > unexpected and fatal error has occurred. This is probably the result of > > > overthresholding of the input image. > > > > > > which at least clearly tells that something is going wrong. > > > > > > Based on your experience, what do you make of the numbers and ramblings > > > above? Any ideas I could experiment with? > > > > > > Thanks for your help! > > > > > > Harri > > > > > > _______________________________________________ > > > Insight-users mailing list > > > Insight-users@public.kitware.com > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From h.huisman@rad.umcn.nl Wed Oct 23 16:24:08 2002 From: h.huisman@rad.umcn.nl (h.huisman@rad.umcn.nl) Date: Wed, 23 Oct 2002 17:24:08 +0200 (CEST) Subject: [Insight-users] Interpolate covariant vector values Message-ID: Hi, Would like to interpolate in between gradient vectors that are of the itkCovariantVector type. Unfortunately, VectorInterpolateImageFunction does not accept this type. Somebody has a solution? Henkjan --------------------------------------------------------------------- H.J. Huisman, PhD, MSEE E : h.huisman@rad.umcn.nl Biomedical Physicist T : +31 24 3617536/14545 Dept. Radiology F : +31 24 3540866 UMC St. Radboud S : 430 Radiologie/POBox 9101/ 6500HB Nijmegen/Netherlands From ghamarneh@yahoo.com Wed Oct 23 18:24:17 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Wed, 23 Oct 2002 13:24:17 -0400 (EDT) Subject: [Insight-users] Problem building on linux In-Reply-To: Message-ID: <20021023172417.5370.qmail@web11505.mail.yahoo.com> --- Brad King wrote: > > /lhome/ghassan/Cable/Executables/cable: relocation error: > > /lhome/ghassan/Cable/Executables/cable: undefined symbol: __dynamic_cas > > t_2 > > What compiler(s) are you using? This problem has been known to occur when $ gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85) > some mixture of gcc 2.95 and 2.96 are used. Please send the output of > this command: > > ldd /lhome/ghassan/Cable/Executables/cable Output: libstdc++-libc6.2-2.so.3 => /lhome/ghassan/MATLAB13/sys/os/glnx86/libstdc++-libc6.2-2.so.3 (0x40018000) libm.so.6 => /lib/i686/libm.so.6 (0x40074000) libc.so.6 => /lib/i686/libc.so.6 (0x40097000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > Thanks, > -Brad > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From luis.ibanez@kitware.com Wed Oct 23 18:40:03 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 23 Oct 2002 13:40:03 -0400 Subject: [Insight-users] Interpolate covariant vector values References: Message-ID: <3DB6DEF3.3020401@kitware.com> Hi Henkjan, The reason why the VectorInterpolateImageFunction cannot manage CovariantVectors is because the Dimension in the CovariantVector is named "CovariantVectorDimension". Renaming it to "VectorDimension" gets rid of the problem. This has been changed now to make both classes more compatible. You can get the new versions by updating from cvs or by downloading the files through cvsweb. http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Code/Common/itkCovariantVector.h?cvsroot=Insight http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Code/Common/itkCovariantVector.txx?cvsroot=Insight With these changes you should be able to use the VectorInterpolator with CovariantVectors as template parameter. Thanks for pointing this out, Luis ----------------------------------------------------------- h.huisman@rad.umcn.nl wrote: > Hi, > > Would like to interpolate in between gradient vectors that are of the > itkCovariantVector type. Unfortunately, VectorInterpolateImageFunction > does not accept this type. Somebody has a solution? > > > Henkjan > > --------------------------------------------------------------------- > H.J. Huisman, PhD, MSEE E : h.huisman@rad.umcn.nl > Biomedical Physicist T : +31 24 3617536/14545 > Dept. Radiology F : +31 24 3540866 > UMC St. Radboud S : 430 Radiologie/POBox 9101/ > 6500HB Nijmegen/Netherlands > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From luis.ibanez@kitware.com Wed Oct 23 19:26:41 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 23 Oct 2002 14:26:41 -0400 Subject: [Insight-users] Re: itk Gradient Descent Optimizer References: <20021023180255.56263.qmail@web13702.mail.yahoo.com> Message-ID: <3DB6E9E1.2090106@kitware.com> Hi digvijay const correctness is good const correctness is good const correctness is good const correctness is good ... The reason why GetValue() and GetDerivative() must be const methods in the itk:: cost function is that the evaluation of a function should *not* make the function change. This is particularly important in the framework of optimization. If your CostFunction keeps changing every time you evaluate it, how can the optimizer keep track of the functions behavior ? It will start looking like quantum mechanics... :-) That being said, If the CostFunction requires internal auxiliary variables to change *and* you can guarrantee that these variables do not represent the state of the cost function, then you can take advantage of the "mutable" keyword. Just declare these auxiliary variables "mutable" in the class declaration. This will enable them to be modified inside 'const' methods. Be careful, using "mutable" is not a good practice in general. You may want to prepare a good explanation of why do you need to use it. I would suggest to step back a little bit in your code, reconsider the design of the classes and the distribution of responsibilites among them. As far as I could see from your code, you seem to be optimizing a redistribution of the image histogram based in some quality metric. Is that right ? Could you describe the top level of what you are implementing, The gradient descent optimizer is not implementing constraints. You could simulate this behavior by using lagrange multipliers and computing a contribution of the constrainst to the CostFunction value. Luis =================================================== digvijay singh wrote: > hi luis!! > The declaration of GetValue() and GetDerivative() as > const imposes limitations on controlling the limits of > specific parameters. If i need to constraint the > growth of parameter 1 to say within 15 % of its value > how could i do that...the trueparameters just seems to > return the goodness of fit in some way....kindly > advise.. > thanks > digvijay > > __________________________________________________ > Do you Yahoo!? > Y! Web Hosting - Let the expert host your web site > http://webhosting.yahoo.com/ > > From luis.ibanez@kitware.com Wed Oct 23 19:32:08 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 23 Oct 2002 14:32:08 -0400 Subject: [Insight-users] Re: Problem building ITK on Mac OS X References: Message-ID: <3DB6EB28.2030407@kitware.com> Hi Ricardo, 1) What version of CMake are you using ? is it the same that you use for configuring ITK ? 2) In addition to providing the ITK_BINARY_PATH, did you changed any other CMake variable during the configuration of the SampleProject ? Thanks Luis ======================================================================= Ricardo Ferrari wrote: > > Hi Luis, > > I've gotten the ITK compiled in my machine. I've just removed the > directory and installed everything again. Bingo !! The SHARED library > is required in Mac OS X because the way Mac deal with dynamic libraries. > > However, I am trying to compile the SampleProject without success. > After setting the UseITK.cmake as > > //What is the path where the file UseITK.cmake can be found > ITK_BINARY_PATH:PATH=/Network/Servers/mrc-filer.crha-health.ab.ca/vol/ > home/ferrari/Desktop/Develop/osxBinITK > > an trying to run cmake again, I am getting the following error: > > > Thank you, > > Ricardo > From luis.ibanez@kitware.com Wed Oct 23 20:15:26 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Wed, 23 Oct 2002 15:15:26 -0400 Subject: [Insight-users] Re: itk Gradient Descent Optimizer : Mixture modeling ? References: <20021023185142.92130.qmail@web13708.mail.yahoo.com> Message-ID: <3DB6F54E.4080901@kitware.com> Hi digvijay, What you are doing looks like a good fit for Mixture Modeling. That is, fitting a set of Gaussians to an histogram. You may want to take a look at the Statistics package and Classification Framework in ITK. This can be found at Insight/Code/Numerics/Statistics and Insight/Code/Algorithms The following classes could be good start GoodnessOfFitMixtureModelCostFunction http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1GoodnessOfFitMixtureModelCostFunction.html MixtureModelEstimator http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1ExpectationMaximizationMixtureModelEstimator.html GaussianMixtureModelComponent http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1GaussianMixtureModelComponent.html SampleClassifier http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1SampleClassifier.html TableLookupSampleClassifier http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1TableLookupSampleClassifier.html Please let us know if you have further questions, Thanks Luis ======================================================= digvijay singh wrote: > hi luis!! > i get the emphasis on const......and the optimizer > does not implement constraints....bad news for me :-), > now i am trying to read in an image compute its > histogram and model it as a sum of gaussian functions. > The model gets good enough values for the > initialization from histogram computation as one of > the gaussians is predominant over the rest. I was > trying to minimize the error in the fit starting with > a single gaussian but i need to impose constraints on > the way the optimization progresses simply because i > wish to compute it for the predominant gaussian first. > That's my side of story....thanks for your help > ciao > digvijay > > > From malat@free.fr Thu Oct 24 07:35:42 2002 From: malat@free.fr (Mathieu Malaterre) Date: Thu, 24 Oct 2002 08:35:42 +0200 Subject: [Insight-users] Problem building on linux References: <20021023172417.5370.qmail@web11505.mail.yahoo.com> Message-ID: <3DB794BE.9020409@free.fr> Hi Ghassan, >libstdc++-libc6.2-2.so.3 => >/lhome/ghassan/MATLAB13/sys/os/glnx86/libstdc++-libc6.2-2.so.3 (0x40018000) > > I think your problem comes from this. Are you using your LD_LIBRARY_PATH variable ? Or /etc/ld.so.conf ? In all case try either echo $LD_LIBRARY_PATH or cat /etc/ld.so.conf And you should put the "/lhome/ghassan/MATLAB13/sys/os/glnx86/" directory at the end, either in ld.so.conf file or in LD_LIBRARY_PATH variable. For example (assuming you have bash/sh) echo $LD_LIBRARY_PATH ...output... unset LD_LIBRARY_PATH export LD_LIBRARY_PATH= 'copy here output without /lhome/ghassan/MATLAB13/sys/os/glnx86/' export LD_LIBRARY_PATH=$LD_LIBRARY_PATH':/lhome/ghassan/MATLAB13/sys/os/glnx86/' HTH Mathieu From ghamarneh@yahoo.com Thu Oct 24 03:18:18 2002 From: ghamarneh@yahoo.com (Ghassan Hamarneh) Date: Wed, 23 Oct 2002 22:18:18 -0400 (EDT) Subject: [Insight-users] Problem building on linux In-Reply-To: <3DB794BE.9020409@free.fr> Message-ID: <20021024021818.13873.qmail@web11505.mail.yahoo.com> Thanks Mathieu for your comments, I did what you suggested, but I still get the same error: ------------ /lhome/ghassan/Cable/Executables/cable: relocation error: /lhome/ghassan/Cable/Executables/cable: undefined symbol: __dynamic_cast_2 make[7]: *** [/lhome/ghassan/Insight/Wrapping/Tcl/Numerics/wrap_ITKNumerics_tcl.cxx] Error 127 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Numerics] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Tcl] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Wrapping] Error 2 make: *** [default_target] Error 2 ----------- Even though ( Matlab paths are moved to the end ): $ echo $LD_LIBRARY_PATH /lhome/ghassan/VTK/lib/vtk:/lhome/ghassan/VTK/lib:/lhome/ghassan/VTK/bin:/usr/local/yav/lib/:/usr/local/blt2.4y/src/shared/:/usr/local/blt2.4y/src/:/usr/local/blt2.4y/library/:/usr/local/express/lib/linux:/usr/local/glut-3.7/lib/glut:/lhome/ghassan/MATLAB13/bin/glnx86:/lhome/ghassan/MATLAB13/extern/lib/glnx86:/lhome/ghassan/MATLAB13/sys/os/glnx86 $ ldd /lhome/ghassan/Cable/Executables/cable libstdc++-libc6.2-2.so.3 => /lhome/ghassan/MATLAB13/sys/os/glnx86/libstdc++-libc6.2-2.so.3 (0x40018000) libm.so.6 => /lib/i686/libm.so.6 (0x40074000) libc.so.6 => /lib/i686/libc.so.6 (0x40097000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) -------- Now if I remove '/lhome/ghassan/MATLAB13/sys/os/glnx86/' altogether from LD_LIBRARY_PATH, the build progress a tiny bit, and then I get: WARNING: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 555 XMLSourceParser (0x81325b8): Invalid location entry f0:23 in XMLSourceElement _3 ERROR: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 1006 XMLSourceParser (0x81325b8): Cannot convert max="1" to integer on ArrayType _6 ERROR: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 730 XMLSourceParser (0x81325b8): Cannot find type _6c for Variable _3 ERROR: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 452 XMLSourceParser (0x81325b8): Error adding element Variable _3 ERROR: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 150 XMLSourceParser (0x81325b8): Error creating source representation. Error getting SourceRepresentation from parser. make[7]: *** [/lhome/ghassan/Insight/Wrapping/Tcl/Numerics/wrap_ITKNumerics_tcl.cxx] Error 1 make[6]: *** [default_target] Error 2 make[5]: *** [default_target_Numerics] Error 2 make[4]: *** [default_target] Error 2 make[3]: *** [default_target_Tcl] Error 2 make[2]: *** [default_target] Error 2 make[1]: *** [default_target_Wrapping] Error 2 make: *** [default_target] Error 2 You kind help is very much appreciated, /Ghassan Ghassan Hamarneh, PhD Hospital For Sick Children Toronto, Canada --- Mathieu Malaterre wrote: > Hi Ghassan, > > >libstdc++-libc6.2-2.so.3 => > >/lhome/ghassan/MATLAB13/sys/os/glnx86/libstdc++-libc6.2-2.so.3 (0x40018000) > > > > > I think your problem comes from this. Are you using your LD_LIBRARY_PATH > variable ? Or /etc/ld.so.conf ? > In all case try either > echo $LD_LIBRARY_PATH > or > cat /etc/ld.so.conf > > And you should put the "/lhome/ghassan/MATLAB13/sys/os/glnx86/" directory at > the end, either in ld.so.conf file or in LD_LIBRARY_PATH variable. > > For example (assuming you have bash/sh) > > echo $LD_LIBRARY_PATH > ...output... > > unset LD_LIBRARY_PATH > > export LD_LIBRARY_PATH= 'copy here output without > /lhome/ghassan/MATLAB13/sys/os/glnx86/' > > export > LD_LIBRARY_PATH=$LD_LIBRARY_PATH':/lhome/ghassan/MATLAB13/sys/os/glnx86/' > > HTH > Mathieu ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca From salah@gris.uni-tuebingen.de Thu Oct 24 13:10:11 2002 From: salah@gris.uni-tuebingen.de (Zein Salah) Date: Thu, 24 Oct 2002 14:10:11 +0200 Subject: [Insight-users] progressSlider Message-ID: <007b01c27b56$4dacf660$aeb00286@wsigris.unituebingen.de> This is a multi-part message in MIME format. ------=_NextPart_000_0078_01C27B67.1129DF80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello all, I have added a progressSlider to my user interface to monitor the = progress of some filters. It has woked good for some filters like: GrayscaleFunctionErodeImageFilter and = RecursiveGaussianImageFilter. It has not respond to the segmentation filters like: SimpleFuzzyConnectednessScalarImageFilter , = ConnectedThresholdImageFilter, and ConfidenceConnectedImageFilter Although I have defined all of the the same way.=20 InputErotionFilterType::Pointer m_Eroder;=20 RecursiveGaussianImageFilterType::Pointer m_Smoother; ConfidenceConnectedImageFilterType::Pointer m_CCSeg; ConnectedThresholdImageFilterType::Pointer m_CTSeg; SimpleFuzzyConnectednessScalarImageFilterType::Pointer m_FuzSeg; ... ... ... ... progressSlider->Observe( m_Eroder.GetPointer() ); progressSlider->Observe( m_Smoother.GetPointer() ); progressSlider->Observe( m_CTSeg.GetPointer() ); progressSlider->Observe( m_CCSeg.GetPointer() ); progressSlider->Observe( m_FuzSeg.GetPointer() ); It did not respond to the file Reader. =20 Do anybody have an idea what could the problem be??? many thanks, Zein ->8<------------->8<------------->8<------------->8<------------->8<-----= -------->8<- Zein I. Salah=20 Universit=E4t T=FCbingen, WSI-GRIS=20 Sand 14=20 72076 T=FCbingen=20 Email: salah@gris.uni-tuebingen.de / zeinsalah@hotmail.com Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)=20 Fax: (07071) 29 54 66 ------=_NextPart_000_0078_01C27B67.1129DF80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello all,
 
I have added a progressSlider to my = user interface=20 to monitor the progress of some filters. It has woked good for some = filters=20 like:
  =20 GrayscaleFunctionErodeImageFilter  and   = RecursiveGaussianImageFilter.
 
It has not respond to the segmentation = filters=20 like:
SimpleFuzzyConnectednessScalarImageFilter ,=20 ConnectedThresholdImageFilter, and ConfidenceConnectedImageFilter
 
Although I have defined all of the the = same way.=20
 
   InputErotionFilterType::Pointer    &n= bsp;           &nb= sp;       =20 m_Eroder; 
  =20 RecursiveGaussianImageFilterType::Pointer     &n= bsp;        =20 m_Smoother;
  =20 ConfidenceConnectedImageFilterType::Pointer     =        =20 m_CCSeg;
  =20 ConnectedThresholdImageFilterType::Pointer     &= nbsp;       =20 m_CTSeg;
  =20 SimpleFuzzyConnectednessScalarImageFilterType::Pointer =20 m_FuzSeg;
...
...
...
...
 =20 progressSlider->Observe( m_Eroder.GetPointer() );
 =20 progressSlider->Observe( m_Smoother.GetPointer() );
 =20 progressSlider->Observe( m_CTSeg.GetPointer() );
 =20 progressSlider->Observe( m_CCSeg.GetPointer() );
 =20 progressSlider->Observe( m_FuzSeg.GetPointer() = );
It did not respond  to the = file Reader. 
 
 
Do anybody have an idea what could the = problem=20 be???
 
many thanks,
 
Zein
 
->8<------------->8<------------->8<----------= --->8<------------->8<------------->8<-
Zein=20 I. Salah
Universit=E4t T=FCbingen, WSI-GRIS
Sand 14
72076 = T=FCbingen=20
Email: salah@gris.uni-tuebingen.de =20 / zeinsalah@hotmail.com
Tel.: = (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat)
Fax: (07071) 29 = 54=20 66
------=_NextPart_000_0078_01C27B67.1129DF80-- From luis.ibanez@kitware.com Thu Oct 24 13:35:07 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 24 Oct 2002 08:35:07 -0400 Subject: [Insight-users] progressSlider & ProgressEvent & IterationEvent References: <007b01c27b56$4dacf660$aeb00286@wsigris.unituebingen.de> Message-ID: <3DB7E8FB.6070409@kitware.com> Hi Zein, The problem is that not all filters invoke ProgressEvent()'s. Some of the filters work on iterative basis and it is not possible to establish in advance how long it will take them to run. Those iterative filters throw IterationEvents(). You can observe iteration events and increment a counter in your GUI. Examples of this can be seen in : Insight/Examples/FastMarchingLevelSet Insight/Examples/ShapeDetectionLevelSet For example, Connected components filters work with a stack of pixels to be visited. Pixels are added to and removed from the stack. The filter is done when the stack is empty, but it is not possible to anticipate how long it will take to process the pixels on the image. Other filters are simply missing the functionality and should be added to the TODO list. :-/ That's the case of the RecursiveGaussian filter for example. Thanks for pointing this out, Luis =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > Zein Salah wrote: > Hello all, >=20 > =20 >=20 > I have added a progressSlider to my user interface to monitor the=20 > progress of some filters. It has woked good for some filters like: >=20 > GrayscaleFunctionErodeImageFilter and RecursiveGaussianImageFilte= r. >=20 > =20 >=20 > It has not respond to the segmentation filters like: >=20 > SimpleFuzzyConnectednessScalarImageFilter ,=20 > ConnectedThresholdImageFilter, and ConfidenceConnectedImageFilter >=20 > =20 >=20 > Although I have defined all of the the same way. >=20 > =20 >=20 > InputErotionFilterType::Pointer m_Eroder;=20 > RecursiveGaussianImageFilterType::Pointer m_Smoother; > ConfidenceConnectedImageFilterType::Pointer m_CCSeg; > ConnectedThresholdImageFilterType::Pointer m_CTSeg; > SimpleFuzzyConnectednessScalarImageFilterType::Pointer m_FuzSeg; > ... >=20 > ... >=20 > ... >=20 > ... >=20 > progressSlider->Observe( m_Eroder.GetPointer() ); > progressSlider->Observe( m_Smoother.GetPointer() ); > progressSlider->Observe( m_CTSeg.GetPointer() ); > progressSlider->Observe( m_CCSeg.GetPointer() ); > progressSlider->Observe( m_FuzSeg.GetPointer() ); >=20 > It did not respond to the file Reader.=20 >=20 > =20 >=20 > =20 >=20 > Do anybody have an idea what could the problem be??? >=20 > =20 >=20 > many thanks, >=20 > =20 >=20 > Zein >=20 > =20 >=20 > ->8<------------->8<------------->8<------------->8<------------->8<---= ---------->8<- > Zein I. Salah > Universit=E4t T=FCbingen, WSI-GRIS > Sand 14 > 72076 T=FCbingen > Email: salah@gris.uni-tuebingen.de = =20 > / zeinsalah@hotmail.com > Tel.: (07071) 29 75465 (GRIS) , (07071) 96 44 39 (privat) > Fax: (07071) 29 54 66 >=20 From marcelo@radioimaging.net Thu Oct 24 13:07:52 2002 From: marcelo@radioimaging.net (Marcelo Costa Oliveira) Date: Thu, 24 Oct 2002 10:07:52 -0200 Subject: [Insight-users] Install ITK+BorlandC++ Message-ID: <010e01c27b55$fac227e0$d4323690@System.local> This is a multi-part message in MIME format. ------=_NextPart_000_010B_01C27B45.37288F00 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi users, i=B4m starting now with ITK, and i have some mistakes install = ITK on Win2K and Borland C++ 5.0, my VTK is working fine. Tanks for advanced me Marcelo AX -c C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx: Error E2176 C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h 29: Too many = types in declaration Error E2176 C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h 41: Too many = types in declaration Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 133: = Cannot con vert 'const char *' to 'char *' in function ExtractFileName(const char = *) Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 136: = Cannot con vert 'const char *' to 'char *' in function ExtractFileName(const char = *) Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 146: = Cannot con vert 'const char *' to 'char *' in function ExtractFileName(const char = *) Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 164: = Cannot con vert 'const char *' to 'char *' in function ExtractFileExtension(const = char *) Warning W8057 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 174: = Paramete r 'fileName' is never used in function ExtractFileExtension(const char = *) Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 183: = Cannot con vert 'const char *' to 'char *' in function ExtractFilePath(const char = *) Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 186: = Cannot con vert 'const char *' to 'char *' in function ExtractFilePath(const char = *) *** 8 errors in Compile *** ** error 1 ** deleting itkImageIOCommon.obj ** error 1 ** deleting default_target ** error 1 ** deleting default_target_Common ** error 1 ** deleting default_target ** error 1 ** deleting default_target_Code ** error 1 ** deleting default_target ------=_NextPart_000_010B_01C27B45.37288F00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi users, i=B4m starting now with ITK, = and i have=20 some mistakes install ITK on Win2K and Borland C++ 5.0, my VTK is = working=20 fine.
 
Tanks for advanced me
 
Marcelo

AX -c C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx
Borland = C++ 5.5=20 for Win32 Copyright (c) 1993, 2000=20 Borland
C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx:
Error= E2176=20 C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h 29: Too many types=20 in
declaration
Error E2176 = C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h=20 41: Too many types in
declaration
Error E2034=20 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 133: Cannot = con
vert=20 'const char *' to 'char *' in function ExtractFileName(const char = *)
Error=20 E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 136: Cannot=20 con
vert 'const char *' to 'char *' in function ExtractFileName(const = char=20 *)
Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx = 146:=20 Cannot con
vert 'const char *' to 'char *' in function = ExtractFileName(const=20 char *)
Error E2034 = C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 164:=20 Cannot con
vert 'const char *' to 'char *' in function=20 ExtractFileExtension(const char *)
Warning W8057=20 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 174: Paramete
r=20 'fileName' is never used in function ExtractFileExtension(const char = *)
Error=20 E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 183: Cannot=20 con
vert 'const char *' to 'char *' in function ExtractFilePath(const = char=20 *)
Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx = 186:=20 Cannot con
vert 'const char *' to 'char *' in function = ExtractFilePath(const=20 char *)
*** 8 errors in Compile ***

** error 1 ** deleting itkImageIOCommon.obj

** error 1 ** deleting default_target

** error 1 ** deleting default_target_Common

** error 1 ** deleting default_target

** error 1 ** deleting default_target_Code

** error 1 ** deleting default_target


------=_NextPart_000_010B_01C27B45.37288F00-- From luis.ibanez@kitware.com Thu Oct 24 14:29:18 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 24 Oct 2002 09:29:18 -0400 Subject: [Insight-users] Install ITK+BorlandC++ References: <010e01c27b55$fac227e0$d4323690@System.local> Message-ID: <3DB7F5AE.60409@kitware.com> Hi Marcelo, It seems that you are using the Beta2 version, is that right ? ITK Beta2 wasn't adapted to support the Borland compiler. You may want to use the current CVS version or wait for a couple of days and get the Release 1.0 tarballs that are being packaged at this point. ITK Version 1.0 supports both Borland and Mac OS. Please let us know if you have further questions, Thanks Luis =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Marcelo Costa Oliveira wrote: > Hi users, i=B4m starting now with ITK, and i have some mistakes install= =20 > ITK on Win2K and Borland C++ 5.0, my VTK is working fine. >=20 > =20 >=20 > Tanks for advanced me >=20 > =20 >=20 > Marcelo >=20 >=20 > AX -c C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx > Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland > C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx: > Error E2176 C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h 29: Too many = > types in > declaration > Error E2176 C:\ITK\InsightBeta2\Code\Common\itkIntTypes.h 41: Too many = > types in > declaration > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 133:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFileName(const char = *) > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 136:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFileName(const char = *) > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 146:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFileName(const char = *) > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 164:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFileExtension(const = > char *) > Warning W8057 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 174:= =20 > Paramete > r 'fileName' is never used in function ExtractFileExtension(const char = *) > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 183:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFilePath(const char = *) > Error E2034 C:\ITK\InsightBeta2\Code\Common\itkImageIOCommon.cxx 186:=20 > Cannot con > vert 'const char *' to 'char *' in function ExtractFilePath(const char = *) > *** 8 errors in Compile *** >=20 > ** error 1 ** deleting itkImageIOCommon.obj >=20 > ** error 1 ** deleting default_target >=20 > ** error 1 ** deleting default_target_Common >=20 > ** error 1 ** deleting default_target >=20 > ** error 1 ** deleting default_target_Code >=20 > ** error 1 ** deleting default_target >=20 >=20 From luis.ibanez@kitware.com Thu Oct 24 16:41:34 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 24 Oct 2002 11:41:34 -0400 Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator References: <20021024142906.70800.qmail@web13704.mail.yahoo.com> Message-ID: <3DB814AE.40804@kitware.com> Hi digvijay, I may be wrong in my interpretation... (Jisung, please correct me if this is not the right description) -- The MixtureModelExtimator takes a population of samples and classify them in groups (classes). The samples will be partitioned by assigning each one of them to one specific class. The array of Proportions indicates the percent of samples belonging to each class. Let's say that you are classifying brain tissues into 1 - white matter 2 - gray matter 3 - CSF You will have three classes, plus one for rejection. If your image has N pixels and you anticipate that: n1 pixel will belong to white matter n2 pixel will belong to gray matter n3 pixel will belong to CSF n4 pixel are in a rejection class (e.g. bone, skin, background ) with N = n1 + n2 + n3 + n4 This is apriori knowledge based on a typical brain. In your case, for the Histogram you can assume that the gray level distribution of each tissue is a gaussian. The total histogram is then the composition of four gaussians. You can load the initial proportions array (which is of size = 4) with the values: { n1/N , n2/N , n3/N , n4/N } Then, run the estimator. When the estimator is done the samples are now classified into the four groups and new final proportions are computed by the estimator. The TrueProportions array (size=4) will contain the final percents of samples (pixels in this case) belonging to each class. Note that the Estimator let you select the type of distribution for each class. This is done with the ComponentType. In the case of Gaussian distributions you may use: itk::stat::GaussianMixtureModelComponent< DataSampleType > ----- You may see an example of this class at Insight/Testing/Code/Numerics/Statistics/ itkExpectationMaximizationMixtureModelEstimatorTest.cxx Please let us know if you have further questions. Thanks Luis ================================================== digvijay singh wrote: > > hi luis !! > i had a look at the > itkExpectationMaximizationMixtureModelEstimator > could you please give me some more info on the use of > trueproportions[] and the initialproportions[]. > thanks > digvijay > > > > From martin_styner@ieee.org Thu Oct 24 17:17:42 2002 From: martin_styner@ieee.org (Martin Styner) Date: Thu, 24 Oct 2002 18:17:42 +0200 Subject: [Insight-users] How to disconnect a pipeline Message-ID: <3DB81D26.5030706@ieee.org> Hi everybody I have a question in regard to the itk pipeline system. In some cases my pipeline has grown too large so that I run out of memory. Now I want to separate as nicely as possible the pipeline into 2 separate parts. The 'nicest' I could so far come up with is the following: Before: FilterB->SetInput(FilterA->GetOutput()); FilterC->SetInput(FilterB->GetOutput()); After: FilterB->SetInput(FilterA->GetOutput()); FilterB->Update(); ImageOutB = FilterB->GetOutput(); ImageOutB->DisconnectPipeline(); FilterA->Delete(); // Can't do a FilterB->Delete(), otherwise ImageOutB iscorrupted ? FilterC->SetInput(ImageOutB); Is there maybe an easy way to create a Duplicate of an image, this would solve the whole business. Regards Martin -- Martin Styner, PhD. Ing. ETH Group Head Medical Image Analysis for Orthopaedics M.E. Mueller Institute for Biomechanics Center for Computed Assisted Surgery University of Bern Murtenstrasse 35 P.O.Box 30 CH - 3010 Bern Switzerland Tel office: ++41-31-632-0940 , FAX: ++41-31-632-4951 email: Martin.Styner@memot.unibe.ch, martin_styner@ieee.org WWW: http://cranium.unibe.ch/~mstyner From luis.ibanez@kitware.com Thu Oct 24 18:29:35 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 24 Oct 2002 13:29:35 -0400 Subject: [Insight-users] How to disconnect a pipeline References: <3DB81D26.5030706@ieee.org> Message-ID: <3DB82DFF.6000503@kitware.com> Hi Martin, I'm wondering if you tried the ReleaseData flag on the filters. ProcessObject (superclass of all the filters) http://www.itk.org/Insight/Doxygen/html/classitk_1_1ProcessObject.html has methods void SetReleaseDataFlag (bool flag) bool GetReleaseDataFlag () void ReleaseDataFlagOn () void ReleaseDataFlagOff () that should allow to release the memory of the initial filters once their output is processed by the following filters. In the case you cite, probably adding FilterA->ReleaseDataFlagOn(); FilterB->ReleaseDataFlagOn(); before updating the pipeline should produce the desired effect of releasing memory as the pipeline progress. Luis ========================================================= Martin Styner wrote: > Hi everybody > I have a question in regard to the itk pipeline system. > In some cases my pipeline has grown too large so that I run out of > memory. Now I want to separate as nicely as possible the pipeline into 2 > separate parts. > The 'nicest' I could so far come up with is the following: > > Before: > > FilterB->SetInput(FilterA->GetOutput()); > FilterC->SetInput(FilterB->GetOutput()); > > After: > > FilterB->SetInput(FilterA->GetOutput()); > FilterB->Update(); > ImageOutB = FilterB->GetOutput(); > ImageOutB->DisconnectPipeline(); > FilterA->Delete(); > // Can't do a FilterB->Delete(), otherwise ImageOutB iscorrupted ? > FilterC->SetInput(ImageOutB); > > Is there maybe an easy way to create a Duplicate of an image, this would > solve the whole business. > > Regards > Martin > > From bahrahm@yahoo.com Thu Oct 24 19:00:27 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:00:27 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180031.94212.qmail@web10105.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Thu Oct 24 19:04:19 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:04:19 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180419.95189.qmail@web10105.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Thu Oct 24 19:04:29 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:04:29 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180429.60298.qmail@web10101.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com From bahrahm@yahoo.com Thu Oct 24 19:04:47 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:04:47 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180447.60378.qmail@web10101.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com From bahrahm@yahoo.com Thu Oct 24 19:04:37 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:04:37 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180437.60353.qmail@web10101.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com From bahrahm@yahoo.com Thu Oct 24 19:04:56 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:04:56 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180456.60438.qmail@web10101.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com From bahrahm@yahoo.com Thu Oct 24 19:07:11 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:07:11 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180711.61277.qmail@web10101.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com From bahrahm@yahoo.com Thu Oct 24 19:05:39 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:05:39 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180539.16866.qmail@web10102.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Thu Oct 24 19:05:09 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:05:09 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180510.16799.qmail@web10102.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Thu Oct 24 19:05:32 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Thu, 24 Oct 2002 11:05:32 -0700 (PDT) Subject: [Insight-users] Re: itkExpectationMaximizationMixtureModelEstimator In-Reply-To: <3DB814AE.40804@kitware.com> Message-ID: <20021024180532.16855.qmail@web10102.mail.yahoo.com> Hi Luis, Your description is correct. Users of the EM framework should instantiate as many "Components" as the classes they want to classify. then plug those components to the EM estimator with the initial proportions ( array of doubles. e.g. 0.19002, 0.7800, ...). The "estimator" will compute new weights for the whole sample populator for each component (class), and the component will update its distribution parameters ( e.g. mean and covariance for Gaussian component) using the weights. The estimator will repeat this process until the changes in distribution parameters are less than some small values or the number of iteration hits the maximum iteration number. Current EM framework assumes that each "component" should have its own analytical solution for updating its parameters. This is true for exponential distribution families such as Gaussian. --- Luis Ibanez wrote: > > Hi digvijay, > > I may be wrong in my interpretation... > (Jisung, please correct me if this is not > the right description) > > -- > > The MixtureModelExtimator takes a population > of samples and classify them in groups > (classes). The samples will be partitioned > by assigning each one of them to one specific > class. > > The array of Proportions indicates the > percent of samples belonging to each class. > > Let's say that you are classifying brain > tissues into > > 1 - white matter > 2 - gray matter > 3 - CSF > > You will have three classes, plus one for > rejection. If your image has N pixels and > you anticipate that: > > n1 pixel will belong to white matter > n2 pixel will belong to gray matter > n3 pixel will belong to CSF > n4 pixel are in a rejection class > (e.g. bone, skin, background ) > > with N = n1 + n2 + n3 + n4 > > This is apriori knowledge based on a typical > brain. > > In your case, for the Histogram you can > assume that the gray level distribution > of each tissue is a gaussian. The total > histogram is then the composition of four > gaussians. > > You can load the initial proportions array > (which is of size = 4) with the values: > > { n1/N , n2/N , n3/N , n4/N } > > > Then, run the estimator. When the estimator > is done the samples are now classified into > the four groups and new final proportions > are computed by the estimator. > > The TrueProportions array (size=4) will contain > the final percents of samples (pixels in this > case) belonging to each class. > > Note that the Estimator let you select the > type of distribution for each class. This is > done with the ComponentType. In the case of > Gaussian distributions you may use: > > itk::stat::GaussianMixtureModelComponent< > DataSampleType > > > ----- > > You may see an example of this class at > > Insight/Testing/Code/Numerics/Statistics/ > > itkExpectationMaximizationMixtureModelEstimatorTest.cxx > > > Please let us know if you have further questions. > > > Thanks > > > Luis > > > ================================================== > > digvijay singh wrote: > > > > hi luis !! > > i had a look at the > > itkExpectationMaximizationMixtureModelEstimator > > could you please give me some more info on the > use of > > trueproportions[] and the initialproportions[]. > > thanks > > digvijay > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From koen.vanleemput@hus.fi Fri Oct 25 07:50:37 2002 From: koen.vanleemput@hus.fi (Koen Van Leemput) Date: Fri, 25 Oct 2002 09:50:37 +0300 Subject: [Insight-users] Problems deriving from itkMultiResolutionImageRegistrationMethod Message-ID: <200210250950.37685.koen.vanleemput@hus.fi> Hi, I'm trying to derive a class from itk::MultiResolutionImageRegistrationMe= thod=20 that allows inspection of metric values at specified positions and specif= ied=20 resolution levels. A simple public member function SampleMetricValue that= =20 does exactly this could look as follows: /** Sample the metric at specified position and resolution level. */ MeasureType SampleMetricValue( const ParametersType & parameters, const =09unsigned int level ) { if( level >=3D this->GetNumberOfLevels() ) { itkExceptionMacro(<<"Specified level does not exist!"); } // Prepare pyramids this->PreparePyramids(); // Set current level this->SetCurrentLevel( level ); // Initialize the interconnects between components for this level this->Initialize(); // Measure try { return this->GetMetric()->GetValue( parameters ); } catch( itk::ExceptionObject & err ) { std::cout << "Caught an exception: " << std::endl; std::cout << err << std::endl; throw err; } // Should never get here return 0.0; } However, itk::MultiResolutionImageRegistrationMethod does not provide the= =20 member functions GetNumberOfLevels() and SetCurrentLevel(unsigned long), = and=20 both m_NumberOfLevels and m_CurrentLevel are private. Hence, I'm stuck :-= ( Could someone of the developers add GetNumberOfLevels() and=20 SetCurrentLevel(unsigned long) (or make m_CurrentLevel protected; the fac= t=20 that Initialize() is protected is not of much help without access to=20 m_CurrentLevel) to itk::MultiResolutionImageRegistrationMethod?=20 Thanks, Koen =20 From martin_styner@ieee.org Fri Oct 25 08:23:14 2002 From: martin_styner@ieee.org (Martin Styner) Date: Fri, 25 Oct 2002 09:23:14 +0200 Subject: [Insight-users] How to disconnect a pipeline References: <3DB81D26.5030706@ieee.org> <3DB82DFF.6000503@kitware.com> Message-ID: <3DB8F162.5080505@ieee.org> Hi Luis Yes, that worked ! Thanks, much 'nicer' than my solution. Nevertheless, for curiosity sake, what would be the best way to disconnect an image fully from the pipeline and free the whole pipeline before the image, e.g. to be processed by a routine from a different libary (THERE, I dared to say the taboo-word... ;) ). Best regads Martin Luis Ibanez wrote: > Hi Martin, > > I'm wondering if you tried the ReleaseData > flag on the filters. > > ProcessObject (superclass of all the filters) > http://www.itk.org/Insight/Doxygen/html/classitk_1_1ProcessObject.html > > has methods > > void SetReleaseDataFlag (bool flag) > bool GetReleaseDataFlag () > void ReleaseDataFlagOn () > void ReleaseDataFlagOff () > > that should allow to release the memory of the > initial filters once their output is processed > by the following filters. > > In the case you cite, probably adding > > FilterA->ReleaseDataFlagOn(); > FilterB->ReleaseDataFlagOn(); > > before updating the pipeline should produce > the desired effect of releasing memory as the > pipeline progress. > > > Luis > > > ========================================================= > > Martin Styner wrote: > >> Hi everybody >> I have a question in regard to the itk pipeline system. >> In some cases my pipeline has grown too large so that I run out of >> memory. Now I want to separate as nicely as possible the pipeline into >> 2 separate parts. >> The 'nicest' I could so far come up with is the following: >> >> Before: >> >> FilterB->SetInput(FilterA->GetOutput()); >> FilterC->SetInput(FilterB->GetOutput()); >> >> After: >> >> FilterB->SetInput(FilterA->GetOutput()); >> FilterB->Update(); >> ImageOutB = FilterB->GetOutput(); >> ImageOutB->DisconnectPipeline(); >> FilterA->Delete(); >> // Can't do a FilterB->Delete(), otherwise ImageOutB iscorrupted ? >> FilterC->SetInput(ImageOutB); >> >> Is there maybe an easy way to create a Duplicate of an image, this >> would solve the whole business. >> >> Regards >> Martin >> >> > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users -- Martin Styner, PhD. Ing. ETH Group Head Medical Image Analysis for Orthopaedics M.E. Mueller Institute for Biomechanics Center for Computed Assisted Surgery University of Bern Murtenstrasse 35 P.O.Box 30 CH - 3010 Bern Switzerland Tel office: ++41-31-632-0940 , FAX: ++41-31-632-4951 email: Martin.Styner@memot.unibe.ch, martin_styner@ieee.org WWW: http://cranium.unibe.ch/~mstyner From koen.vanleemput@hus.fi Fri Oct 25 09:37:32 2002 From: koen.vanleemput@hus.fi (Koen Van Leemput) Date: Fri, 25 Oct 2002 11:37:32 +0300 Subject: [Insight-users] Flaw in ITK? : orientation of images Message-ID: <200210251137.32827.koen.vanleemput@hus.fi> Hi, In ITK, itk::Image comes with an IndexToPhysicalTransform and its inverse= =20 PhysicalToIndexTransform that defines how coordinates in the index space = map=20 into coordinates in the "real-world" physical space and vice versa. In=20 itk::Image, these transforms are AffineTransforms that take into account = the=20 spacing of the voxels (scaling) and the position of the origin (translati= on). In many medical image processing applications, however, there is a need f= or=20 additional positioning information, defining how the patient is oriented = with=20 respect to the image coordinate system. Examples include flipping and=20 swapping of image axes, gantry tilt in CT images, interfacing with other=20 image processing tools (SPM, 3D Slicer, ...), and proper handling of vari= ous=20 medical image formats (DICOM, SPM, ...).=20 Because of these reasons, I decided to go for it and derive a class from=20 itk::Image that builds m_IndexToPhysicalTransform (and=20 m_PhysicalToIndexTransform by) by composing the standard scaling and=20 translation with an additional affine transform that defines orientation.= =20 Apart from some convenience methods to manipulate this orientation, I=20 overloaded itk::Image::RebuildTransforms() and itk::Image::CopyInformatio= n(),=20 and voila, it works: the orientation information travels nicely through t= he=20 ITK pipeline. BUT... things are messed up by what seems to me a design flaw in=20 itk::ImageFunction. Indeed, rather than using=20 itk::Image::TransformPhysicalPointToContinuousIndex() to convert a point = in=20 physical space into an index in the image grid, itk::ImageFunction for so= me=20 reason provides its own implementation=20 itk::ImageFunction::ConvertPointToContinuousIndex that noisily ignores=20 whatever PhysicalToIndexTransform the image at hand actually uses. This=20 messes up all the registraton metrics and itk::ResampleImageFilter, where= the=20 following construction is typically used: m_FixedImage->TransformIndexToPhysicalPoint( inputIndex, inputPoint )= ; transformedPoint =3D m_Transform->TransformPoint( inputPoint ); if( m_Interpolator->IsInsideBuffer( transformedPoint ) ) { movingValue =3D m_Interpolator->Evaluate( transformedPoint ); [clip clip] =09=09=09 } (Note that also itk::ImageFunction::IsInsideBuffer() doesn't handle thing= s=20 properly here neither) As I see it, itk::ImageFunction::IsInsideBuffer() and=20 itk::ImageFunction::ConvertPointToContinuousIndex() should use the=20 implementation provided by itk::Image. To avoid inefficiencies induced by= =20 converting from physical space into index space twice, the following=20 construction should probably be considered: m_FixedImage->TransformIndexToPhysicalPoint( inputIndex, inputPoint )= ; transformedPoint =3D m_Transform->TransformPoint( inputPoint ); m_MovingImage->TransformPhysicalPointToContinuousIndex( transformedPoint, transformedIndex ); if( m_Interpolator->IsInsideBuffer( transformedIndex ) ) { movingValue =3D m_Interpolator->Evaluate( transformedIndex ); [clip clip] =09=09=09 } More in general, is support in ITK for orientation planned any time in th= e=20 future? After all, the fiddling around with itk::PermuteAxesImageFilters=20 itk::FlipImageFilters in the registration examples seems quite cumbersome= =2E.. Cheers, Koen From highway_111@mail.com Fri Oct 25 10:14:14 2002 From: highway_111@mail.com (ahmad bukhari) Date: Fri, 25 Oct 2002 04:14:14 -0500 Subject: [Insight-users] itExpectationMaximizationMixtureModel Message-ID: <20021025091415.99537.qmail@mail.com> hi luis, jisung and everybody else!! i am new to itk(even programming) and working on modelling of soft tissues...hence your explanation on the "subject" question was really a great help, but i have a few questions ... 1-) what is the format of data file that the example accepts..does a simple txt with a tabspace between two columns do well enough... 2-)How do i set the different models .... for example if it is a typical exponential function for model one ( Y = pow(2,x) )and a log for the model two (Y = log x) say...how do i set them up as different constituent classes.... thanks -- __________________________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup From highway_111@mail.com Fri Oct 25 10:52:37 2002 From: highway_111@mail.com (ahmad bukhari) Date: Fri, 25 Oct 2002 04:52:37 -0500 Subject: [Insight-users] itkExpectationMaximizationMixtureModel Message-ID: <20021025095237.40186.qmail@mail.com> hi everyone!! There is another issue that i need help with: the mixture model can finally give you an estimate of the different classes presence....but the trouble is that different classes occur in different intensity regions. For example in an intensity zone on a typical frequency histogram plot different classes occur in different regions interfering in some cases and isolated in rest. So the mixture model perhaps should be applied (initialized)differently for different intensity zones to get an accurate picture. Is there a way out...?? thanks ahmad -- __________________________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup From highway_111@mail.com Fri Oct 25 14:07:14 2002 From: highway_111@mail.com (ahmad bukhari) Date: Fri, 25 Oct 2002 08:07:14 -0500 Subject: [Insight-users] itkExpectationMaximization Message-ID: <20021025130714.72673.qmail@mail.com> hi everyone?! why does the test code set the true parameters if is supposed to be returned by estimator....firstly and secondly the arrys seem to be 2D rather than a one D array of weightages....as previously stated to someone else'e query... please help ahmad -- __________________________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup From bahrahm@yahoo.com Fri Oct 25 14:50:12 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Fri, 25 Oct 2002 06:50:12 -0700 (PDT) Subject: Fwd: Re: [Insight-users] itExpectationMaximizationMixtureModel Message-ID: <20021025135012.74608.qmail@web10108.mail.yahoo.com> --- Jisung Kim wrote: > Date: Fri, 25 Oct 2002 06:49:21 -0700 (PDT) > From: Jisung Kim > Subject: Re: [Insight-users] > itExpectationMaximizationMixtureModel > To: ahmad bukhari > > Hi ahmad, > > --- ahmad bukhari wrote: > > hi luis, jisung and everybody else!! > > i am new to itk(even programming) and working on > > modelling of soft tissues...hence your explanation > > on > > the "subject" question was really a great help, > but > > i > > have a few questions ... > > 1-) what is the format of data file that the > example > > > > accepts..does a simple txt with a tabspace between > > two > > columns do well enough... > > The input data file should be a text file with two > columns (the measurement vector in that test program > has two components) where the columns are separated > by > a space character. > > > 2-)How do i set the different models .... for > > example if > > it is a typical exponential function for model > one > > ( Y > > = pow(2,x) )and a log for the model two (Y = log > x) > > say...how do i set them up as different > constituent > > classes.... > > What do you mean by the "models"? Components > (modules) > of the mixture model? > > If you want to use your own "components" or > "modules", > you have to derive your classes from the > MixtureModelComponentBase class (in "insight > source"/Code/Numerics/Statistics). > > > thanks > > -- > > > > Thank you, > > Jisung. > > > __________________________________________________________ > > Sign-up for your own FREE Personalized E-mail at > > Mail.com > > http://www.mail.com/?sr=signup > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > > http://public.kitware.com/mailman/listinfo/insight-users > > > ===== > Jisung Kim > bahrahm@yahoo.com > 106 Mason Farm Rd. > 129 Radiology Research Lab., CB# 7515 > Univ. of North Carolina at Chapel Hill > Chapel Hill, NC 27599-7515 > > __________________________________________________ > Do you Yahoo!? > Y! Web Hosting - Let the expert host your web site > http://webhosting.yahoo.com/ > ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Fri Oct 25 15:11:31 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Fri, 25 Oct 2002 07:11:31 -0700 (PDT) Subject: [Insight-users] itkExpectationMaximizationMixtureModel In-Reply-To: <20021025095237.40186.qmail@mail.com> Message-ID: <20021025141131.68340.qmail@web10104.mail.yahoo.com> Hi ahmad, --- ahmad bukhari wrote: > hi everyone!! > There is another issue that i need help with: > the mixture model can finally give you an estimate > of > the different classes presence....but the trouble is > > that different classes occur in different intensity > regions. For example in an intensity zone on a > typical > frequency histogram plot different classes occur in > different regions interfering in some cases and > isolated > in rest. So the mixture model perhaps should be > applied > (initialized)differently for different intensity > zones > to get an accurate picture. Is there a way out...?? Each iteration of the EM estimation process updates weights for measurement vectors with given "components". In other words, in the test program, each measurement vector has two weight values that tells you how likely the measurement vector belongs to the two Gaussian classes. When the Gaussian components update their parameters, they use the weights instead of using simple mean and covariance calculations. This weighted mean and weighted covariance calculations actually has similar effect that you mentioned. If a measurement vector highly likely belong to a component (let's say component A) but not to the other component (component B), then the measurement vector will affects the parameter calculation of component A but won't affect much that of component B. Is this what you need? > thanks > ahmad > -- > Thanks, Jisung. __________________________________________________________ > Sign-up for your own FREE Personalized E-mail at > Mail.com > http://www.mail.com/?sr=signup > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Fri Oct 25 15:18:41 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Fri, 25 Oct 2002 07:18:41 -0700 (PDT) Subject: [Insight-users] itkExpectationMaximization In-Reply-To: <20021025130714.72673.qmail@mail.com> Message-ID: <20021025141841.82571.qmail@web10103.mail.yahoo.com> Hi ahmad, --- ahmad bukhari wrote: > hi everyone?! > why does the test code set the true parameters if is > > supposed to be returned by estimator....firstly and There are two sets of parameters. The second set named "initialParameters" are used for estimation. The first set named "trueParameters" are for only evaluation purpose. The evaluation procedure (Line 164 - 188) compares how far the true means are from the estimated means. > secondly the arrys seem to be 2D rather than a one D > > array of weightages....as previously stated to > someone > else'e query... The weights are calculated inside of the EM estimator using the given initial component distribution parameters. You don't have to provide initial weight values. > please help > ahmad > -- > Thanks, Jisung. __________________________________________________________ > Sign-up for your own FREE Personalized E-mail at > Mail.com > http://www.mail.com/?sr=signup > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From luis.ibanez@kitware.com Fri Oct 25 15:28:22 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 25 Oct 2002 10:28:22 -0400 Subject: [Insight-users] itkExpectationMaximization References: <20021025130714.72673.qmail@mail.com> Message-ID: <3DB95506.3030005@kitware.com> Hi Ahmad, The ExpectationMaximizationMixtureModelEstimator has a method for setting the Initial proportions, not the final ones. The Initial proportions are the apriori information that you provide to the estimator. You can verify that you can Set/Get the Initial proportions and only Get the final ones. http://www.itk.org/Insight/Doxygen/html/classitk_1_1Statistics_1_1ExpectationMaximizationMixtureModelEstimator.html Here are the signature of the relevent methods void SetInitialProportions (ProportionVectorType &propotion); ProportionVectorType * GetInitialProportions (); ProportionVectorType * GetProportions (); The array is not 2D, it is 1D of variable size. The type is an itk::Array< double > which can have as many components as your computer memory allows. The actual size of the array will depend on the number of components you add to the estimator using the AddComponent() method. Please let us know if you have futher questions, Thanks Luis ------------------------------------------- ahmad bukhari wrote: > hi everyone?! > why does the test code set the true parameters if is > supposed to be returned by estimator....firstly and > secondly the arrys seem to be 2D rather than a one D > array of weightages....as previously stated to someone > else'e query... > please help > ahmad > From luis.ibanez@kitware.com Fri Oct 25 15:56:55 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 25 Oct 2002 10:56:55 -0400 Subject: [Insight-users] Problems deriving from itkMultiResolutionImageRegistrationMethod References: <200210250950.37685.koen.vanleemput@hus.fi> Message-ID: <3DB95BB7.1070902@kitware.com> Hi Koen, Thanks for pointing this out. As you suggested the methods: public: unsigned long GetNumberOfLevels(); protected: void SetCurrentLevel( unsigned long ); have been added to the MultiResolutionImageregistrationMethod class. The member variables remain private. Note that SetCurrentLevel() is protected since a typical use of the MultiResolutionImageRegistration should not change the current level. Please let us know if you find any problem, Thank Luis PS your class seems to be pretty useful for inspecting the registration process. Would you like it to contribute this code to the toolkit ? ================================================================== Koen Van Leemput wrote: > Hi, > > I'm trying to derive a class from itk::MultiResolutionImageRegistrationMethod > that allows inspection of metric values at specified positions and specified > resolution levels. A simple public member function SampleMetricValue that > does exactly this could look as follows: > > > /** Sample the metric at specified position and resolution level. */ > MeasureType SampleMetricValue( const ParametersType & parameters, const > unsigned int level ) > { > > if( level >= this->GetNumberOfLevels() ) > { > itkExceptionMacro(<<"Specified level does not exist!"); > } > > // Prepare pyramids > this->PreparePyramids(); > > // Set current level > this->SetCurrentLevel( level ); > > // Initialize the interconnects between components for this level > this->Initialize(); > > // Measure > try > { > return this->GetMetric()->GetValue( parameters ); > } > catch( itk::ExceptionObject & err ) > { > std::cout << "Caught an exception: " << std::endl; > std::cout << err << std::endl; > throw err; > } > > // Should never get here > return 0.0; > } > > > However, itk::MultiResolutionImageRegistrationMethod does not provide the > member functions GetNumberOfLevels() and SetCurrentLevel(unsigned long), and > both m_NumberOfLevels and m_CurrentLevel are private. Hence, I'm stuck :-( > > Could someone of the developers add GetNumberOfLevels() and > SetCurrentLevel(unsigned long) (or make m_CurrentLevel protected; the fact > that Initialize() is protected is not of much help without access to > m_CurrentLevel) to itk::MultiResolutionImageRegistrationMethod? > > Thanks, > > Koen > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From millerjv@crd.ge.com Fri Oct 25 16:48:34 2002 From: millerjv@crd.ge.com (Miller, James V (Research)) Date: Fri, 25 Oct 2002 11:48:34 -0400 Subject: [Insight-users] How to disconnect a pipeline Message-ID: Your original proposal should be pretty close ImageOutB = filterB->GetOutput(); ImageOutB->DisconnectPipeline(); This is assuming that ImageOutB is a smart pointer. > -----Original Message----- > From: Martin Styner [mailto:martin_styner@ieee.org] > Sent: Friday, October 25, 2002 3:23 AM > To: Luis Ibanez > Cc: insight-users > Subject: Re: [Insight-users] How to disconnect a pipeline > > > Hi Luis > Yes, that worked ! Thanks, much 'nicer' than my solution. > Nevertheless, > for curiosity sake, what would be the best way to disconnect an image > fully from the pipeline and free the whole pipeline before the image, > e.g. to be processed by a routine from a different libary (THERE, I > dared to say the taboo-word... ;) ). > > Best regads > Martin > > Luis Ibanez wrote: > > Hi Martin, > > > > I'm wondering if you tried the ReleaseData > > flag on the filters. > > > > ProcessObject (superclass of all the filters) > > > http://www.itk.org/Insight/Doxygen/html/classitk_1_1ProcessObject.html > > > > has methods > > > > void SetReleaseDataFlag (bool flag) > > bool GetReleaseDataFlag () > > void ReleaseDataFlagOn () > > void ReleaseDataFlagOff () > > > > that should allow to release the memory of the > > initial filters once their output is processed > > by the following filters. > > > > In the case you cite, probably adding > > > > FilterA->ReleaseDataFlagOn(); > > FilterB->ReleaseDataFlagOn(); > > > > before updating the pipeline should produce > > the desired effect of releasing memory as the > > pipeline progress. > > > > > > Luis > > > > > > ========================================================= > > > > Martin Styner wrote: > > > >> Hi everybody > >> I have a question in regard to the itk pipeline system. > >> In some cases my pipeline has grown too large so that I run out of > >> memory. Now I want to separate as nicely as possible the > pipeline into > >> 2 separate parts. > >> The 'nicest' I could so far come up with is the following: > >> > >> Before: > >> > >> FilterB->SetInput(FilterA->GetOutput()); > >> FilterC->SetInput(FilterB->GetOutput()); > >> > >> After: > >> > >> FilterB->SetInput(FilterA->GetOutput()); > >> FilterB->Update(); > >> ImageOutB = FilterB->GetOutput(); > >> ImageOutB->DisconnectPipeline(); > >> FilterA->Delete(); > >> // Can't do a FilterB->Delete(), otherwise ImageOutB iscorrupted ? > >> FilterC->SetInput(ImageOutB); > >> > >> Is there maybe an easy way to create a Duplicate of an image, this > >> would solve the whole business. > >> > >> Regards > >> Martin > >> > >> > > > > > > > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > -- > Martin Styner, PhD. Ing. ETH > Group Head Medical Image Analysis for Orthopaedics > M.E. Mueller Institute for Biomechanics > Center for Computed Assisted Surgery > University of Bern > Murtenstrasse 35 > P.O.Box 30 > CH - 3010 Bern > Switzerland > Tel office: ++41-31-632-0940 , FAX: ++41-31-632-4951 > email: Martin.Styner@memot.unibe.ch, martin_styner@ieee.org > WWW: http://cranium.unibe.ch/~mstyner > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Fri Oct 25 17:07:38 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 25 Oct 2002 12:07:38 -0400 Subject: [Insight-users] How to disconnect a pipeline References: <3DB81D26.5030706@ieee.org> <3DB82DFF.6000503@kitware.com> <3DB8F162.5080505@ieee.org> Message-ID: <3DB96C4A.9050104@kitware.com> Hi Martin, The itk::Image class derives from itk::DataObject http://www.itk.org/Insight/Doxygen/html/classitk_1_1DataObject.html Which provides a method: void DisconnectPipeline () const; You probably may want to use it like: FilterB->SetInput( FilterA->GetOutput() ); FilterB->Update(); ImageType::Pointer image = FilterB->GetOutput(); image->DisconnectPipeline(); FilterB->Delete(); FilterA->Delete(); Please let us know if you find any problem, Thanks Luis --- PS. There are not taboo words in ITK :-) The toolkit is supposed to be used in combination with other libraries. Well, thinking again, maybe "goto" is actually a taboo workd in ITK :-) http://www.acm.org/classics/oct95/ ======================================= Martin Styner wrote: > Hi Luis > Yes, that worked ! Thanks, much 'nicer' than my solution. Nevertheless, > for curiosity sake, what would be the best way to disconnect an image > fully from the pipeline and free the whole pipeline before the image, > e.g. to be processed by a routine from a different libary (THERE, I > dared to say the taboo-word... ;) ). > > Best regads > Martin > From luis.ibanez@kitware.com Fri Oct 25 18:45:17 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 25 Oct 2002 13:45:17 -0400 Subject: [Insight-users] Flaw in ITK? : orientation of images References: <200210251137.32827.koen.vanleemput@hus.fi> Message-ID: <3DB9832D.6020708@kitware.com> Hi Koen, We are evaluating how these changes could impact the performace of registration methods. The concern is that the ImageInterpolator classes that derive from ImageFunction are invoked for every pixel of an image during the computation of the metrics in the registration process. Delegating the computation of the point-index transform to the image will introduce an overhead per pixel. These overhead is paid millions of times during the evaluation of the metric. On the bright side, a genera transform is a nice to have functionality and the code changes are relatively small. One option to keep in mind is that it is sometimes easier to resample a volume before passing it to the registration process. Once we get some timimng for both approaches we could be able to make a better decision. So, stay tunned... Luis =============================================== Koen Van Leemput wrote: > Hi, > > In ITK, itk::Image comes with an IndexToPhysicalTransform and its inverse > PhysicalToIndexTransform that defines how coordinates in the index space map > into coordinates in the "real-world" physical space and vice versa. In > itk::Image, these transforms are AffineTransforms that take into account the > spacing of the voxels (scaling) and the position of the origin (translation). > > In many medical image processing applications, however, there is a need for > additional positioning information, defining how the patient is oriented with > respect to the image coordinate system. Examples include flipping and > swapping of image axes, gantry tilt in CT images, interfacing with other > image processing tools (SPM, 3D Slicer, ...), and proper handling of various > medical image formats (DICOM, SPM, ...). > > Because of these reasons, I decided to go for it and derive a class from > itk::Image that builds m_IndexToPhysicalTransform (and > m_PhysicalToIndexTransform by) by composing the standard scaling and > translation with an additional affine transform that defines orientation. > Apart from some convenience methods to manipulate this orientation, I > overloaded itk::Image::RebuildTransforms() and itk::Image::CopyInformation(), > and voila, it works: the orientation information travels nicely through the > ITK pipeline. > > BUT... things are messed up by what seems to me a design flaw in > itk::ImageFunction. Indeed, rather than using > itk::Image::TransformPhysicalPointToContinuousIndex() to convert a point in > physical space into an index in the image grid, itk::ImageFunction for some > reason provides its own implementation > itk::ImageFunction::ConvertPointToContinuousIndex that noisily ignores > whatever PhysicalToIndexTransform the image at hand actually uses. This > messes up all the registraton metrics and itk::ResampleImageFilter, where the > following construction is typically used: > > m_FixedImage->TransformIndexToPhysicalPoint( inputIndex, inputPoint ); > transformedPoint = m_Transform->TransformPoint( inputPoint ); > if( m_Interpolator->IsInsideBuffer( transformedPoint ) ) > { > movingValue = m_Interpolator->Evaluate( transformedPoint ); > [clip clip] > } > > (Note that also itk::ImageFunction::IsInsideBuffer() doesn't handle things > properly here neither) > > As I see it, itk::ImageFunction::IsInsideBuffer() and > itk::ImageFunction::ConvertPointToContinuousIndex() should use the > implementation provided by itk::Image. To avoid inefficiencies induced by > converting from physical space into index space twice, the following > construction should probably be considered: > > m_FixedImage->TransformIndexToPhysicalPoint( inputIndex, inputPoint ); > transformedPoint = m_Transform->TransformPoint( inputPoint ); > m_MovingImage->TransformPhysicalPointToContinuousIndex( > transformedPoint, transformedIndex ); > if( m_Interpolator->IsInsideBuffer( transformedIndex ) ) > { > movingValue = m_Interpolator->Evaluate( transformedIndex ); > [clip clip] > } > > > More in general, is support in ITK for orientation planned any time in the > future? After all, the fiddling around with itk::PermuteAxesImageFilters > itk::FlipImageFilters in the registration examples seems quite cumbersome... > > Cheers, > > Koen > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From luis.ibanez@kitware.com Fri Oct 25 20:09:38 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Fri, 25 Oct 2002 15:09:38 -0400 Subject: [Insight-users] ITK (BOF) Birds of a feather at IEEE Visualization 2002 : Oct 31 : 8-9pm Message-ID: <3DB996F2.8030902@kitware.com> A Birds of a Feather (BOF) session on ITK will be held at the upcoming IEEE Visualization conference in Boston next week. The BOF will take place on Thursday Oct 31 from 8:00 to 9:00 pm in the Terrace Room at the Boston Park Plaza Hotel. If you are attending the conference this is a good opportunity to meet the developers and give your feedback on the toolkit. This is a very informal and open event. The present and future of the toolkit will be among the topics to cover. A BOF on VTK will be held just before this event, (from 7:00 to 8:00pm) in the same room. You are all welcome to attend. Luis From malat@free.fr Sat Oct 26 08:17:04 2002 From: malat@free.fr (Mathieu Malaterre) Date: Sat, 26 Oct 2002 09:17:04 +0200 Subject: Fwd: Re: [Insight-users] Problem building on linux Message-ID: <3DBA4170.7070802@free.fr> Ghassan, I ask the cable mailing-list about your problem. And it has already been seen. So as I have adviced you, you better change your compiler. gcc3.2 has been reported to work very well. cheers mathieu -------- Original Message -------- Subject: Re: [cable] Cable built problem Date: Fri, 25 Oct 2002 14:09:05 -0400 (EDT) From: Brad King To: Mathieu Malaterre CC: cable@public.kitware.com Mathieu, > I tried to help someone build Cable on his linux box and he get this: > > WARNING: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 555 > XMLSourceParser (0x81325b8): Invalid location entry f0:23 in > XMLSourceElement > _3 > > ERROR: In /lhome/ghassan/Cable/Parsers/cableXMLSourceParser.cxx, line 1006 > XMLSourceParser (0x81325b8): Cannot convert max="1" to integer on > ArrayType _6 He is using gcc 2.96. There is a bug in its stream library that breaks Cable. Please have him change to an official GCC release. -Brad -- Le superflu n'est inutile qu'à ceux qui pensent que le nécessaire est suffisant (P. Desproges) Mathieu Malaterre 170 chemin des minimes 01600 PARCIEUX http://mathieu.malaterre.com From suresh " Hi Luis, I'm facing a compilation problem with MRIBiasFieldCorrectionFilter. this template accpets ImageTYpe as tempalte parameters. But when compile code like this the compiler throws a erroras following F:\itk\include\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) : error C2664: 'SetImage' : cannot convert parameter 1 from 'class itk::SmartPointer >' to 'class itk::Image *' typedef itk::Image ConverterType; typedef itk::MRIBiasFieldCorrectionFilter Corrector; filter->SetInput(imageMRI); filter->IsBiasFieldMultiplicative(true) ; filter->SetTissueClassStatistics(classMeans,classSigma) ; filter->SetUsingInterSliceIntensityCorrection(true); filter->SetSlicingDirection(2) ; ProgressUpdate(35, "Apply filter ", MRIVolumeName); filter->Update(); please help me in fixing this error. regards, suresh From luis.ibanez@kitware.com Sat Oct 26 17:25:57 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Sat, 26 Oct 2002 12:25:57 -0400 Subject: [Insight-users] Re: Error MRIBiasFieldCorrectionFilter. References: <20021026122108.19820.qmail@webmail10.rediffmail.com> Message-ID: <3DBAC215.40700@kitware.com> Hi Suresh, The error indicates that you are attempting to pass an image of type: Image< float, 3 > To a filter that was templated over an input image of type: Image< unsigned char, 3 > Please make sure that the image you provide to the SetInput() method has the same type used as first template parameter of MRIBiasFieldCorrectionFilter Verify the type of the "imageMRI" object used in your code > filter->SetInput(imageMRI); You can change the type of the filter producing the imageMRI or you can change the first template parameter of the CorrectionFilter. If for some reason you don't want to modify any of these types, you may want to consider the use of the ImageCastFilter http://www.itk.org/Insight/Doxygen/html/classitk_1_1CastImageFilter.html to convert imageMRI into a Image Please let us know if you find any problems, Thanks Luis ============================================== suresh wrote: > > Hi Luis, > > I'm facing a compilation problem with MRIBiasFieldCorrectionFilter. > this template accpets ImageTYpe as tempalte parameters. But when > compile code like this the compiler throws a erroras following > > F:\itk\include\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) : > error C2664: 'SetImage' : cannot convert parameter 1 from 'class > itk::SmartPointer >' to 'class > itk::Image *' > > > > typedef itk::Image ConverterType; > typedef itk::MRIBiasFieldCorrectionFilter ImageType> Corrector; > filter->SetInput(imageMRI); > filter->IsBiasFieldMultiplicative(true) ; > filter->SetTissueClassStatistics(classMeans,classSigma) ; > filter->SetUsingInterSliceIntensityCorrection(true); > filter->SetSlicingDirection(2) ; > ProgressUpdate(35, "Apply filter ", MRIVolumeName); > filter->Update(); > > please help me in fixing this error. > > regards, > suresh > From suresh " Hi Luis, Thanks for the quick response. But i dont see that the error was due to my Imagetype 's but the source code of MRIBiasFieldCorrectionFilter.Let me give the full description of my observation. First: My source code for your refernce. // // I have a template class which gives me the ITK image when passed a pixel buffer // of any type. // this template class internally creates a ImageType with the pixel type passed typedef BufferToImageConversion ConverterType; typedef ConverterType::ImageType ImageType; ConverterType converter; ConverterType::ImagePointer imageMRI = converter.GetImage(pMRI); typedef itk::MRIBiasFieldCorrectionFilter Corrector; Corrector::Pointer filter = Corrector::New() ; filter->SetInput(imageMRI); // SO THE IMAGE IS OF TYPE UNSIGNED CHAR. filter->IsBiasFieldMultiplicative(true) ; filter->SetTissueClassStatistics(classMeans,classSigma) ; filter->SetUsingInterSliceIntensityCorrection(true); filter->SetSlicingDirection(2) ; ProgressUpdate(35, "Apply filter ", MRIVolumeName); filter->Update(); ImageType::Pointer imageMRIINHCOR = filter->GetOutput(); Now My observations is... As the compiler points the error as ... => m_EnergyFunction->SetImage(m_InternalInput) ; => itk\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) the error could ber with the m_EnergyFunction or m_InternalInput.The creation of these two is in the source is given as // typedef MRIBiasEnergyFunction // EnergyFunctionType; // typedef typename EnergyFunctionType::Pointer EnergyFunctionPointer; // EnergyFunctionPointer m_EnergyFunction ; // typedef Image< float, itkGetStaticConstMacro(ImageDimension) > InternalImageType ; // InternalImagePointer m_InternalInput And i dont see any code related to casting the float image to unsigned char image. Am i missing any thing here?? Do i need to do plug-in any extrac code here?? Please help me.. Thank you for your time and interest, -suresh From highway_111@mail.com Mon Oct 28 12:46:42 2002 From: highway_111@mail.com (ahmad bukhari) Date: Mon, 28 Oct 2002 07:46:42 -0500 Subject: [Insight-users] itkExpectationMaximizationMixtureModel Message-ID: <20021028124642.65626.qmail@mail.com> hi jisung and others... The assignment of weightages is global and hence it shall not be effective ..In a certain intensity zone a class may not be present at all and then assigning weightages does not help in any way.... An example of adding a component shall be useful for me. thanks ahmad ----- Original Message ----- From: Jisung Kim Date: Fri, 25 Oct 2002 07:11:31 -0700 (PDT) To: ahmad bukhari , insight Subject: Re: [Insight-users] itkExpectationMaximizationMixtureModel > Hi ahmad, > > > --- ahmad bukhari wrote: > > hi everyone!! > > There is another issue that i need help with: > > the mixture model can finally give you an estimate > > of > > the different classes presence....but the trouble is > > > > that different classes occur in different intensity > > regions. For example in an intensity zone on a > > typical > > frequency histogram plot different classes occur in > > different regions interfering in some cases and > > isolated > > in rest. So the mixture model perhaps should be > > applied > > (initialized)differently for different intensity > > zones > > to get an accurate picture. Is there a way out...?? > > Each iteration of the EM estimation process updates > weights for measurement vectors with given > "components". In other words, in the test program, > each measurement vector has two weight values that > tells you how likely the measurement vector belongs to > the two Gaussian classes. When the Gaussian components > update their parameters, they use the weights instead > of using simple mean and covariance calculations. This > weighted mean and weighted covariance calculations > actually has similar effect that you mentioned. If a > measurement vector highly likely belong to a component > (let's say component A) but not to the other > component (component B), then the measurement vector > will affects the parameter calculation of component A > but won't affect much that of component B. > > Is this what you need? > > > > > thanks > > ahmad > > -- > > > > Thanks, > > Jisung. > > __________________________________________________________ > > Sign-up for your own FREE Personalized E-mail at > > Mail.com > > http://www.mail.com/?sr=signup > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > > http://public.kitware.com/mailman/listinfo/insight-users > > > ===== > Jisung Kim > bahrahm@yahoo.com > 106 Mason Farm Rd. > 129 Radiology Research Lab., CB# 7515 > Univ. of North Carolina at Chapel Hill > Chapel Hill, NC 27599-7515 > > __________________________________________________ > Do you Yahoo!? > Y! Web Hosting - Let the expert host your web site > http://webhosting.yahoo.com/ > -- __________________________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup From bahrahm@yahoo.com Mon Oct 28 14:41:07 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Mon, 28 Oct 2002 06:41:07 -0800 (PST) Subject: [Insight-users] itkExpectationMaximizationMixtureModel In-Reply-To: <20021028124642.65626.qmail@mail.com> Message-ID: <20021028144107.50758.qmail@web41012.mail.yahoo.com> Hi ahmad, --- ahmad bukhari wrote: > hi jisung and others... > The assignment of weightages is global and hence it > shall not be effective > ..In a certain intensity zone a class may not be > present at all and then > assigning weightages does not help in any way.... No, it wouldn't be helpful. However, if a component is correctly implemented, then it wouldn't hurt the result neither, because the components' Evaluate method should return very very small density value in that intensity zone. > An example of adding a component shall be useful for > me. > thanks > ahmad > ----- Original Message ----- > From: Jisung Kim > Date: Fri, 25 Oct 2002 07:11:31 -0700 (PDT) > To: ahmad bukhari , insight > > Subject: Re: [Insight-users] > itkExpectationMaximizationMixtureModel > > > > Hi ahmad, > > > > > > --- ahmad bukhari wrote: > > > hi everyone!! > > > There is another issue that i need help with: > > > the mixture model can finally give you an > estimate > > > of > > > the different classes presence....but the > trouble is > > > > > > that different classes occur in different > intensity > > > regions. For example in an intensity zone on a > > > > typical > > > frequency histogram plot different classes occur > in > > > different regions interfering in some cases and > > > > isolated > > > in rest. So the mixture model perhaps should be > > > > applied > > > (initialized)differently for different intensity > > > > zones > > > to get an accurate picture. Is there a way > out...?? > > > > Each iteration of the EM estimation process > updates > > weights for measurement vectors with given > > "components". In other words, in the test program, > > > each measurement vector has two weight values that > > > tells you how likely the measurement vector > belongs to > > the two Gaussian classes. When the Gaussian > components > > update their parameters, they use the weights > instead > > of using simple mean and covariance calculations. > This > > weighted mean and weighted covariance calculations > > > actually has similar effect that you mentioned. > If a > > measurement vector highly likely belong to a > component > > (let's say component A) but not to the other > > component (component B), then the measurement > vector > > will affects the parameter calculation of > component A > > but won't affect much that of component B. > > > > Is this what you need? > > > > > > > > > thanks > > > ahmad > > > -- > > > > > > > Thanks, > > > > Jisung. > > > > > __________________________________________________________ > > > > Sign-up for your own FREE Personalized E-mail at > > > > Mail.com > > > http://www.mail.com/?sr=signup > > > > > > _______________________________________________ > > > > Insight-users mailing list > > > Insight-users@public.kitware.com > > > > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > ===== > > Jisung Kim > > bahrahm@yahoo.com > > 106 Mason Farm Rd. > > 129 Radiology Research Lab., CB# 7515 > > Univ. of North Carolina at Chapel Hill > > Chapel Hill, NC 27599-7515 > > > > __________________________________________________ > > > Do you Yahoo!? > > Y! Web Hosting - Let the expert host your web site > > > http://webhosting.yahoo.com/ > > > -- > __________________________________________________________ > Sign-up for your own FREE Personalized E-mail at > Mail.com > http://www.mail.com/?sr=signup > ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From bahrahm@yahoo.com Mon Oct 28 14:44:59 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Mon, 28 Oct 2002 06:44:59 -0800 (PST) Subject: [Insight-users] Error MRIBiasFieldCorrectionFilter. In-Reply-To: <20021026122108.19820.qmail@webmail10.rediffmail.com> Message-ID: <20021028144459.69120.qmail@web41006.mail.yahoo.com> Hi suresh, Did you try to change the SetInput(imageMRI) to SetInput(imageMRI.GetPointer())? The error message says you are trying to assign a smart pointer to a normal pointer. If the imageMRI is a smart pointer, you can get the normal pointer from the imageMRI by calling GetPointer method. Thanks, Jisung. --- suresh wrote: > > Hi Luis, > > I'm facing a compilation problem with > MRIBiasFieldCorrectionFilter. > this template accpets ImageTYpe as tempalte > parameters. But when > compile code like this the compiler throws a erroras > following > > F:\itk\include\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) > > : error C2664: 'SetImage' : cannot convert parameter > 1 from 'class > itk::SmartPointer >' to > 'class > itk::Image *' > > > > typedef itk::Image ConverterType; > typedef itk::MRIBiasFieldCorrectionFilter > ImageType> Corrector; > filter->SetInput(imageMRI); > filter->IsBiasFieldMultiplicative(true) ; > filter->SetTissueClassStatistics(classMeans,classSigma) > ; > filter->SetUsingInterSliceIntensityCorrection(true); > filter->SetSlicingDirection(2) ; > ProgressUpdate(35, "Apply filter ", MRIVolumeName); > filter->Update(); > > please help me in fixing this error. > > regards, > suresh > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From luis.ibanez@kitware.com Mon Oct 28 14:59:23 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 28 Oct 2002 09:59:23 -0500 Subject: [Insight-users] Re: itkGradientDescentOptimizer Message-ID: <3DBD50CB.1030505@kitware.com> Hi Digvijay, Almost any optimization method requires you to start close to the final response. Off course some are more robust than others when you are far away, some are faster than others.... that's where you have to choose and tune the selection to the caracteristics of your particular problem. You will find the same problem in image registration. It is hopeless to start an optimization method very far from the expected response. Unless you use some sort of evolutionary algorithm and have no hurry in getting the answer back. The point here is "how close" have you find that the "InitialParameters" must be to the final parameters... In a gradient descent approach, you can go quite far from the final response as long as the cost function to be optimized is monotonic between the initial point and the final point. Otherewise you will be trapped in secondary extrema. If it happens that the cost function is actually populated with secondary extrema, then you will have to smooth the function or use an evolutionary algorithm (for which you have many choices). Could you please give us an idea of the numerical values you are dealing with, as well as the general setup of the problem ? Thanks Luis ================================================ digvijay singh wrote: > hi luis!! > I have a doubt regarding the setting up of > trueparameters. It requires that the final values of > parameters be known in a certain accuracy > range....isn't that a fallacy in itself....that the > results be obtained from the optimization lemme know > thanks > digvijay From bill.hoffman@kitware.com Mon Oct 28 15:01:00 2002 From: bill.hoffman@kitware.com (Bill Hoffman) Date: Mon, 28 Oct 2002 10:01:00 -0500 Subject: [Insight-users] Error MRIBiasFieldCorrectionFilter. In-Reply-To: <20021028144459.69120.qmail@web41006.mail.yahoo.com> References: <20021026122108.19820.qmail@webmail10.rediffmail.com> Message-ID: <5.1.1.6.0.20021028095950.03c22158@pop.biz.rr.com> I don't think this is a smart normal pointer problem. The problem is an image of float vs. an image of uchar: itk::SmartPointer >' to 'class itk::Image *' -Bill At 06:44 AM 10/28/2002 -0800, Jisung Kim wrote: >Hi suresh, > >Did you try to change the SetInput(imageMRI) to >SetInput(imageMRI.GetPointer())? > >The error message says you are trying to assign a >smart pointer to a normal pointer. If the imageMRI is >a smart pointer, you can get the normal pointer from >the imageMRI by calling GetPointer method. > >Thanks, > >Jisung. >--- suresh wrote: >> >> Hi Luis, >> >> I'm facing a compilation problem with >> MRIBiasFieldCorrectionFilter. >> this template accpets ImageTYpe as tempalte >> parameters. But when >> compile code like this the compiler throws a erroras >> following >> >> >F:\itk\include\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) >> >> : error C2664: 'SetImage' : cannot convert parameter >> 1 from 'class >> itk::SmartPointer >' to >> 'class >> itk::Image *' >> >> >> >> typedef itk::Image ConverterType; >> typedef itk::MRIBiasFieldCorrectionFilter >> > ImageType> Corrector; >> filter->SetInput(imageMRI); >> filter->IsBiasFieldMultiplicative(true) ; >> >filter->SetTissueClassStatistics(classMeans,classSigma) >> ; >> filter->SetUsingInterSliceIntensityCorrection(true); >> filter->SetSlicingDirection(2) ; >> ProgressUpdate(35, "Apply filter ", MRIVolumeName); >> filter->Update(); >> >> please help me in fixing this error. >> >> regards, >> suresh >> _______________________________________________ >> Insight-users mailing list >> Insight-users@public.kitware.com >> >http://public.kitware.com/mailman/listinfo/insight-users > > >===== >Jisung Kim >bahrahm@yahoo.com >106 Mason Farm Rd. >129 Radiology Research Lab., CB# 7515 >Univ. of North Carolina at Chapel Hill >Chapel Hill, NC 27599-7515 > >__________________________________________________ >Do you Yahoo!? >Y! Web Hosting - Let the expert host your web site >http://webhosting.yahoo.com/ >_______________________________________________ >Insight-users mailing list >Insight-users@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-users From bahrahm@yahoo.com Mon Oct 28 15:29:24 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Mon, 28 Oct 2002 07:29:24 -0800 (PST) Subject: [Insight-users] Error MRIBiasFieldCorrectionFilter. In-Reply-To: <5.1.1.6.0.20021028095950.03c22158@pop.biz.rr.com> Message-ID: <20021028152924.3257.qmail@web41003.mail.yahoo.com> I was wrong. FYI, suresh. the CorrectionFilter is derived from the ImageToImageFilter and the SetInput method is inherited from the ImageToImageFilter and the CorrectionFilter doesn't provide any overriding method. Since ITK has many filters derived from the ImageToImageFilter and work fine, our converter's ImagePointer type definition might be wrong. If you still have the problem, please send me your whole code so that I can reproduce the problem. Thanks, Jisung. --- Bill Hoffman wrote: > I don't think this is a smart normal pointer > problem. > The problem is an image of float vs. an image of > uchar: > itk::SmartPointer >' to > 'class itk::Image *' > > > -Bill > > At 06:44 AM 10/28/2002 -0800, Jisung Kim wrote: > >Hi suresh, > > > >Did you try to change the SetInput(imageMRI) to > >SetInput(imageMRI.GetPointer())? > > > >The error message says you are trying to assign a > >smart pointer to a normal pointer. If the imageMRI > is > >a smart pointer, you can get the normal pointer > from > >the imageMRI by calling GetPointer method. > > > >Thanks, > > > >Jisung. > >--- suresh wrote: > >> > >> Hi Luis, > >> > >> I'm facing a compilation problem with > >> MRIBiasFieldCorrectionFilter. > >> this template accpets ImageTYpe as tempalte > >> parameters. But when > >> compile code like this the compiler throws a > erroras > >> following > >> > >> > >F:\itk\include\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) > >> > >> : error C2664: 'SetImage' : cannot convert > parameter > >> 1 from 'class > >> itk::SmartPointer >' to > >> 'class > >> itk::Image *' > >> > >> > >> > >> typedef itk::Image > ConverterType; > >> typedef itk::MRIBiasFieldCorrectionFilter > >> >> ImageType> Corrector; > >> filter->SetInput(imageMRI); > >> filter->IsBiasFieldMultiplicative(true) ; > >> > >filter->SetTissueClassStatistics(classMeans,classSigma) > >> ; > >> > filter->SetUsingInterSliceIntensityCorrection(true); > >> filter->SetSlicingDirection(2) ; > >> ProgressUpdate(35, "Apply filter ", > MRIVolumeName); > >> filter->Update(); > >> > >> please help me in fixing this error. > >> > >> regards, > >> suresh > >> _______________________________________________ > >> Insight-users mailing list > >> Insight-users@public.kitware.com > >> > >http://public.kitware.com/mailman/listinfo/insight-users > > > > > >===== > >Jisung Kim > >bahrahm@yahoo.com > >106 Mason Farm Rd. > >129 Radiology Research Lab., CB# 7515 > >Univ. of North Carolina at Chapel Hill > >Chapel Hill, NC 27599-7515 > > > >__________________________________________________ > >Do you Yahoo!? > >Y! Web Hosting - Let the expert host your web site > >http://webhosting.yahoo.com/ > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > > ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From luis.ibanez@kitware.com Mon Oct 28 16:05:58 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Mon, 28 Oct 2002 11:05:58 -0500 Subject: [Insight-users] Error :itk::MRIBiasFieldCorrectionFilter may be with src code References: <20021028062633.22218.qmail@webmail7.rediffmail.com> Message-ID: <3DBD6066.7040907@kitware.com> Hi Suresh, You are right, There is a minor problem with the MRIBiasFieldCorrector header file. I tried the following simple code: #include "itkMRIBiasFieldCorrectionFilter.h" int main() { typedef unsigned char PixelType; typedef itk::Image< PixelType , 3 > ImageType; typedef itk::MRIBiasFieldCorrectionFilter< ImageType, ImageType, ImageType> CorrectorFilterType; ImageType::Pointer image = ImageType::New(); CorrectorFilterType::Pointer corrector = CorrectorFilterType::New(); corrector->SetInput( image ); return 0; } and got the same error that you reported. The reason as you pointed out is that the MRIBiasFieldCorrector has an internal image type declared in line: 238 of file Code/Algorithms/itkMRIBiasFieldCorrectionFilter.h This is the input passed to the Energy function. However the Energyfunction is templated over the first template argument of the MRIBiasFiledCorrectionFilter, the TInputImage instead of being templated over this internal image type. In line 253 the declaration of EnergyFunctionType should be typedef MRIBiasEnergyFunction< InternalImageType, ImageMaskType, BiasFieldType > EnergyFunctionType; instead of the current typedef MRIBiasEnergyFunction< TInputImage, ImageMaskType, BiasFieldType > EnergyFunctionType; This has been fixed in the repository now. Thanks for pointing this out. Luis =============================================== suresh wrote: > Hi Luis, > > Thanks for the quick response. > But i dont see that the error was due to my Imagetype 's but the source > code of MRIBiasFieldCorrectionFilter.Let me give the full description of > my observation. > > First: My source code for your refernce. > > // > // I have a template class which gives me the ITK image when > passed a pixel buffer // of any type. > // this template class internally creates a ImageType with the > pixel type passed > typedef BufferToImageConversion ConverterType; > typedef ConverterType::ImageType ImageType; > ConverterType converter; > ConverterType::ImagePointer imageMRI = converter.GetImage(pMRI); > > typedef itk::MRIBiasFieldCorrectionFilter ImageType> Corrector; > Corrector::Pointer filter = Corrector::New() ; > > filter->SetInput(imageMRI); // SO THE IMAGE IS OF TYPE UNSIGNED > CHAR. > filter->IsBiasFieldMultiplicative(true) ; > filter->SetTissueClassStatistics(classMeans,classSigma) ; > filter->SetUsingInterSliceIntensityCorrection(true); > filter->SetSlicingDirection(2) ; > ProgressUpdate(35, "Apply filter ", MRIVolumeName); > filter->Update(); > ImageType::Pointer imageMRIINHCOR = filter->GetOutput(); > > > Now My observations is... > As the compiler points the error as ... > => m_EnergyFunction->SetImage(m_InternalInput) ; > => itk\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) > > the error could ber with the m_EnergyFunction or m_InternalInput.The > creation of these two is in the source is given as > > // typedef MRIBiasEnergyFunction BiasFieldType> > // > EnergyFunctionType; > // typedef typename EnergyFunctionType::Pointer > EnergyFunctionPointer; > // EnergyFunctionPointer m_EnergyFunction ; > // typedef Image< float, itkGetStaticConstMacro(ImageDimension) > > InternalImageType ; > // InternalImagePointer m_InternalInput > > > And i dont see any code related to casting the float image to unsigned > char image. > Am i missing any thing here?? > Do i need to do plug-in any extrac code here?? > Please help me.. > > Thank you for your time and interest, > > -suresh > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From bahrahm@yahoo.com Mon Oct 28 16:11:48 2002 From: bahrahm@yahoo.com (Jisung Kim) Date: Mon, 28 Oct 2002 08:11:48 -0800 (PST) Subject: [Insight-users] Error :itk::MRIBiasFieldCorrectionFilter may be with src code In-Reply-To: <3DBD6066.7040907@kitware.com> Message-ID: <20021028161148.70447.qmail@web41010.mail.yahoo.com> Thanks Luis, Jisung. --- Luis Ibanez wrote: > Hi Suresh, > > You are right, > > There is a minor problem with the > MRIBiasFieldCorrector > header file. > > > I tried the following simple code: > > #include "itkMRIBiasFieldCorrectionFilter.h" > > int main() > { > typedef unsigned char PixelType; > typedef itk::Image< PixelType , 3 > ImageType; > typedef itk::MRIBiasFieldCorrectionFilter< > ImageType, ImageType, ImageType> > CorrectorFilterType; > ImageType::Pointer image = ImageType::New(); > CorrectorFilterType::Pointer corrector = > CorrectorFilterType::New(); > corrector->SetInput( image ); > return 0; > } > > > and got the same error that you reported. > > > The reason as you pointed out is that the > MRIBiasFieldCorrector > has an internal image type declared in line: 238 > of file > Code/Algorithms/itkMRIBiasFieldCorrectionFilter.h > > This is the input passed to the Energy function. > However the > Energyfunction is templated over the first template > argument > of the MRIBiasFiledCorrectionFilter, the TInputImage > instead > of being templated over this internal image type. > > > In line 253 the declaration of EnergyFunctionType > should be > > typedef MRIBiasEnergyFunction< > InternalImageType, > ImageMaskType, > BiasFieldType > EnergyFunctionType; > > instead of the current > > typedef MRIBiasEnergyFunction< > TInputImage, > ImageMaskType, > BiasFieldType > EnergyFunctionType; > > > This has been fixed in the repository now. > > Thanks for pointing this out. > > > Luis > > > > =============================================== > > > > > suresh wrote: > > Hi Luis, > > > > Thanks for the quick response. > > But i dont see that the error was due to my > Imagetype 's but the source > > code of MRIBiasFieldCorrectionFilter.Let me give > the full description of > > my observation. > > > > First: My source code for your refernce. > > > > // > > // I have a template class which gives me > the ITK image when > > passed a pixel buffer // of any type. > > // this template class internally creates > a ImageType with the > > pixel type passed > > typedef BufferToImageConversion > ConverterType; > > typedef ConverterType::ImageType ImageType; > > ConverterType converter; > > ConverterType::ImagePointer imageMRI = > converter.GetImage(pMRI); > > > > typedef > itk::MRIBiasFieldCorrectionFilter ImageType, > > ImageType> Corrector; > > Corrector::Pointer filter = Corrector::New() ; > > > > filter->SetInput(imageMRI); // SO THE IMAGE > IS OF TYPE UNSIGNED > > CHAR. > > filter->IsBiasFieldMultiplicative(true) ; > > > filter->SetTissueClassStatistics(classMeans,classSigma) > ; > > > filter->SetUsingInterSliceIntensityCorrection(true); > > filter->SetSlicingDirection(2) ; > > ProgressUpdate(35, "Apply filter ", > MRIVolumeName); > > filter->Update(); > > ImageType::Pointer imageMRIINHCOR = > filter->GetOutput(); > > > > > > Now My observations is... > > As the compiler points the error as ... > > => > m_EnergyFunction->SetImage(m_InternalInput) ; > > => > itk\Algorithms\itkMRIBiasFieldCorrectionFilter.txx(233) > > > > the error could ber with the m_EnergyFunction > or m_InternalInput.The > > creation of these two is in the source is given as > > > > // typedef MRIBiasEnergyFunction ImageMaskType, > > BiasFieldType> > > // > > > EnergyFunctionType; > > // typedef typename EnergyFunctionType::Pointer > > > EnergyFunctionPointer; > > // EnergyFunctionPointer m_EnergyFunction ; > > // typedef Image< float, > itkGetStaticConstMacro(ImageDimension) > > > InternalImageType ; > > // InternalImagePointer m_InternalInput > > > > > > And i dont see any code related to casting the > float image to unsigned > > char image. > > Am i missing any thing here?? > > Do i need to do plug-in any extrac code here?? > > Please help me.. > > > > Thank you for your time and interest, > > > > -suresh > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From suresh " ._< Registration Message-ID: <20021029044203.15287.qmail@webmail6.rediffmail.com> Hi All, Thanks Luis. Thanks Kisung.Thanks Bill. For your inputs. I would like to have your help in implementing a regsitration problem. I'm trying to register a SPECT volume to an MRI. Luis.. your might remember our discussion on this a month back. Still i could not understand the role the Componentes play in registration problem. How to feed them with initial paramaters, what effect do they have on the result. I've tried to implement the problem in other implementations like AVW and could succed. But, in ITK i could still make out the concepts behind these components. Please, can any body guide me through .. Thanks, suresh From srodrigu@gbt.tfo.upm.es Tue Oct 29 10:49:09 2002 From: srodrigu@gbt.tfo.upm.es (=?iso-8859-1?Q?Samuel_Rodr=EDguez_Bescos?=) Date: Tue, 29 Oct 2002 11:49:09 +0100 Subject: [Insight-users] Problem Reading Dicom Files Message-ID: <000801c27f38$cf9b41f0$5f0a048a@sisifo> This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C27F41.3131BC20 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello everybody, I'm executing then testing program of itk (itkIOTest.exe) for reading a = dicom files. The problem is that It can't read my dicom files. Does = anybody know if the Dicom Files must have got any special properties?. I have only change the name of the file I want to read. This is the = code: typedef unsigned short PixelType; =20 typedef itk::Image myImage; itk::ImageFileReader::Pointer reader=20 =3D = itk::ImageFileReader::New(); =20 // Register on factory capable of creating DicomImage readers itk::DicomImageIOFactory::RegisterOneFactory(); reader->DebugOn(); reader->SetFileName"Estudio445.dcm"); =20 try { reader->Update(); } catch (itk::ExceptionObject & e) { std::cerr << "exception in file reader " << std::endl; std::cerr << e.GetDescription() << std::endl; std::cerr << e.GetLocation() << std::endl; return EXIT_FAILURE; } And the error is: Exception in file reader Could not create IO object for file Estudio445.dcm Unknwon. Thnks!! Sam ------=_NextPart_000_0005_01C27F41.3131BC20 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello everybody,
 
I'm executing then testing program=20 of itk (itkIOTest.exe) for reading a dicom files. The problem is that It = can't=20 read my dicom files. Does anybody know if the Dicom Files must have got = any=20 special properties?.
 
I have only change the name of the = file I want=20 to read. This is the code:
 
      typedef = unsigned=20 short PixelType;
 
      typedef=20 itk::Image<PixelType, 2> myImage;
 
     =20 itk::ImageFileReader<myImage>::Pointer reader=20
           &nb= sp;           &nbs= p;         =20 =3D itk::ImageFileReader<myImage>::New();
 
 
      // = Register on=20 factory capable of creating DicomImage = readers
     =20 itk::DicomImageIOFactory::RegisterOneFactory();
   &nbs= p; =20 reader->DebugOn();
     =20 reader->SetFileName"Estudio445.dcm");
 
  =    =20 try
     {
     =   =20 reader->Update();
     }
  =    =20 catch (itk::ExceptionObject & e)
     =20 {
        std::cerr << "exception = in file=20 reader " << std::endl;
        = std::cerr=20 << e.GetDescription() << std::endl;
   =20     std::cerr << e.GetLocation() <<=20 std::endl;
        return=20 EXIT_FAILURE;
     }
 
 
And the error is:
    Exception in file=20 reader
    Could not create IO = object for=20 file Estudio445.dcm
    = Unknwon.
 
Thnks!!
 
Sam
------=_NextPart_000_0005_01C27F41.3131BC20-- From fladak@rri.ca Tue Oct 29 14:21:28 2002 From: fladak@rri.ca (fladak@rri.ca) Date: Tue, 29 Oct 2002 14:21:28 GMT Subject: [Insight-users] Can DeformableMesh3DFilter be used on 2D images Message-ID: <200210291421.g9TELSn03971@mailhost.robarts.ca> I would like to know if the class DeformableMesh3DFilter can be used to find the deformable model of a 2D image. If yes could you refer me to example code. I have already tried to modify the code itkDeformableTest.cxx to no avail. I would greatly appreciate any help. Thanks. -Faruq --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ From marcelo@radioimaging.net Tue Oct 29 17:25:31 2002 From: marcelo@radioimaging.net (Marcelo Costa Oliveira) Date: Tue, 29 Oct 2002 15:25:31 -0200 Subject: [Insight-users] Install ITK+BorlandC++ References: <010e01c27b55$fac227e0$d4323690@System.local> <3DB7F5AE.60409@kitware.com> Message-ID: <00f401c27f70$31fb6960$d4323690@System.local> Hi users and Luis I´m using ITK ( i did cvs -d :pserver:anonymous@www.itk.org:/insight/cvsroot co Insight ) on WinXP and Borland C++ 6.0. VTK 4 0 and Borland is working fine. I´´m really decided install ITK I have some mistakes Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx: Error E2268 C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx 175: Call to undefined function 'atof' in function MET_ValueToDouble(MET_ValueEnumType,const void *,in t,double *) *** 1 errors in Compile *** ** error 1 ** deleting metaUtils.obj ** error 1 ** deleting default_target ** error 1 ** deleting default_target_MetaIO ** error 1 ** deleting default_target ** error 1 ** deleting default_target_Utilities ** error 1 ** deleting default_target Tanks for help me and advanced me There is a step by step to install in some place ?? Marcelo From marcelo@radioimaging.net Tue Oct 29 20:32:37 2002 From: marcelo@radioimaging.net (Marcelo Costa Oliveira) Date: Tue, 29 Oct 2002 18:32:37 -0200 Subject: [Insight-users] Install ITK+BorlandC++ Message-ID: <015601c27f8a$521ef490$d4323690@System.local> Hi users and Luis I´m using ITK ( i did cvs -d :pserver:anonymous@www.itk.org:/insight/cvsroot co Insight ) on WinXP and Borland C++ 6.0. VTK 4 0 and Borland is working fine. I have some mistakes Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx: Error E2268 C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx 175: Call to undefined function 'atof' in function MET_ValueToDouble(MET_ValueEnumType,const void *,int,double *) *** 1 errors in Compile *** ** error 1 ** deleting metaUtils.obj ** error 1 ** deleting default_target ** error 1 ** deleting default_target_MetaIO ** error 1 ** deleting default_target tanks for your pacient and advanced me ** error 1 ** deleting default_target_Utilities ** error 1 ** deleting default_target From suresh " Hi all, I'm working on a SPECT to MRI regsitration problem. The components i'm using are AffineTransform, LinearInterpolateFunction, RegularStepGradientDescentOptimizer ImageRegistrationMethod MutualInformationImageToImageMetric I'm clue less about the the various parametrs these components need. like.. the OptimizerScales, optimizer iterations, the No of Spatial Samples for the Metric, and the Initial Transform parameters for the registration method. I tried with these following values ScalesType parametersScales( transform->GetNumberOfParameters() ); parametersScales.Fill( 1.0 ); double scale = 1.0 / vnl_math_sqr( 500); for (int j = 9; j < 12; j++ ) { parametersScales[j] = scale; } optimizer->SetScales( parametersScales ); metric->SetNumberOfSpatialSamples( 50); registration->SetInitialTransformParameters(transform->GetParameters()); optimizer->SetNumberOfIterations(400); But i failed to get the desired results. I worked with AVW image processing library.Where ,there are very less parametrs for Registration. The results were as desired. Please can any body help in approaching this registration problem.. Thanks, suresh From abert@mauriziano.it Wed Oct 30 08:36:01 2002 From: abert@mauriziano.it (Alberto Bert) Date: Wed, 30 Oct 2002 09:36:01 +0100 Subject: [Insight-users] load a CT scan (DICOM) In-Reply-To: <3D821725.5050505@unc.edu> References: <20020913155713.GA1608@rad7w026.mauriziano.it> <3D821725.5050505@unc.edu> Message-ID: <20021030083601.GD479@rad7w026.mauriziano.it> Hi, any news about your program for generate 3D MetaImages from a directory of dicom files? I worked on other parts of my program and now I'm facing again the 3D-DICOM from 2D-stack problem. Thanks for your patience, Alberto On set 13 at 12:49-0400, Stephen R. Aylward wrote: > Hi, > > The answer may be simple...Sometimes dicom transfers occur in order - so > the file numbers actually correspond (by luck) to how the slices should > be ordered to create a 3D volume. > > In that case, you can use the MetaImage format to read the dicom slices > to create a volume. You can use the Insight/Example/MetaImageImporter > to walk you thru the process to create a MetaImage header file that will > allow the slices to be loaded. Or you can write the MetaImage header > file yourself. The MetaImage header format is simple and will resemble > > NDims = 3 > DimSize = 512 512 > ElementSpacing = > HeaderSize = -1 > ElementType = MET_USHORT > ElementByteOrderMSB = True > ElementDataFile = LIST > > > > . > . > . > > > This is assuming the slices are 512x512 (most CT scans) of Unsigned > Shorts (valid for most CT dicom), and the Byte Ordering is MSB (the > default for most dicom). By setting HeaderSize = -1 the program will > automatically calculate the header size for each slice under the > assumption that the pixel data occurs at the end of each slice's file > (which is generally true for dicom). > > HOWEVER, DICOM does not guarantee order of delivery of slices - so, the > file numbering might be absolutely unrelated to how the slices should be > ordered to create a 3D volume. You can try to figure out the ordering, > but that is really tedious. Otherwise, we are working on a program to > automatically generate 3D MetaImages from a directory of dicom files. > It may be a few weeks before that program is ready. > > I hope this helps, > Stephen > > Alberto Bert wrote: > >Hi all, > > > >I'm interested in loading a CT (comput. tomography) scan in itk. > >I know that DicomImageIO can get DICOM file (medical images standard > >format), but in this case each slice (2D images at specified z, forming > >the 3D image when in stak) is in a separate file. I mean, I would like > >to read several 2D DICOM files (each containing a slice) and organizing > >them to form a 3D image for itk. > > > >Any one can help me? > > > >Alberto > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-users > > > -- > =============================================== > Dr. Stephen R. Aylward > Assistant Professor of Radiology > Adjunct Assistant Professor of Computer Science > http://caddlab.rad.unc.edu > aylward@unc.edu > (919) 966-9695 > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users From abert@mauriziano.it Wed Oct 30 08:51:18 2002 From: abert@mauriziano.it (Alberto Bert) Date: Wed, 30 Oct 2002 09:51:18 +0100 Subject: [Insight-users] Bugs (maybe) in itkDicomImageIO.cxx and questions In-Reply-To: <3DB59B3A.90202@unc.edu> References: <3DB59B3A.90202@unc.edu> Message-ID: <20021030085118.GE479@rad7w026.mauriziano.it> Hi, I'm really interested in your work on reading DICOM images from separate files. I need to do that and I don't wont to re-invent something already done. Please keep me informed. Alberto On ott 22 at 02:38-0400, Mark Foskey wrote: > There are definitely problems with this file. I am in the process of > adding the key you mentioned as a step towards reading a directory full > of slices into a single 3D image. A am also cleaning up some > infelicities in the code, including the unfreed memory. > > Streams are automatically closed by their destructors, when they go out > of scope. > > This has been on my plate for some time. Thanks for handing me a fork. > > Feng Ma wrote: > >Hi, > > > > I worked a little bit with file itkDicomImageIO.cxx to read CT dicom > >files. I found a few place that are possibly bugs. > > > > 1. In method CanReadFile(), inputStream is not closed. Nor is it closed > >in CheckTagTable(). I am not experienced in C++. Does an open stream > >need not to be closed? > > > > 2. In method ReadImageInformation(), array value, spac1value, > >spac2value are not freed in the end of this method. inFile stream is not > >closed. > > > > > > Below are my questions. > > > > 1. Dicom header size. I printed out m_InputPosition, which is supposed > >to be the dicom header size. I read one image and got the header size > >2522 (which is a 512x512 2 bytes CT image, file size 526812). this > >number is different from what I got from commecial merge library. The > >mergelib number is 2524 which is closer to the guess > >526812-512x512x2=2524. This happens in many files. Is the header size > >reported by itkDicomImageIO class possibly wrong? > > > > 2. Unable to read image position tag (0x0020 0x0032). This tag is very > >important to determine the z-value of the dicom image in a volume. When > >I add a segment of code to read this tag, method GoToTag() simply can > >not find it. I posted my code segment here. The last few lines in the > >posted method CheckTagTable() is what I added. I did rewind the file > >pointer before call GoToTag(). What's could be wrong? > > > >Btw, my ITK version is Oct 7 CVS version. > > > >Thank you very much. > > > >-Feng > > > >**** Run output **** > >fma@ctreg1:/r2net/space_fma1/vhds/test 728 % > >../../Devel/ITKDebug/bin/DicomImageViewer > >/r2net/space_fma2/data/LV00000500/LV00000500_152.dcm > >Loading File: /r2net/space_fma2/data/LV00000500/LV00000500_152.dcm > >Can not locate position tag 0x0020 0x0032 > >Header Size: 2522 > >...Done Loading File > > > >**** Code segment of CheckTagTable() **** > > > >bool DicomImageIO::CheckTagTable(std::ifstream & inputStream,std::list > > &TableOfTags) const > >{ > > long int i, j; > > long int max; > > Tag tagcurrent; > > unsigned char c; > > char chaine[4]; > > > > i=0; > > //0x7FE0 and 0x0010 is the last tag before data pixel > > if(!DicomImageIO::GoToTheEndOfHeader(inputStream,i,tagcurrent)) > > { > > return (false); > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > max=i; > > //start the reading of the Stream from the begining > > inputStream.seekg(0); > > i=0; > > } > > > > ////0x0028 and 0x0010 >> tag before the number of rows > > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0010,i,max,tagcurrent)) > > { > > return false; > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > } > > > > //0x0028 and 0x0011 >> tag before the number of columns > > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0011,i,max,tagcurrent)) > > { > > return false; > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > } > > > > //0x0028 and 0x0030 >> tag before each the value of spacing > > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0030,i,max,tagcurrent)) > > { > > //if there is no information about the spacing, we set the value > >compt to 0 > > tagcurrent.Balise1[1]=0x28; > > tagcurrent.Balise1[0]=0x00; > > tagcurrent.Balise2[1]=0x30; > > tagcurrent.Balise2[0]=0x0; > > tagcurrent.compt=0; // > > TableOfTags.push_back(tagcurrent); > > //start the reading of the Stream from the begining > > inputStream.seekg(0); > > i=0; > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > } > > > > //0x0028 and 0x0100 >> tag before the number of bits allocated > > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0100,i,max,tagcurrent)) > > { > > return false; > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > } > > > > //0x0028 and 0x0103 >> tag before the place of sample representation > > if(!DicomImageIO::GoToTag(inputStream,0x0028,0x0103,i,max,tagcurrent)) > > { > > return false; > > } > > else > > { > > TableOfTags.push_back(tagcurrent); > > } > > > > i = 0; > > inputStream.seekg(0); > > ////0x0020 and 0x0032 >> tag before value of position > > if(DicomImageIO::GoToTag( inputStream,0x0020,0x0032, > > i,max,tagcurrent)){ > > std::cout << "Position tag located.\n"; > > } > > else > > std::cout << "Can not locate position tag 0x0020 0x0032\n"; > > > > return(true); > >} > > > > > > > > > > > >_________________________________________________________________ > >Get faster connections -- switch to MSN Internet Access! > >http://resourcecenter.msn.com/access/plans/default.asp > > > >_______________________________________________ > >Insight-users mailing list > >Insight-users@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-user > >s > > -- > Mark Foskey (919) 843-5436 Computer-Aided Diagnosis and Display Lab > mark_foskey@unc.edu Department of Radiology, CB 7515, UNC > http://www.cs.unc.edu/~foskey Chapel Hill, NC 27599-7515 > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users From mdl78@libero.it Wed Oct 30 17:34:20 2002 From: mdl78@libero.it (Mdl) Date: Wed, 30 Oct 2002 18:34:20 +0100 Subject: [Insight-users] Compiling errors Message-ID: <003301c2803a$94ac6620$31810b17@bambinello> Hi everybody, I'm a total newbie about Itk, and I didn't manage to get it compiled properly yet. I downloaded the Beta2 sources for Windows, but when I try to compile the Cmake-generated projects (I use Visual C++ .NET), I get seven or eight times a strange error: e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : error C2660: 'std::allocator::allocate' : function does not take 2 parameters e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : while compiling class-template member function 'itk_simple_alloc::value_type *itk_simple_alloc::allocate(void)' with [ T=itk::hashtable_base,std::allocator>::node, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(296) : see reference to class template instantiation 'itk_simple_alloc' being compiled with [ T=itk::hashtable_base,std::allocator>::node, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(295) : while compiling class-template member function 'itk::hashtable_base::node *itk::hashtable_base::new_node(const itk::hashtable_base::value_type &)' with [ Value=std::pair, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(332) : see reference to class template instantiation 'itk::hashtable_base' being compiled with [ Value=std::pair, Alloc=std::allocator ] The odd thing is that just two lines above the line (40), there is (more or less) the same code but it doesn't produce any error! Here is it (from itk_alloc.h): (37) static value_type *allocate(size_t n) (38) { return 0 == n? 0 : (value_type*) alloc_type().allocate(n * chunk, 0); } (39) static value_type *allocate(void) (40) { return (value_type*) alloc_type().allocate(chunk, 0); } Any help will be much appreciated! Thank you in advance, Marco From John Biddiscombe" Message-ID: <000701c2803c$8645f540$0100a8c0@tigger> > Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland > C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx: > Error E2268 C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx 175: Call to > undefined > function 'atof' in function MET_ValueToDouble(MET_ValueEnumType,const void > *,int,double *) I get the same errors using Borland 6 (or 5.6 compiler). Fixing the above leads to several more and I've not managed yet to fix all the errors I get due to lack of time to spend on it. I understand that Borland 5 (Compiler 5.5) works on most of the itk code. The free command line tools can be downloaded from Borlands web site Please correct me if I'm mistaken. JB From hhiraki@lab.nig.ac.jp Thu Oct 31 04:35:50 2002 From: hhiraki@lab.nig.ac.jp (hhiraki@lab.nig.ac.jp) Date: Thu, 31 Oct 2002 13:35:50 +0900 Subject: [Insight-users] ASCII file format of unsigned char image Message-ID: <20021031133550D.hhiraki@lab.nig.ac.jp> Hi, I tried itkEllipsoidInteriorExteriorSpatialFunctionExample and the result file ellipsoid.vtk couldn't be read by VTK. It seems that a char data is written not as a string representing the data but as a character coded by the data because C++'s operator<<() don't convert char to string. Is this a bug? Anyway, how should I format data which might be 8bit integers to strings in C++? Thanks in advance. Hideaki Hiraki From mark_foskey@unc.edu Thu Oct 31 15:33:56 2002 From: mark_foskey@unc.edu (Mark Foskey) Date: Thu, 31 Oct 2002 10:33:56 -0500 Subject: [Insight-users] load a CT scan (DICOM) References: <20020913155713.GA1608@rad7w026.mauriziano.it> <3D821725.5050505@unc.edu> <20021030083601.GD479@rad7w026.mauriziano.it> Message-ID: <3DC14D64.7080600@unc.edu> Alberto Bert wrote: > Hi, > > any news about your program for generate 3D MetaImages from a > directory of dicom files? > > I worked on other parts of my program and now I'm facing again the > 3D-DICOM from 2D-stack problem. I have run into a number of problems on this, so I am reluctant to make a promise for when it will be ready. There is a tool that I have just learned about called MRIcro that may solve your problem, actually. Check out http://www.cla.sc.edu/psyc/faculty/rorden/faq.html#dicom2d3d and also http://www.psychology.nottingham.ac.uk/staff/cr1/dicom.html for pointers to more tools and information. > Thanks for your patience, Not at all. Thank you for *your* patience. -- Mark Foskey (919) 843-5436 Computer-Aided Diagnosis and Display Lab mark_foskey@unc.edu Department of Radiology, CB 7515, UNC http://www.cs.unc.edu/~foskey Chapel Hill, NC 27599-7515 From anast.jm@pg.com Thu Oct 31 15:49:25 2002 From: anast.jm@pg.com (anast.jm@pg.com) Date: Thu, 31 Oct 2002 10:49:25 -0500 Subject: [Insight-users] DicomImageIO build problems Message-ID: Last few recent CVS updates, WinNT-VC6++ build....been seeing these warnings/errors......john Compiling... itkDicomImageIO.cxx P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(448) : warning C4101: 'value' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(444) : warning C4101: 'columns' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(443) : warning C4101: 'rows' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(449) : warning C4101: 'spac2value' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(440) : warning C4101: 'temp' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(449) : warning C4101: 'spac1value' : unreferenced local variable P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(850) : error C2374: 'i' : redefinition; multiple initialization P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(844) : see declaration of 'i' From luis.ibanez@kitware.com Thu Oct 31 15:49:24 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 31 Oct 2002 10:49:24 -0500 Subject: [Insight-users] Thanks >._< Registration References: <20021029044203.15287.qmail@webmail6.rediffmail.com> Message-ID: <3DC15104.6080707@kitware.com> Hi Suresh. There is an example of PET / MRI registration that was developed by Lydia Ng (at Insightful). Insight/Examples/MultiResMIRegistration It may be a good starting point for attacking your problem. You can also consider the following components: 1) Use the Multiresolution framework. That will be more efficient and robust. This is the class: http://www.itk.org/Insight/Doxygen/html/classitk_1_1MultiResolutionImageRegistrationMethod.html 2) Use Mutual Information as metric. This is necessary because you are registering two different imaging modalities whose intensity levels are not linearly related. http://www.itk.org/Insight/Doxygen/html/classitk_1_1MutualInformationImageToImageMetric.html 3) Use the RegularStepGradientDescent optimizer. http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepGradientDescentOptimizer.html This is a variant of the gradient descent optimizer that doesn't require the 'learning rate' parameter. The learning rate of the GradientDescent is hard to tune for different conditions. 4) Use nearest neigborhood interpolation. This should be the most computationally efficient. http://www.itk.org/Insight/Doxygen/html/classitk_1_1NearestNeighborInterpolateImageFunction.html 6) Use an affine transform. http://www.itk.org/Insight/Doxygen/html/classitk_1_1AffineTransform.html You can follow the connections shown in Insight/Testing/itkMultiResolutionImageRegistrationMethodTest_1.cxx The initial parameters can easily be obtained by instantiating an AffineTransform, callint its method SetToIdentity() and then calling GetParameters() this will return you an array of values that are the correct parameters for an identity transform. Of course is you can visually determine a good guess for an initial translation and rotation, you could feed this data into the transform before getting the initial parameters. This may be less relevant in the multiresolution framework since the low resolution levels of the pyramid should easily take care of the first guesses. Please let us know if you find any problems, Thanks Luis ======================================================================== suresh wrote: > Hi All, > > Thanks Luis. > Thanks Kisung.Thanks Bill. For your inputs. > > I would like to have your help in implementing a regsitration problem. > I'm trying to register a SPECT volume to an MRI. > > Luis.. your might remember our discussion on this a month back. > Still i could not understand the role the Componentes play in > registration problem. > How to feed them with initial paramaters, what effect do they have on > the result. > I've tried to implement the problem in other implementations like AVW > and could succed. > But, in ITK i could still make out the concepts behind these components. > > Please, can any body guide me through .. > > Thanks, > > suresh > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Thu Oct 31 15:56:41 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 31 Oct 2002 10:56:41 -0500 Subject: [Insight-users] Problem Reading Dicom Files References: <000801c27f38$cf9b41f0$5f0a048a@sisifo> Message-ID: <3DC152B9.3050404@kitware.com> Hi Samuel, What version of ITK are you using ? The RegisterOneFactory() method is no longer needed. Factories for common file formats are now registered by default. It should be enough to provide the file name (making sure that the ".dcm" extension is used). The Dicom reader implemented in ITK support a certain number of common lables. You can find the details at: Insight/Code/IO/itkDicomImageIO.cxx -- Could you please try to read your dicom file using one of the ITK example applications. For example: 1) GaussianFilter2D 2) DicomImageViewer Please let us know if any of these applications can read your dicom file. Thanks Luis ============================================== Samuel Rodríguez Bescos wrote: > Hello everybody, > > > > I'm executing then testing program of itk (itkIOTest.exe) for reading a > dicom files. The problem is that It can't read my dicom files. Does > anybody know if the Dicom Files must have got any special properties?. > > > > I have only change the name of the file I want to read. This is the code: > > > > typedef unsigned short PixelType; > > typedef itk::Image myImage; > > > > itk::ImageFileReader::Pointer reader > = itk::ImageFileReader::New(); > > > > > // Register on factory capable of creating DicomImage readers > itk::DicomImageIOFactory::RegisterOneFactory(); > reader->DebugOn(); > reader->SetFileName"Estudio445.dcm"); > > try > { > reader->Update(); > } > catch (itk::ExceptionObject & e) > { > std::cerr << "exception in file reader " << std::endl; > std::cerr << e.GetDescription() << std::endl; > std::cerr << e.GetLocation() << std::endl; > return EXIT_FAILURE; > } > > > > > > And the error is: > > Exception in file reader > > Could not create IO object for file Estudio445.dcm > > Unknwon. > > > > Thnks!! > > > > Sam > From luis.ibanez@kitware.com Thu Oct 31 16:12:53 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 31 Oct 2002 11:12:53 -0500 Subject: [Insight-users] Install ITK+BorlandC++ References: <015601c27f8a$521ef490$d4323690@System.local> <000701c2803c$8645f540$0100a8c0@tigger> Message-ID: <3DC15685.10202@kitware.com> Hi Marcelo, John is right about the version of the Borland compiler. ITK builds with Borland 5.5 C++ compiler. This is the free version that you can download from: http://www.borland.com/products/downloads/download_cbuilder.html The known caveat with Borland is that you have to use the Minimum Size Relase (MinSizeRel) configuration. Otherwise the linker is not able to manage the final steps of the building process. You can find a starting guide for ITK at Insight/Documentation/InsightStart.pdf This is a short introduction that will lead you to your ITK 'Hello World' application. Additionally you can find in the InsightDocuments checkout the material for a tutorial just presented in IEEE visualization. This is available at : InsightDocuments/CourseWare/Training You may want to take a look at : - GettingStarted-I.sxi , ppt - GettingStarted-II.sxi , ppt - GettingStarted-III.sxi , ppt - GettingStarted-IV.sxi , ppt "sxi" is the extension used by OpenOffice 1.0.1 http://www.openoffice.org/ for presentations. The "ppt" files are the Powerpoint versions of the same presentations. Please let us know if you have further questions, Thanks Luis ================================================ John Biddiscombe wrote: >>Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland >>C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx: >>Error E2268 C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx 175: Call to >>undefined >> function 'atof' in function MET_ValueToDouble(MET_ValueEnumType,const >> > void > >>*,int,double *) >> > > I get the same errors using Borland 6 (or 5.6 compiler). Fixing the above > leads to several more and I've not managed yet to fix all the errors I get > due to lack of time to spend on it. I understand that Borland 5 (Compiler > 5.5) works on most of the itk code. The free command line tools can be > downloaded from Borlands web site > > Please correct me if I'm mistaken. > > JB > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From luis.ibanez@kitware.com Thu Oct 31 16:38:43 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 31 Oct 2002 11:38:43 -0500 Subject: [Insight-users] Registration References: <20021030052628.1091.qmail@webmail7.rediffmail.com> Message-ID: <3DC15C93.1030803@kitware.com> Hi Suresh, The Optimizer scales are used to bring all the parameters to a similar scale range. Here is the problem: imagine that you are registering in 2D using a rigid transform. This transform is fully defined by 3 paramters = { x, y } translation and an angle for rotation. So the optimizer will be exploring a 3-D parametric space. (If you were using rigid in 3D, the parametric space will be 7-D). The three parameters passed to the optimizer do not have the same scale range. You could expect translation to be in the order of the image size (in millimeters, not pixels) while the rotation angle is expressed in radians which means a range around -1.5 to 1.5. Tranlations could be maybe in the range 100 ~ 300. This huge difference of scale is bad for the optimizer because it will try to do enormous rotations or extremly small translations. The optimizer scale is used to bring the paramters to a similar scale. Knowing the order in which the parameters are exported from the AffineTransfom, allow you to set up the scales. e.g. for an 3D AffineTransform, you get 12 parameters: the first 9 are the coefficients of the matrix (representing rotation, scale and shearing) the last 3 are the components of a translation vector. You want then to provide an array of 12 values with the first 9 being =1.0 and the last three being on the range of 1.0 / the image size (in millimeters). -- For the MutualInformation metrics, the number of samples can very safely be fixed at 50. There are both, theoretical and practical information supporting that the metric is insensitive to this number. The initial parameters of the transformation can be taken from an actual affine transform. By default you can take an affine transform, set it to Identity and then extract its parameters with GetParameters(). However, if you have a good guess of an initial translation and rotation that roughtly aling your images, it may be convenient to set this values on an AffineTransform and then extract its parameters. Note that this is just an auxiliary transform. It doesn't have to be the same transform that you plug in into the registration method. This is only a trick to get the initial parameters formatted correctly with minimum effort. Please let us know if you find any problems, Thanks Luis ============================================================== suresh wrote: > Hi all, > > I'm working on a SPECT to MRI regsitration problem. > The components i'm using are > AffineTransform, > LinearInterpolateFunction, > RegularStepGradientDescentOptimizer > ImageRegistrationMethod > MutualInformationImageToImageMetric > > I'm clue less about the the various parametrs these components need. > like.. > the OptimizerScales, > optimizer iterations, > the No of Spatial Samples for the Metric, > and the Initial Transform parameters for the registration method. > > I tried with these following values > > ScalesType parametersScales( transform->GetNumberOfParameters() ); > parametersScales.Fill( 1.0 ); > double scale = 1.0 / vnl_math_sqr( 500); > for (int j = 9; j < 12; j++ ) > { > parametersScales[j] = scale; > } > optimizer->SetScales( parametersScales ); > > > metric->SetNumberOfSpatialSamples( 50); > > registration->SetInitialTransformParameters(transform->GetParameters()); > optimizer->SetNumberOfIterations(400); > > > But i failed to get the desired results. > I worked with AVW image processing library.Where ,there are very less > parametrs for Registration. > The results were as desired. > > Please can any body help in approaching this registration problem.. > > > Thanks, > > suresh > > > > > > > > > > > > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > From luis.ibanez@kitware.com Thu Oct 31 16:48:11 2002 From: luis.ibanez@kitware.com (Luis Ibanez) Date: Thu, 31 Oct 2002 11:48:11 -0500 Subject: [Insight-users] Compiling errors References: <003301c2803a$94ac6620$31810b17@bambinello> Message-ID: <3DC15ECB.3090005@kitware.com> Hi Marco, The Beta2 version is a bit old now (June 02). Many changes have been done in order to support .NET, Borland and Mac. You may want to try the new 1.0 release. Tarballs are available now from http://www.itk.org/ Please follow the document describing the easy start on: Insight/Documentation/InsightStart.pdf Please let us know if you find any problem, Thanks Luis ===================================== Mdl wrote: > Hi everybody, > > I'm a total newbie about Itk, and I didn't manage to get it compiled > properly yet. > I downloaded the Beta2 sources for Windows, but when I try to compile the > Cmake-generated projects (I use Visual C++ .NET), I get seven or eight times > a strange error: > > > e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : error C2660: > 'std::allocator::allocate' : function does not take 2 parameters > e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : while > compiling class-template member function 'itk_simple_alloc::value_type > *itk_simple_alloc::allocate(void)' > with > [ > T=itk::hashtable_base,std::allocator>::node, > Alloc=std::allocator > ] > e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(296) : see > reference to class template instantiation 'itk_simple_alloc' being compiled > with > [ > T=itk::hashtable_base,std::allocator>::node, > Alloc=std::allocator > ] > e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(295) : while > compiling class-template member function 'itk::hashtable_base::node > *itk::hashtable_base::new_node(const itk::hashtable_base::value_type &)' > with > [ > Value=std::pair, > Alloc=std::allocator > ] > e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(332) : see > reference to class template instantiation 'itk::hashtable_base' being > compiled > with > [ > Value=std::pair, > Alloc=std::allocator > ] > > > > > The odd thing is that just two lines above the line (40), there is (more or > less) the same code but it doesn't produce any error! > Here is it (from itk_alloc.h): > > (37) static value_type *allocate(size_t n) > (38) { return 0 == n? 0 : (value_type*) alloc_type().allocate(n * chunk, > 0); } > (39) static value_type *allocate(void) > (40) { return (value_type*) alloc_type().allocate(chunk, 0); } > > Any help will be much appreciated! > Thank you in advance, > Marco > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users > > From mark_foskey@unc.edu Thu Oct 31 17:40:29 2002 From: mark_foskey@unc.edu (Mark Foskey) Date: Thu, 31 Oct 2002 12:40:29 -0500 Subject: [Insight-users] DicomImageIO build problems References: Message-ID: <3DC16B0D.8080205@unc.edu> I have just checked in a fix for those warnings and the error. Thanks for pointing them out. anast.jm@pg.com wrote: > Last few recent CVS updates, WinNT-VC6++ build....been seeing these > warnings/errors......john > > Compiling... > itkDicomImageIO.cxx > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(448) : warning C4101: 'value' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(444) : warning C4101: 'columns' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(443) : warning C4101: 'rows' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(449) : warning C4101: 'spac2value' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(440) : warning C4101: 'temp' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(449) : warning C4101: 'spac1value' : unreferenced local variable > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(850) : error C2374: 'i' : redefinition; multiple initialization > P:\WinCVS\Insight+\Insight\Code\IO\itkDicomImageIO.cxx(844) : see declaration of 'i' > > > > > _______________________________________________ > Insight-users mailing list > Insight-users@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-users -- Mark Foskey (919) 843-5436 Computer-Aided Diagnosis and Display Lab mark_foskey@unc.edu Department of Radiology, CB 7515, UNC http://www.cs.unc.edu/~foskey Chapel Hill, NC 27599-7515 From marcelo@radioimaging.net Thu Oct 31 16:45:31 2002 From: marcelo@radioimaging.net (Marcelo Costa Oliveira) Date: Thu, 31 Oct 2002 14:45:31 -0200 Subject: [Insight-users] Install ITK+BorlandC++ References: <015601c27f8a$521ef490$d4323690@System.local> <000701c2803c$8645f540$0100a8c0@tigger> <3DC15685.10202@kitware.com> Message-ID: <003701c280fc$ede70750$d4323690@System.local> Tanks a lot for help me and for your pacient!!!!! I´ ll do this.... ----- Original Message ----- From: "Luis Ibanez" To: "Marcelo Costa Oliveira" Cc: "John Biddiscombe" ; Sent: Thursday, October 31, 2002 2:12 PM Subject: Re: [Insight-users] Install ITK+BorlandC++ > > Hi Marcelo, > > John is right about the version of the Borland compiler. > > ITK builds with Borland 5.5 C++ compiler. This is the > free version that you can download from: > > http://www.borland.com/products/downloads/download_cbuilder.html > > The known caveat with Borland is that you have to use the > Minimum Size Relase (MinSizeRel) configuration. Otherwise the > linker is not able to manage the final steps of the building > process. > > > You can find a starting guide for ITK at > > Insight/Documentation/InsightStart.pdf > > This is a short introduction that will lead you to > your ITK 'Hello World' application. > > Additionally you can find in the InsightDocuments > checkout the material for a tutorial just presented > in IEEE visualization. > > This is available at : > > InsightDocuments/CourseWare/Training > > You may want to take a look at : > > - GettingStarted-I.sxi , ppt > - GettingStarted-II.sxi , ppt > - GettingStarted-III.sxi , ppt > - GettingStarted-IV.sxi , ppt > > "sxi" is the extension used by OpenOffice 1.0.1 > > http://www.openoffice.org/ > > for presentations. The "ppt" files are the > Powerpoint versions of the same presentations. > > > Please let us know if you have further questions, > > Thanks > > Luis > > > ================================================ > > John Biddiscombe wrote: > >>Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland > >>C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx: > >>Error E2268 C:\ITK\Insight\Utilities\MetaIO\metaUtils.cxx 175: Call to > >>undefined > >> function 'atof' in function MET_ValueToDouble(MET_ValueEnumType,const > >> > > void > > > >>*,int,double *) > >> > > > > I get the same errors using Borland 6 (or 5.6 compiler). Fixing the above > > leads to several more and I've not managed yet to fix all the errors I get > > due to lack of time to spend on it. I understand that Borland 5 (Compiler > > 5.5) works on most of the itk code. The free command line tools can be > > downloaded from Borlands web site > > > > Please correct me if I'm mistaken. > > > > JB > > > > > > _______________________________________________ > > Insight-users mailing list > > Insight-users@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > > > From anast.jm@pg.com Thu Oct 31 18:07:13 2002 From: anast.jm@pg.com (anast.jm@pg.com) Date: Thu, 31 Oct 2002 13:07:13 -0500 Subject: [Insight-users] itk2DThresholdSegmentationLevelSetImageFilter build problem Message-ID: Dashboard looks green but I'm seeing build errors, is this a Halloween trick? ....john (sorry for the long list) Compiling... itk2DThresholdSegmentationLevelSetImageFilter.cxx Linking... msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: void __thiscall std::basic_ifstream >::`vbase destructor'(void)" (?? _D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegmen tationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: virtual __thiscall std::basic_ifstream >::~basic_ifstream >(void)" (??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ) alr eady defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: class std::basic_filebuf > * __thiscall std::basic_filebuf >::open(char const *,int)" (?open@?$basic_filebuf@DU?$char_traits@D@s td@@@std@@QAEPAV12@PBDH@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: __thiscall std::basic_filebuf >::basic_filebuf >(struct _iobuf *)" (??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobu f@@@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: class std::basic_filebuf > * __thiscall std::basic_filebuf >::close(void)" (?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@ QAEPAV12@XZ) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream >::`vbase destructor'(void)" (?? _D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegmen tationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "protected: void __thiscall std::basic_filebuf >::_Init(struct _iobuf *,enum std::basic_filebuf >::_Initfl)" (?_Init@?$basic_filebuf@DU?$ char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: void __thiscall std::basic_ifstream >::close(void)" (?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegmentationLeve lSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: virtual __thiscall std::basic_filebuf >::~basic_filebuf >(void)" (??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ) alread y defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "protected: void __thiscall std::basic_filebuf >::_Initcvt(void)" (? _Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ) already defined in itk2DThresholdSegmentat ionLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : error LNK2005: "public: virtual __thiscall std::basic_ofstream >::~basic_ofstream >(void)" (??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ) alr eady defined in itk2DThresholdSegmentationLevelSetImageFilter.obj msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: void __thiscall std::basic_ifstream >::`vbase destructor'(void)" (?? _D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegm entationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: virtual __thiscall std::basic_ifstream >::~basic_ifstream >(void)" (??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ) a lready defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: class std::basic_filebuf > * __thiscall std::basic_filebuf >::open(char const *,int)" (?open@?$basic_filebuf@DU?$char_traits@D @std@@@std@@QAEPAV12@PBDH@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: __thiscall std::basic_filebuf >::basic_filebuf >(struct _iobuf *)" (??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_io buf@@@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: class std::basic_filebuf > * __thiscall std::basic_filebuf >::close(void)" (?close@?$basic_filebuf@DU?$char_traits@D@std@@@std @@QAEPAV12@XZ) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: void __thiscall std::basic_ofstream >::`vbase destructor'(void)" (?? _D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegm entationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "protected: void __thiscall std::basic_filebuf >::_Init(struct _iobuf *,enum std::basic_filebuf >::_Initfl)" (?_Init@?$basic_filebuf@DU ?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z) already defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: void __thiscall std::basic_ifstream >::close(void)" (?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in itk2DThresholdSegmentationLe velSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: virtual __thiscall std::basic_filebuf >::~basic_filebuf >(void)" (??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ) alre ady defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "protected: void __thiscall std::basic_filebuf >::_Initcvt(void)" (? _Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ) already defined in itk2DThresholdSegment ationLevelSetImageFilter.obj; second definition ignored msvcprt.lib(MSVCP60.dll) : warning LNK4006: "public: virtual __thiscall std::basic_ofstream >::~basic_ofstream >(void)" (??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ) a lready defined in itk2DThresholdSegmentationLevelSetImageFilter.obj; second definition ignored Creating library P:\WinCVS\In\bin\Release/itk2DThresholdSegmentationLevelSetImageFilter.lib and object P: \WinCVS\In\bin\Release/itk2DThresholdSegmentationLevelSetImageFilter.exp P:\WinCVS\In\bin\Release/itk2DThresholdSegmentationLevelSetImageFilter.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe. ALL_BUILD - 12 error(s), 13 warning(s) From dilorenzo.marco@inwind.it Wed Oct 30 17:23:58 2002 From: dilorenzo.marco@inwind.it (Marco Di Lorenzo) Date: Wed, 30 Oct 2002 18:23:58 +0100 Subject: [Insight-users] Compiling errors Message-ID: <001f01c28039$22900430$31810b17@bambinello> Hi everybody, I'm a total newbie about Itk, and I didn't manage to get it compiled properly yet. I downloaded the Beta2 sources for Windows, but when I try to compile the Cmake-generated projects (I use Visual C++ .NET), I get seven or eight times a strange error: e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : error C2660: 'std::allocator::allocate' : function does not take 2 parameters e:\Dev\Itk\InsightBeta2\Code\Common\itk_alloc.h(40) : while compiling class-template member function 'itk_simple_alloc::value_type *itk_simple_alloc::allocate(void)' with [ T=itk::hashtable_base,std::allocator>::node, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(296) : see reference to class template instantiation 'itk_simple_alloc' being compiled with [ T=itk::hashtable_base,std::allocator>::node, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(295) : while compiling class-template member function 'itk::hashtable_base::node *itk::hashtable_base::new_node(const itk::hashtable_base::value_type &)' with [ Value=std::pair, Alloc=std::allocator ] e:\Dev\Itk\InsightBeta2\Code\Common\itk_hashtable.h(332) : see reference to class template instantiation 'itk::hashtable_base' being compiled with [ Value=std::pair, Alloc=std::allocator ] The odd thing is that just two lines above the line (40), there is (more or less) the same code but it doesn't produce any error! Here is it (from itk_alloc.h): (37) static value_type *allocate(size_t n) (38) { return 0 == n? 0 : (value_type*) alloc_type().allocate(n * chunk, 0); } (39) static value_type *allocate(void) (40) { return (value_type*) alloc_type().allocate(chunk, 0); } Any help will be much appreciated! Thank you in advance, Marco