June,4,2002
Dear Luis,
I am SrinivaJ, I am =
trying to load a=20
raw file
and apply laplacian effect on it, and get the result
in a =
different raw file.
And, I was getting some exceptions during =
the
runtime(=20
while calling Update() method of ImageFileReader,
and Write() method =
of=20
ImageFileWriter ).
I am listing my source code =
here,
/////////////SOURCE=20
CODE/////////////////////
int main(int argc, char*=20
argv[])
{
=20
itk::ImageFileReader<ImageType>::Pointer reader;
=
reader=20
=3D itk::ImageFileReader<ImageType>::New();
=20
reader->SetFileName("1.raw");
itk::RawImageIO<unsigned=20
short,2>::Pointer io;
io =3D itk::RawImageIO<unsigned=20
short,2>::New();
io->SetFileName ("1.raw");
=20
io->SetFilePrefix ("*.raw");
io->ReadImageInformation(); =
reader->SetImageIO(io);
=20
//reader->Update();
ImageType::Pointer input =3D=20
reader->GetOutput();
cout<<"Laplacian =
filter=20
test"<<endl;
=
itk12::DiscreteGaussianImageFilter<ImageType,=20
ImageType>::Pointer
gaussianFilter =3D=20
itk12::DiscreteGaussianImageFilter<ImageType, =
ImageType>::New();
=20
gaussianFilter->SetInput(input);
=20
//gaussianFilter->Update();
=
itk::LaplacianImageFilter<ImageType,=20
ImageType>::Pointer
lapFilter =3D=20
itk::LaplacianImageFilter<ImageType, ImageType>::New();
=20
lapFilter->SetInput(gaussianFilter->GetOutput());
// =20
lapFilter->Update();
=20
cout<<lapFilter->GetOutput();
//writing the=20
output
itk::ImageFileWriter<ImageType>::Pointer =
writer;
=20
writer =3D itk::ImageFileWriter<ImageType>::New();
writer->SetInput(lapFilter->GetOutput());
=20
writer->SetFileName("junk2.raw");
=20
writer->SetInput(lapFilter->GetOutput());
=20
writer->SetImageIO(io);
=20
writer->Write();
cout<<"Writing is=20
completed"<<endl;
return 0;
}
/////////////END OF THE SOURCE=20
CODE/////////////////
Appreciating your help.
Regards
Srinivas jalataru
(CSPL, Hyderabad,=20
India)
------=_NextPart_000_001C_01C20BED.53F49DD0--
From luis.ibanez@kitware.com Tue Jun 4 16:19:03 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Tue, 04 Jun 2002 11:19:03 -0400
Subject: [Insight-users] Registering ImageIO factories
References: <003f01c207de$e67ab210$01000001@macinfo.net> <3CF62D34.90207@kitware.com> <000f01c20868$2fd870d0$01000001@macinfo.net> <3CF770A5.6000805@kitware.com> <000801c2092b$c520cca0$01000001@macinfo.net> <3CF8E280.2040809@kitware.com> <000801c20ae3$83257800$01000001@macinfo.net> <3CFB742E.1070307@kitware.com> <001201c20bbb$300b6c00$01000001@macinfo.net>
Message-ID: <3CFCDA67.7000205@kitware.com>
Hi cspl,
In order to get the latest version of the IO classes
you will have to get the cvs checkout (instead of the
Beta release)
Please follow the instructions in the Download Page
from:
http://www.itk.org
You will find an example of ITK + VTK pipeline
connection under the directory:
Insight/Auxiliary/vtk/itkVTKtoITKtoVTK.cxx
Please let us know if you encounter any problems.
Thanks
Luis
================================================
cspl wrote:
> Dear Mr.Luis,
>
>
>
>
> itk::RawImageIOFactory::RegisterOneFactory();
> Actually RawImageIOFactory.h,.txx or .cxx is not available in dump of
> ITKWinSourcecode. Please send latest copy of RawImageIoFactory.h,.txx or
> .cxx.
>
>
>
> I have added this line to my code,I am getting errors.
>
>
>
> 1) F:\firstitk\firstitk.cpp(1903) : error C2955: 'RawImageIOFactory' :
> use of class template requires template argument list
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(161) : see declaration of
> 'RawImageIOFactory'
>
>
> 2) F:\firstitk\firstitk.cpp(1903) : error C2039: 'RegisterOneFactory' :
> is not a member of 'RawImageIOFactory'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(161) : see declaration of
> 'RawImageIOFactory'
>
>
> 3) F:\firstitk\firstitk.cpp(1903) : error C2065: 'RegisterOneFactory' :
> undeclared identifier
>
> Error executing cl.exe.
>
>
>
> firstitk.exe - 3 error(s), 0 warning(s)
>
>
>
> So what do I need to do? How to link properly wihout errors. I want
> pipeline for ITK like in VTK .
> After that I want to know how to call vtk in itk? I have to give my
> laplacian filter output as a image and should display it.
>
>
>
>
>
> Thanking you,
>
>
>
>
> Regards,
> Ramakrishna
>
From galicjan@yahoo.com Wed Jun 5 15:31:21 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Wed, 5 Jun 2002 07:31:21 -0700 (PDT)
Subject: [Insight-users] Streaming and memory allocation
Message-ID: <20020605143121.72848.qmail@web20909.mail.yahoo.com>
I am trying to figure out how streaming works in ITK and write some
streaming applications. I see how a 'RequestedRegion' can be pulled
through a pipeline during processing (StreamingImageFilter).
I have problem figuring out, however, what is the process of allocating
the memory for streaming. Memory allocation is critical since in most
streaming applications you want to do processing using amount of memory
that is a fraction of the size of the image that is being process. For
instance, I want to do processing on an image that is 6GB while my RAM is
only 1GB.
Here are some issues that I see as roadblocks of proper memory allocation
or as my lack of understanding what is going on:
1) Image objects tend to allocate memory for the LargestPossibleRegion
rather then BufferedRegion, see ImageBase< >::UpdateOutputInformation()
2) ImageFileReader<>::GenerateOutputInformation() forces allocation of
memory buffer equal to input image size.
3) Allocation is performed during GenerateOutputInformation, which is
before information about RequestedRegion is pushed up the pipeline
4) StreamingImage filter does not overwrite GetInputRequestedRegion,
rather this method is called from ImageToImageFilter and in turn from
ProcessObject that calls an all inputs
SetRequestedRegionToLargestPossibleRegion()
Could somebody give me some clues how memory allocation for streaming
works?
Jarek
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From will.schroeder@kitware.com Wed Jun 5 16:48:17 2002
From: will.schroeder@kitware.com (Will Schroeder)
Date: Wed, 05 Jun 2002 11:48:17 -0400
Subject: [Insight-users] Streaming and memory allocation
In-Reply-To: <20020605143121.72848.qmail@web20909.mail.yahoo.com>
Message-ID: <5.1.0.14.0.20020605114748.026ef3f0@pop.nycap.rr.com>
I have sent a preliminary pdf document; let me know if anyone else wants a
peek.
Will
At 07:31 AM 6/5/2002 -0700, Jarek Sacha wrote:
>I am trying to figure out how streaming works in ITK and write some
>streaming applications. I see how a 'RequestedRegion' can be pulled
>through a pipeline during processing (StreamingImageFilter).
>
>I have problem figuring out, however, what is the process of allocating
>the memory for streaming. Memory allocation is critical since in most
>streaming applications you want to do processing using amount of memory
>that is a fraction of the size of the image that is being process. For
>instance, I want to do processing on an image that is 6GB while my RAM is
>only 1GB.
>
>Here are some issues that I see as roadblocks of proper memory allocation
>or as my lack of understanding what is going on:
>
>1) Image objects tend to allocate memory for the LargestPossibleRegion
>rather then BufferedRegion, see ImageBase< >::UpdateOutputInformation()
>
>2) ImageFileReader<>::GenerateOutputInformation() forces allocation of
>memory buffer equal to input image size.
>
>3) Allocation is performed during GenerateOutputInformation, which is
>before information about RequestedRegion is pushed up the pipeline
>
>4) StreamingImage filter does not overwrite GetInputRequestedRegion,
>rather this method is called from ImageToImageFilter and in turn from
>ProcessObject that calls an all inputs
>SetRequestedRegionToLargestPossibleRegion()
>
>Could somebody give me some clues how memory allocation for streaming
>works?
>
>Jarek
>
>__________________________________________________
>Do You Yahoo!?
>Yahoo! - Official partner of 2002 FIFA World Cup
>http://fifaworldcup.yahoo.com
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
From galicjan@yahoo.com Wed Jun 5 17:25:45 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Wed, 5 Jun 2002 09:25:45 -0700 (PDT)
Subject: [Insight-users] Streaming and memory allocation
In-Reply-To: <5.1.0.14.0.20020605114748.026ef3f0@pop.nycap.rr.com>
Message-ID: <20020605162545.13430.qmail@web20901.mail.yahoo.com>
Will:
Thanks for the document. It was quite helpful in understanding the basics
of how streaming in ITK works. I am trying to create a very simple
application that reads an image and just writes it out, since this a basis
for anything else to work. Looks that I need to start from the end of the
pipeline. First implement a StreamingImageFileWriter (extend
ImageFileWriter using StreamingImageFilter as an example) and add
streaming support to concrete ImageIO class that is used for writing. Then
go up the pipeline and verify proper streaming support.
StreamingImageFilter, as an object, seems to be of limited help since it
does not stream down the pipeline.
Thanks for you help,
Jarek
--- Will Schroeder wrote:
> I have sent a preliminary pdf document; let me know if anyone else wants
> a
> peek.
> Will
>
> At 07:31 AM 6/5/2002 -0700, Jarek Sacha wrote:
> >I am trying to figure out how streaming works in ITK and write some
> >streaming applications. I see how a 'RequestedRegion' can be pulled
> >through a pipeline during processing (StreamingImageFilter).
> >
> >I have problem figuring out, however, what is the process of allocating
> >the memory for streaming. Memory allocation is critical since in most
> >streaming applications you want to do processing using amount of memory
> >that is a fraction of the size of the image that is being process. For
> >instance, I want to do processing on an image that is 6GB while my RAM
> is
> >only 1GB.
> >
> >Here are some issues that I see as roadblocks of proper memory
> allocation
> >or as my lack of understanding what is going on:
> >
> >1) Image objects tend to allocate memory for the LargestPossibleRegion
> >rather then BufferedRegion, see ImageBase< >::UpdateOutputInformation()
> >
> >2) ImageFileReader<>::GenerateOutputInformation() forces allocation of
> >memory buffer equal to input image size.
> >
> >3) Allocation is performed during GenerateOutputInformation, which is
> >before information about RequestedRegion is pushed up the pipeline
> >
> >4) StreamingImage filter does not overwrite GetInputRequestedRegion,
> >rather this method is called from ImageToImageFilter and in turn from
> >ProcessObject that calls an all inputs
> >SetRequestedRegionToLargestPossibleRegion()
> >
> >Could somebody give me some clues how memory allocation for streaming
> >works?
> >
> >Jarek
> >
> >__________________________________________________
> >Do You Yahoo!?
> >Yahoo! - Official partner of 2002 FIFA World Cup
> >http://fifaworldcup.yahoo.com
> >_______________________________________________
> >Insight-users mailing list
> >Insight-users@public.kitware.com
> >http://public.kitware.com/mailman/listinfo/insight-users
>
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From lng@insightful.com Wed Jun 5 22:41:46 2002
From: lng@insightful.com (Lydia Ng)
Date: Wed, 5 Jun 2002 14:41:46 -0700
Subject: [Insight-users] RE: Quaternion transformation
Message-ID: <635ADAEFC2399148BCCBB4193B6BF3A00AA6A2@se2kexch01.insightful.com>
Buu,
> - the fourth parameter is 0.996219. This means cos(t/2) =3D=20
> 0.996219, then I
> can find the rotation angle t. Am I right? How do we know=20
> the rotation
> axis?
> - the last three parameters are about the translation. How do=20
> we compute the
> translation vector?
Let the final parameters be p =3D array of 7 numbers
counting from 0.
Let rotation angle =3D t, then=20
t =3D 2 * acos(p[3])
Let rotation axis =3D n (array of 3 numbers), then
=20
n[0] =3D p[0] / sin(t/2)
n[1] =3D p[1] / sin(t/2)
n[2] =3D p[2] / sin(t/2)
Let translation vector =3D t (array of 3 numbers), then
t[0] =3D p[4];
t[1] =3D p[5];
t[2] =3D p[6];
If you want a rotation matrix M instead of axis and angle
you can ask the transform for it.
Presuming you are using the Beta and not the latest cvs code
add the following lines after line 123 of MIRegistrationApp.cxx
std::cout << "Rotation matrix: " << std::endl;
std::cout <<=20
=
m_Registrator->GetInternalRegistrationMethod()->GetMetric()->GetMapper()-=
>
GetTransform()->GetRotationMatrix()
<< std::endl << std::endl;
std::cout << "Translation vector: " << std::endl;
std::cout <<=20
=
m_Registrator->GetInternalRegistrationMethod()->GetMetric()->GetMapper()-=
>
GetTransform()->GetOffset()
<< std::endl << std::endl;
Once you have M and t the relationship between points=20
in the *fixed/target* image and the *moving/reference* image is
(a - a_c) =3D M * ( b - b_c ) + t
where=20
b =3D point in the *fixed* image
b_c =3D is the center point of the *fixed/target* image
a =3D point in the *moving* image
a_c =3D is the center point of the *moving/reference* image
M =3D rotation matrix
t =3D translation
NOTE:=20
A point is different to an index.=20
Points take into spacing into account i.e.
point[i] =3D spacing[i] * index[i]
Hope this helps.
BTW: have you resolve your previous issue
with setting the pixel type?
-Lydia
=20
> -----Original Message-----
> From: Buu Tien Phan [mailto:bphan@mail.uh.edu]
> Sent: Saturday, June 01, 2002 3:29 PM
> To: Lydia Ng
> Subject: Quaternion transformation
>=20
>=20
> Hello Lydia,
>=20
> Thank you for your explanation about the output. I am still not quite
> understanding. Correct me if I am wrong.
> Suppose I need to find the rotation parameters ( the angle=20
> and the axis) and
> the translation vector in MultiResMIRegistration example.
> >From the "Final parameters" line I have:
>=20
> "Final parameters: 0.000319651 8.89633e-005 0.0868807 0.996219
> 2.39833 -17.2735 -0.044853"
>=20
> - the fourth parameter is 0.996219. This means cos(t/2) =3D=20
> 0.996219, then I
> can find the rotation angle t. Am I right? How do we know=20
> the rotation
> axis?
> - the last three parameters are about the translation. How do=20
> we compute the
> translation vector?
>=20
> Thank you very much for your help.
>=20
> Buu Phan
>=20
>=20
>=20
>=20
>=20
>=20
From hjohnson@engineering.uiowa.edu Thu Jun 6 17:46:30 2002
From: hjohnson@engineering.uiowa.edu (Hans J. Johnson)
Date: Thu, 06 Jun 2002 11:46:30 -0500
Subject: [Insight-users] FLTK link problems.
Message-ID: <3CFF91E6.5090004@engineering.uiowa.edu>
Hello,
I am trying to build the examples for ITK, and I am having a problem
during the link phase with all programs that require FLTK. If I
manually edit the Makefiles and add "-lfltk -lfltk_forms.a -lfltk_gl.a"
before the locations where "-lGL" appears, then the compilation will work.
To me it seems like the ${FLTK_LIBRARY} from CMakeLists.txt is not being
filled or processed correctly.
During the configuration stage, I do not know what to put into the
FLTK_LIBRARY option to make this work properly.
FLTK_FLUID_EXE
/home/hjohnson/src/buildhome/athlon/DEBUG/bin/fluid
FLTK_INCLUDE_PATH /home/hjohnson/src/buildhome/athlon/DEBUG/include
FLTK_LIBRARY
/home/hjohnson/src/buildhome/athlon/DEBUG/lib
but this is wrong because FLTK_LIBRARY should be the full path to a
single library file.
I have also tried
FLTK_LIBRARY
/home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk.a
but this results in unresolved symbols from libfltk_forms.a
FLTK_LIBRARY
/home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk.a
/home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_forms.a
/home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_gl.a
but this results in an error during the generation of the Makefile from
within ccmake (something like "can not extract filename from
/home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_gl.aCMakeLists.txt")
Thanks in advance for your help.
Thanks,
Hans J. Johnson
hans-johnson@uiowa.edu
PS: I am building against fltk-1.1.0rc2
From luis.ibanez@kitware.com Thu Jun 6 18:14:09 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Thu, 06 Jun 2002 13:14:09 -0400
Subject: [Insight-users] FLTK link problems.
References: <3CFF91E6.5090004@engineering.uiowa.edu>
Message-ID: <3CFF9861.2030702@kitware.com>
Hi Hans,
The recomended version of FLTK is 1.0.11
FLTK 1.1 added two extra libraries: fltkgl,fltkforms
(for OpenGL and for XForms compatibility) that have
to be added to the link command line.
The current ITK projects don't take these extra
libraries into account.
We are working right now on adding the option of
using FLTK 1.1 so that will be included in the
next Beta release (to be release soon, very soon).
Luis
======================================================
Hans J. Johnson wrote:
> Hello,
>
> I am trying to build the examples for ITK, and I am having a problem
> during the link phase with all programs that require FLTK. If I
> manually edit the Makefiles and add "-lfltk -lfltk_forms.a -lfltk_gl.a"
> before the locations where "-lGL" appears, then the compilation will work.
>
> To me it seems like the ${FLTK_LIBRARY} from CMakeLists.txt is not being
> filled or processed correctly.
>
> During the configuration stage, I do not know what to put into the
> FLTK_LIBRARY option to make this work properly.
>
> FLTK_FLUID_EXE
> /home/hjohnson/src/buildhome/athlon/DEBUG/bin/fluid
> FLTK_INCLUDE_PATH /home/hjohnson/src/buildhome/athlon/DEBUG/include
> FLTK_LIBRARY
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib
> but this is wrong because FLTK_LIBRARY should be the full path to a
> single library file.
>
> I have also tried
>
> FLTK_LIBRARY
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk.a
> but this results in unresolved symbols from libfltk_forms.a
>
> FLTK_LIBRARY
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk.a
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_forms.a
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_gl.a
> but this results in an error during the generation of the Makefile from
> within ccmake (something like "can not extract filename from
> /home/hjohnson/src/buildhome/athlon/DEBUG/lib/libfltk_gl.aCMakeLists.txt")
>
> Thanks in advance for your help.
>
>
> Thanks,
> Hans J. Johnson
> hans-johnson@uiowa.edu
>
> PS: I am building against fltk-1.1.0rc2
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
From bhs@pvv.org Thu Jun 6 18:29:35 2002
From: bhs@pvv.org (Bjorn Hanch Sollie)
Date: Thu, 6 Jun 2002 19:29:35 +0200 (CEST)
Subject: [Insight-users] Questions about the fast marching and level set
filters
In-Reply-To:
Message-ID:
On Tue, 4 Jun 2002, Joshua Cates wrote:
> You can use the SparseFieldLevelSetImageFilter for applications that only
> care about a single level set (and you will almost certainly get some
> speed advantage by doing so). I
Thanks for answering some questions. I've been looking at the
SparseFieldLevelSet filter examples, and as far as I can see, it
requires the potential map (or target image) to have positive values
on the inside of the region and negative values on the outside. This
is in contrast to the potential map for the ShapeDetectionLevelSet
filter which wants values between 0 and 1. My queston then is: What
is the best way of making a potential map for the SparseFieldLevelSet
filter from an edge image? Just do a simple positive/negative
threshold on some grey value? Are there any recommended (better?)
ways?
-Bjorn
--
The History of the Universe
Chapter 1: Bang! Chapter 2: Sss... Chapter 3: Crunch!
The End
From lng@insightful.com Thu Jun 6 19:09:46 2002
From: lng@insightful.com (Lydia Ng)
Date: Thu, 6 Jun 2002 11:09:46 -0700
Subject: [Insight-users] Questions about the fast marching and level set filters
Message-ID: <635ADAEFC2399148BCCBB4193B6BF3A00AA6A5@se2kexch01.insightful.com>
Dear Bjorn,
> Finally, a question about the FastMarchingImageFilter: I have been
> using this for shape detection as well, growing a shape from a user
> selected seed point. The problem I have here is that if the potential
> image has pixel values zero (if only infinitesimally), the region
> doesn't expand (even over time) to include these pixels in the region.
> This means that if I have a well defined region, with sharp edges
> around it, and some very small variations in the (practically)
> monotonous region inside, the fast marching filter fails to detect the
> entire region. Is there a remedy for this, or is a limitation of this
> filter?
I think the FastMarchingImageFilter is doing exactly what is suppose
to in this case.
Options I can suggest are:
[1] Preprocessing: denoise or smooth the image before taking the =
gradient.
[2] Postprocessing: use morphology to close the holes.
-------------------------------
What the ShapeDetectionLevelSetFilter buys you is the ability to do
incorporate some smoothing into the process - that is what
the LengthPenaltyStrength term is about. It will try to limit the
length of the contour forces small holes to close up.
> How can I do, say, 5-10 iterations with a narrow band of
> 5 each time, rather than a single iteration with a narrow band of 35
A narrowband width defines the range around the zero level set which
is updated at each iteration. So running 5-10 iterations with narrowband
of 5 is not equivalent to running a single iteration with narrow band of =
35.
If you have a edge potential map of all ones then in the first case the
zero level set has moved 5-10 pixels out but in the second case it has
moved only one pixel out.
Typically a narrowband of 10-12 should be sufficient.
NB:
Fast marching returns you a time-crossing map - i.e. it returns the
solution for all time. You then threshold the map at times you want to
inspect.
The ShapeDetectionLevelSetFilter returns you the state of the levelset
at time =3D timestep * no. of iteration.=20
You will need to threshold the levelset at zero. Negative values =3D
inside the contour, positive values =3D outside the contour
--------------------------------
> Also, do you recommend that I rather switch to the more recent(?) code
> instead (SparseFieldLevelSetImageFilter/LevelSet3DFunction for
> example)? I'm slightly confused by the different level set filters
> present in ITK, I'm unsure of which one is preferable to use, and I'll
> be happy for some advice here.
Sorry about the confusion there.
The narrowband stuff was implemented very early in this project and
has not yet be ported over to the same framework as the sparse field
stuff. This is on my list of things to do towards end of the year.
-Lydia
> -----Original Message-----
> From: Bjorn Hanch Sollie [mailto:bhs@pvv.org]
> Sent: Saturday, June 01, 2002 3:10 PM
> To: insight-users
> Subject: [Insight-users] Questions about the fast marching=20
> and level set
> filters
>=20
>=20
> I have some questions I will really, really appreciate to get some
> answers to:
>=20
> I have been doing some level set filtering using the
> ShapeDetectionLevelSetFilter. The filter works fine and has given me
> great results so far, except I haven't quite figured out how to
> properly use narrow-banding yet (code below), so the filter takes very
> long to run. How can I do, say, 5-10 iterations with a narrow band of
> 5 each time, rather than a single iteration with a narrow band of 35?
> Do I use the ReinitializeLevelSetImageFilter for this, and if so how?
>=20
> Also, do you recommend that I rather switch to the more recent(?) code
> instead (SparseFieldLevelSetImageFilter/LevelSet3DFunction for
> example)? I'm slightly confused by the different level set filters
> present in ITK, I'm unsure of which one is preferable to use, and I'll
> be happy for some advice here.
>=20
> Finally, a question about the FastMarchingImageFilter: I have been
> using this for shape detection as well, growing a shape from a user
> selected seed point. The problem I have here is that if the potential
> image has pixel values zero (if only infinitesimally), the region
> doesn't expand (even over time) to include these pixels in the region.
> This means that if I have a well defined region, with sharp edges
> around it, and some very small variations in the (practically)
> monotonous region inside, the fast marching filter fails to detect the
> entire region. Is there a remedy for this, or is a limitation of this
> filter?
>=20
> Here is my current (working) ShapeDetectionLevelSetFilter code:
>=20
> // Begin level set shape detection
> std::cout << "Shape Detection filtering..." << std::endl;
> typedef itk::ShapeDetectionLevelSetFilter ImageType> ShapeDetectorType;
> ShapeDetectorType::Pointer shaper =3D ShapeDetectorType::New();
> shaper->SetInput(initiallevelset);
> shaper->SetEdgeImage(edgepotentialimage);
> shaper->SetLengthPenaltyStrength(0.01);
> shaper->SetNumberOfIterations(175);
> shaper->SetNarrowBanding(true);
> shaper->SetNarrowBandwidth(35.0);
> shaper->SetTimeStepSize(3.0);
> shaper->Update();
> // End level set shape detection
>=20
> -Bjorn
> --=20
> The History of the Universe
> Chapter 1: Bang! Chapter 2: Sss... Chapter 3: Crunch!
> The End
>=20
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>=20
>=20
From smithj@nlm.nih.gov Thu Jun 6 21:25:33 2002
From: smithj@nlm.nih.gov (john joe)
Date: Thu, 06 Jun 2002 15:25:33 -0500
Subject: [Insight-users] Attempting to unzip ITKDoxygenBeta
Message-ID: <3CFFC53D.DDC670F7@nlm.nih.gov>
In attempting to unzip the downloaded version of ITKDoxygenBeta for
windows there were two files that were unable to be unzipped with
messages as follows:
warning: filename too long--truncating.
[
Doxygen/html/classImageToImageFilter_3_01TInputImage1_00_01Image_3_01ITK__TYPENAME
_01Functor_1_1JoinFunctor_3_01ITK__TYPENAME_01TInputImage1_1_1PixelType_00_01ITK
__TYPENAME_01TInputImage2_1_1PixelType_01_4_1_1JoinType_00_01TInputImage1_1_1
ImageDimension_01_4_4 ]
warning: filename too long--truncating.
[
Doxygen/latex/classImageToImageFilter_3_01TInputImage1_00_01Image_3_01ITK__TYPENAME
_01Functor_1_1JoinFunctor_3_01ITK__TYPENAME_01TInputImage1_1_1PixelType_00_01ITK
__TYPENAME_01TInputImage2_1_1PixelType_01_4_1_1JoinType_00_01TInputImage1_1_1
ImageDimension_01_4_ ]
From lucantiga@hotmail.com Fri Jun 7 08:57:30 2002
From: lucantiga@hotmail.com (Luca Antiga)
Date: Fri, 07 Jun 2002 09:57:30 +0200
Subject: [Insight-users] Questions about the fast marching and level set filters
Message-ID:
Dear users,
dealing with sparse field and narrow band level sets. I know that sparse
field method (at least in the implementation given by Whitaker in his
library) ensures sub-voxel accuracy even with first order upwinding, by
estimating level set position according to \phi and \nabla(\phi) and
evaluating there all the quantities involved with evolution. Is this feature
included in narrow band version?
Thanks
Luca
>From: Bjorn Hanch Sollie
>To: insight-users , Joshua Cates
>
>Subject: Re: [Insight-users] Questions about the fast marching and level
>set filters
>Date: Thu, 6 Jun 2002 19:29:35 +0200 (CEST)
>
>On Tue, 4 Jun 2002, Joshua Cates wrote:
>
> > You can use the SparseFieldLevelSetImageFilter for applications that
>only
> > care about a single level set (and you will almost certainly get some
> > speed advantage by doing so). I
>
>Thanks for answering some questions. I've been looking at the
>SparseFieldLevelSet filter examples, and as far as I can see, it
>requires the potential map (or target image) to have positive values
>on the inside of the region and negative values on the outside. This
>is in contrast to the potential map for the ShapeDetectionLevelSet
>filter which wants values between 0 and 1. My queston then is: What
>is the best way of making a potential map for the SparseFieldLevelSet
>filter from an edge image? Just do a simple positive/negative
>threshold on some grey value? Are there any recommended (better?)
>ways?
>
>-Bjorn
>--
>The History of the Universe
>Chapter 1: Bang! Chapter 2: Sss... Chapter 3: Crunch!
>The End
>
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.
From luis.ibanez@kitware.com Fri Jun 7 13:27:01 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Fri, 07 Jun 2002 08:27:01 -0400
Subject: [Insight-users] Re: Problem with ITKrawImageIOFactory
References: <0af201c20e1a$3e2eaca0$01000001@macinfo.net>
Message-ID: <3D00A695.8060006@kitware.com>
Hi cspl,
We just added two examples to better
illustrate the use of the Raw Image
reader.
You can find them under:
Insight/Examples/RawImageReadWrite
and
Insight/Examples/RawImageReaderViewer
The first will read a Raw image file and
save it in raw format again.
The secon is intended to be a RawViever.
(it requires FLTK to be installed in order
to support the GUI).
The interface will ask for the image size,
(this has to be filled before you hit the
"Load" button, or the "Show" button)
Please let us know if you find any
problems using these two new examples.
Thanks
Luis
=======================================
cspl wrote:
> Dear Mr.Luis,
>
>
>
> I downloaded the new version of ItkRawImageIO.h and .txx.But Still I am
> facing problem with RawImageIOFactory.How to Register exactly
> RawImageIofactory.It is showing error
> "use of class template requires template argument list".
> I am also getting exception when reading using ImageFileReader.I have
> written code as follows.I attached herewith my exception also.Please
> give me in which way I will get result of Laplician filter.When ever Iam
> calling Update function of any object it is giving abnormal termination.
>
>
>
> int main(int argc, char* argv[])
> {
>
>
> UnsignedImageType::RegionType requestedRegion;
> UnsignedImageType::SizeType size;
> UnsignedImageType::IndexType index;
>
>
>
>
> //Set the size of the image region
> //If you want to try a 2D image, you need to change the dimension.
> size[0] = 512;
> size[1] = 256;
> size[2] = 10;
>
> index[0] = 0;
> index[1] = 0;
> index[2] = 0;
>
>
>
> requestedRegion.SetSize(size);
> requestedRegion.SetIndex(index);
> typedef itk::Image ImageType;
> typedef itk::ImageFileReader< ImageType > ReaderType;
> ReaderType::Pointer reader = ReaderType::New();
> reader->SetFileName("c:\\one.raw");
>
>
>
> try
> {
> reader->Update();
> }
> catch( itk::ExceptionObject & except )
> {
> std::cerr << except << std::endl;
> }
>
>
>
> cout<<"Laplacian filter test"< itk::LaplacianImageFilter::Pointer
> lapFilter = itk::LaplacianImageFilter::New();
> lapFilter->SetInput(reader->GetOutput());
> lapFilter->Update();
> std::cerr << lapFilter->GetOutput() << std::endl;
> return EXIT_SUCCESS;
> }
>
>
>
> exception :
>
>
>
> itk::ImageFileReaderException (0012F924)
> Location: "Unknown"
> File: F:\ITK\Insight\Code\IO\itkImageFileReader.txx
> Line: 85
> Description: Could not create IO object for file name
>
>
>
>
>
>
>
> Thanking you,
> Regards,
> Ramakrishna
>
From hjohnson@engineering.uiowa.edu Fri Jun 7 21:00:05 2002
From: hjohnson@engineering.uiowa.edu (Hans J. Johnson)
Date: Fri, 07 Jun 2002 15:00:05 -0500
Subject: [Insight-users] Is the bug tracking page dead?
Message-ID: <3D0110C5.2020200@engineering.uiowa.edu>
Hello,
I have submitted a bug to the http://www.itk.org/cgi-bin/gnatsweb.pl bug
tracking page, but it looks like that is not being used any longer (Last
resolved issue was almost 4 months ago, yet this news group is quite
active).
In case the bug page is not being maintained, I have replicated the bug
report here.
Regards,
Hans J. Johnson
hans-johnson@uiowa.edu
PS: I am just getting started with ITK, so if there is any else I can do
to help resolve this issue, please let me know.
PPS: ITK is GREAT!
*Category:* Source
*Synopsis:* MetaImageIO::CanReadFile Segfaults when checking
non-MetaImage File
*Confidential:* no
*Severity:* serious
*Priority:* high
*Responsible:*
*State:* open
*Quarter:*
*Keywords:*
*Date-Required:*
*Class:* bug
*Submitter-Id:* developers
*Arrival-Date:* Fri Jun 07 15:50:05 -0400 2002
*Closed-Date:*
*Cases:*
*Last-Modified:*
*Originator:* Hans J. Johnson
*Release:* 1.19
*Organization:* The University of Iowa
Mental Health Clinical Research Center
Image Processing Lab
*Environment:* Athlon, Redhat 7.3, ITK IO
*Description:* Module: $RCSfile: itkMetaImageIO.cxx,v $
Version: $Revision: 1.19 $
I have written an Analyze v7.5 file reader. When
MetaImageIOFactory::RegisterOne() is not included, the reader works just
fine, but when MetaImageIOFactory::RegisterOne() is included, a
segmentation fault occurs in MetaImageIO::CanReadFile. The problem is a
buffer overrun of the variable key[8000] when the 80MB analyze file is
streamed into that variable.
The fix that I propose below has been tested, and works, but if a binary
file with more than 8000 bytes and a .mh[da] extension were passed to
this file, it would likely segfault, instead of throwing an exception.
Just random thoughts on better fixes:
A more thorough solution would be to ensure that no more than the number
of bytes were streamed into a variable, or to change key[8000] into a
variable length structure (i.e. std::string).
maxLineLength and restOfTheLine will have similar problems if the first
line is OK, but the rest is broken.
*File Attachments:*
*How-To-Repeat:* Try to determine the type of a binary file greater than
8000 bytes long when MetaImageIOFactory is the first one registered.
*Fix:* Replace:
bool MetaImageIO::CanReadFile( const char* filename )
{
WITH:
bool MetaImageIO::CanReadFile( const char* filename )·
{
//MetaImage files must have an mha or mhd extension!
{
const std::string tempfilename=filename;
if( tempfilename == "" ||
!( tempfilename.find(".mha") < tempfilename.length() ||
tempfilename.find(".mhd") < tempfilename.length() ) )
{
return false;
}
}
From wlorens1@nycap.rr.com Fri Jun 7 21:35:01 2002
From: wlorens1@nycap.rr.com (Bill Lorensen)
Date: Fri, 07 Jun 2002 16:35:01 -0400
Subject: [Insight-users] Is the bug tracking page dead?
In-Reply-To: <3D0110C5.2020200@engineering.uiowa.edu>
Message-ID: <5.1.0.14.2.20020607163314.025f90b0@pop.nycap.rr.com>
Hans,
We still use the bug tracker, but the activity ebbs and flows with our=
quarterly contractor meetings. We have one coming up so there will be more=
activity in the next week or so.
As a user, you are better off for now to post to the list.
Bill
At 03:00 PM 6/7/02 -0500, Hans J. Johnson wrote:
>Hello,
>
>I have submitted a bug to the http://www.itk.org/cgi-bin/gnatsweb.pl bug=
tracking page, but it looks like that is not being used any longer (Last=
resolved issue was almost 4 months ago, yet this news group is quite=
active).
>
>In case the bug page is not being maintained, I have replicated the bug=
report here.
>
>Regards,
>Hans J. Johnson
>hans-johnson@uiowa.edu
>
>PS: I am just getting started with ITK, so if there is any else I can do to=
help resolve this issue, please let me know.
>PPS: ITK is GREAT!
>
>
>*Category:* Source
>*Synopsis:* MetaImageIO::CanReadFile Segfaults when checking non-MetaImage=
File
>*Confidential:* no
>*Severity:* serious
>*Priority:* high
>*Responsible:*
>*State:* open
>*Quarter:*
>*Keywords:*
>*Date-Required:*
>*Class:* bug
>*Submitter-Id:* developers
>*Arrival-Date:* Fri Jun 07 15:50:05 -0400 2002
>*Closed-Date:*
>*Cases:*
>*Last-Modified:*
>*Originator:* Hans J. Johnson
>*Release:* 1.19
>*Organization:* The University of Iowa
>Mental Health Clinical Research Center
>Image Processing Lab
>*Environment:* Athlon, Redhat 7.3, ITK IO
>*Description:* Module: $RCSfile: itkMetaImageIO.cxx,v $
>Version: $Revision: 1.19 $
>
>I have written an Analyze v7.5 file reader. When=
MetaImageIOFactory::RegisterOne() is not included, the reader works just=
fine, but when MetaImageIOFactory::RegisterOne() is included, a=
segmentation fault occurs in MetaImageIO::CanReadFile. The problem is a=
buffer overrun of the variable key[8000] when the 80MB analyze file is=
streamed into that variable.
>
>The fix that I propose below has been tested, and works, but if a binary=
file with more than 8000 bytes and a .mh[da] extension were passed to this=
file, it would likely segfault, instead of throwing an exception.
>
>Just random thoughts on better fixes:
>A more thorough solution would be to ensure that no more than the number of=
bytes were streamed into a variable, or to change key[8000] into a variable=
length structure (i.e. std::string).
>
>maxLineLength and restOfTheLine will have similar problems if the first=
line is OK, but the rest is broken.
>*File Attachments:*
>*How-To-Repeat:* Try to determine the type of a binary file greater than=
8000 bytes long when MetaImageIOFactory is the first one registered.
>*Fix:* Replace:
>bool MetaImageIO::CanReadFile( const char* filename )
>{
>WITH:
>bool MetaImageIO::CanReadFile( const char* filename )=B7
>{
>//MetaImage files must have an mha or mhd extension!
>{
>const std::string tempfilename=3Dfilename;
>if( tempfilename =3D=3D "" ||
>!( tempfilename.find(".mha") < tempfilename.length() ||
>tempfilename.find(".mhd") < tempfilename.length() ) )
>{
>return false;
>}
>}
>
>
>
>
>
>
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
From wlorens1@nycap.rr.com Fri Jun 7 21:38:31 2002
From: wlorens1@nycap.rr.com (Bill Lorensen)
Date: Fri, 07 Jun 2002 16:38:31 -0400
Subject: [Insight-users] itk Seminar in Boston, Thursday, June 13
In-Reply-To: <3D0110C5.2020200@engineering.uiowa.edu>
Message-ID: <5.1.0.14.2.20020607163508.025fb5e0@pop.nycap.rr.com>
ANNOUNCING
ITK: The Insight Segmentation and Registration Toolkit
When: Thursday, June 13, 2002 2:00-5:00pm
Where: Auditorium 250, Second Floor Tosteson Medical Education Center
Info: www.itk.org
The Insight Segmentation and Registration Toolkit (ITK) is an open source
software system supporting the Visible Human Project. ITK was developed by
six principal firms (three academic-UNC,U. of Pennsylvania, U. of Utah; and
three commercial-GE Research, Insightful, Kitware) and funded through The
National Library of Medicine at NIH. ITK employs a variety of leading edge
segmentation and registration algorithms in 2D, 3D, and more dimensions, and
is being developed using advanced, distributed software processes. This
presentation marks the first formal introduction of ITK to the public. We
will provide a brief history of and motivation for the software, a survey of
available registration and segmentation algorithms, live demonstrations, and
an overview of the development environment. We will also discuss some early
reviews from the ITK community and plans for the future. Developers,
Principal Investigators, and NLM project officers will be available for
questions after the presentation.
Thursday June 13, 2002
Schedule of Presentations
=========================
2:00 - 3:00 An Introduction to ITK
+ Introduction
Goals, objectives, team, relationship to VHP (Visible Human
Project)
Validation Effort
+ Overview
Architecture, major design decisions, major subsystems
Use of templates/generic programming
Image representation
Mesh Representation
+ Registration Algorithms & Framework
Various algorithms and results
+ Segmentation Algorithms & Framework
Various algorithms and results
+ Future
Upcoming releases, etc.
Annoucement of the Beta2.
3:00 - 4:20 Demonstrations
+ Live demos
4:00 - 5:00 Developing with ITK
+ Development Environment
+ Architectural Features
Memory management (smart pointers, object factories, etc.)
Events (command/observer)
Image Processing (Image, iterators, etc.)
Mesh
Data flow
Image IO
5:00 - Informal Meetings
Directions
The address is:
Tosteson Medical Medical Education Center (T-MEC)
260 Longwood Ave
Boston, MA 02115
General map and direction information about Harvard Medical School can
be found at http://www.hms.harvard.edu/about/mapsdir.html .
T-MEC is located in Harvard Medical School Quadrangle
(http://www.hms.harvard.edu/about/maps/quadmap.html) at the intersection
of Longwood Ave and Ave Louis Pasteur, at Longwood Medical Area
(http://www.hms.harvard.edu/about/maps/lmamap.html).
By MBTA subway or bus or by car:
Subway Green Line (E line Longwood Medical Area stop or D line Longwood
stop), bus routes 47, CT2 and 8A will all take you there. For more
information on public transportation, and for DRIVING DIRECTIONS, please
check http://www.hms.harvard.edu/about/direction.html .
By M2 shuttle
M2 shuttle bus runs between Harvard Yard (Quincy Street outside Lamont
Library Gate) and Longwood Medical Area (T-MEC is right across the street
from shuttle stop). Harvard GSAS students can take M2 for free. The
shuttle also makes stops on the way, including one at MBTA bus stop of
MIT's main entrance. The shuttle leaving at 7pm from Harvard Yard will
take you there on time. For more information, please check
http://www.masco.org/transit/ptsM2.htm .
From ander833@student.liu.se Fri Jun 7 21:38:39 2002
From: ander833@student.liu.se (=?iso-8859-1?Q?Andr=E9as_Eriksson?=)
Date: Fri, 7 Jun 2002 22:38:39 +0200
Subject: [Insight-users] ITK on HP-UX
Message-ID: <000d01c20e63$4e788e70$1d00a8c0@PCFURALLE>
Has anyone tried compiling ITK on HP-UX?
Regards
Andreas Eriksson
From will.schroeder@kitware.com Fri Jun 7 21:55:28 2002
From: will.schroeder@kitware.com (Will Schroeder)
Date: Fri, 07 Jun 2002 16:55:28 -0400
Subject: [Insight-users] Announcement: ITK Public Meeting
Message-ID: <5.0.2.1.0.20020607165222.02795780@pop.nycap.rr.com>
ANNOUNCING
ITK: The Insight Segmentation and Registration Toolkit Public Presentation
When: Thursday, June 13, 2002 2:00-5:00pm
Where: Auditorium 250, Second Floor Tosteson Medical Education Center
Harvard Medical School, Boston, MA, USA
Info: www.itk.org
The Insight Segmentation and Registration Toolkit (ITK) is an open source
software system supporting the Visible Human Project. ITK was developed by
six principal firms (three academic-UNC,U. of Pennsylvania, U. of Utah; and
three commercial-GE Research, Insightful, Kitware) and funded through The
National Library of Medicine at NIH. ITK employs a variety of leading edge
segmentation and registration algorithms in 2D, 3D, and more dimensions, and
is being developed using advanced, distributed software processes. This
presentation marks the first formal introduction of ITK to the public. We
will provide a brief history of and motivation for the software, a survey of
available registration and segmentation algorithms, live demonstrations, and
an overview of the development environment. We will also discuss some early
reviews from the ITK community and plans for the future. Developers,
Principal Investigators, and NLM project officers will be available for
questions after the presentation.
Thursday June 13, 2002
Schedule of Presentations
=========================
2:00 - 3:00 An Introduction to ITK
+ Introduction
Goals, objectives, team, relationship to VHP (Visible Human
Project)
Validation Effort
+ Overview
Architecture, major design decisions, major subsystems
Use of templates/generic programming
Image representation
Mesh Representation
+ Registration Algorithms & Framework
Various algorithms and results
+ Segmentation Algorithms & Framework
Various algorithms and results
+ Future
Upcoming releases, etc.
Annoucement of the Beta2.
3:00 - 4:20 Demonstrations
+ Live demos
4:00 - 5:00 Developing with ITK
+ Development Environment
+ Architectural Features
Memory management (smart pointers, object factories, etc.)
Events (command/observer)
Image Processing (Image, iterators, etc.)
Mesh
Data flow
Image IO
5:00 - Informal Meetings
Directions
The address is:
Tosteson Medical Medical Education Center (T-MEC)
260 Longwood Ave
Boston, MA 02115
General map and direction information about Harvard Medical School can
be found at http://www.hms.harvard.edu/about/mapsdir.html .
T-MEC is located in Harvard Medical School Quadrangle
(http://www.hms.harvard.edu/about/maps/quadmap.html) at the intersection
of Longwood Ave and Ave Louis Pasteur, at Longwood Medical Area
(http://www.hms.harvard.edu/about/maps/lmamap.html).
By MBTA subway or bus or by car:
Subway Green Line (E line Longwood Medical Area stop or D line Longwood
stop), bus routes 47, CT2 and 8A will all take you there. For more
information on public transportation, and for DRIVING DIRECTIONS, please
check http://www.hms.harvard.edu/about/direction.html .
By M2 shuttle
M2 shuttle bus runs between Harvard Yard (Quincy Street outside Lamont
Library Gate) and Longwood Medical Area (T-MEC is right across the street
from shuttle stop). Harvard GSAS students can take M2 for free. The
shuttle also makes stops on the way, including one at MBTA bus stop of
MIT's main entrance. The shuttle leaving at 7pm from Harvard Yard will
take you there on time. For more information, please check
http://www.masco.org/transit/ptsM2.htm .
From rrp@imm.dtu.dk Sat Jun 8 10:14:34 2002
From: rrp@imm.dtu.dk (Rasmus Reinhold Paulsen)
Date: Sat, 8 Jun 2002 11:14:34 +0200 (METDST)
Subject: [Insight-users] Re: [vtkusers] itk Seminar in Boston, Thursday, June 13
In-Reply-To: <5.1.0.14.2.20020607163508.025fb5e0@pop.nycap.rr.com>
Message-ID:
Hi Bill,
Sounds very good. Hard to go to Boston for a single event though ;)
Do you know if there will be any ITK related events at MICCAI 2002 in
Tokyo, Japan ?
Regards,
Rasmus
From tarifa@rpi.edu Sat Jun 8 22:20:25 2002
From: tarifa@rpi.edu (Asad A. Abu-Tarif)
Date: Sat, 8 Jun 2002 17:20:25 -0400
Subject: [Insight-users] Announcement: ITK Public Meeting
References: <5.0.2.1.0.20020607165222.02795780@pop.nycap.rr.com>
Message-ID: <007301c20f32$4e51cb80$0201a8c0@nycap.rr.com>
Hi,
Is there any registration or fees? I might be able to go but
don't want to drive to Boston and not be able to get in :-)
Thanks,
Asad
***************************************************************************
* Asad A. Abu-Tarif
* Computer Engineering.
* PhD Candidate, Rensselaer Polytechnic Institute (RPI).
* Web-site: http://asad.ods.org/Professional/
* Registration Toolkit: http://asad.ods.org/RegMagicTKDoc/
* tarifa@rpi.edu
***************************************************************************
----- Original Message -----
From: "Will Schroeder"
To:
Sent: Friday, June 07, 2002 4:55 PM
Subject: [Insight-users] Announcement: ITK Public Meeting
>
> ANNOUNCING
>
> ITK: The Insight Segmentation and Registration Toolkit Public Presentation
> When: Thursday, June 13, 2002 2:00-5:00pm
> Where: Auditorium 250, Second Floor Tosteson Medical Education Center
> Harvard Medical School, Boston, MA, USA
> Info: www.itk.org
>
> The Insight Segmentation and Registration Toolkit (ITK) is an open source
> software system supporting the Visible Human Project. ITK was developed by
> six principal firms (three academic-UNC,U. of Pennsylvania, U. of Utah;
and
> three commercial-GE Research, Insightful, Kitware) and funded through The
> National Library of Medicine at NIH. ITK employs a variety of leading edge
> segmentation and registration algorithms in 2D, 3D, and more dimensions,
and
> is being developed using advanced, distributed software processes. This
> presentation marks the first formal introduction of ITK to the public. We
> will provide a brief history of and motivation for the software, a survey
of
> available registration and segmentation algorithms, live demonstrations,
and
> an overview of the development environment. We will also discuss some
early
> reviews from the ITK community and plans for the future. Developers,
> Principal Investigators, and NLM project officers will be available for
> questions after the presentation.
>
>
> Thursday June 13, 2002
> Schedule of Presentations
> =========================
>
> 2:00 - 3:00 An Introduction to ITK
> + Introduction
> Goals, objectives, team, relationship to VHP (Visible Human
> Project)
> Validation Effort
>
> + Overview
> Architecture, major design decisions, major subsystems
> Use of templates/generic programming
> Image representation
> Mesh Representation
>
> + Registration Algorithms & Framework
> Various algorithms and results
>
> + Segmentation Algorithms & Framework
> Various algorithms and results
>
> + Future
> Upcoming releases, etc.
> Annoucement of the Beta2.
>
> 3:00 - 4:20 Demonstrations
> + Live demos
>
> 4:00 - 5:00 Developing with ITK
> + Development Environment
>
> + Architectural Features
> Memory management (smart pointers, object factories, etc.)
> Events (command/observer)
> Image Processing (Image, iterators, etc.)
> Mesh
> Data flow
> Image IO
>
> 5:00 - Informal Meetings
>
> Directions
>
> The address is:
>
> Tosteson Medical Medical Education Center (T-MEC)
> 260 Longwood Ave
> Boston, MA 02115
>
> General map and direction information about Harvard Medical School can
> be found at http://www.hms.harvard.edu/about/mapsdir.html .
>
> T-MEC is located in Harvard Medical School Quadrangle
> (http://www.hms.harvard.edu/about/maps/quadmap.html) at the intersection
> of Longwood Ave and Ave Louis Pasteur, at Longwood Medical Area
> (http://www.hms.harvard.edu/about/maps/lmamap.html).
>
> By MBTA subway or bus or by car:
>
> Subway Green Line (E line Longwood Medical Area stop or D line Longwood
> stop), bus routes 47, CT2 and 8A will all take you there. For more
> information on public transportation, and for DRIVING DIRECTIONS, please
> check http://www.hms.harvard.edu/about/direction.html .
>
> By M2 shuttle
>
> M2 shuttle bus runs between Harvard Yard (Quincy Street outside Lamont
> Library Gate) and Longwood Medical Area (T-MEC is right across the street
> from shuttle stop). Harvard GSAS students can take M2 for free. The
> shuttle also makes stops on the way, including one at MBTA bus stop of
> MIT's main entrance. The shuttle leaving at 7pm from Harvard Yard will
> take you there on time. For more information, please check
> http://www.masco.org/transit/ptsM2.htm .
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
From luis.ibanez@kitware.com Sat Jun 8 22:24:10 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Sat, 08 Jun 2002 17:24:10 -0400
Subject: [Insight-users] Re: Regarding Examples
References: <002601c20ed3$8ca69190$01000001@macinfo.net>
Message-ID: <3D0275FA.1060506@kitware.com>
Hi cspl,
Did you make a "cvs update" ?
or just downloaded the examples directories ?
From the error message that you posted, it looks
like you have two unsynchronized versions of
the ImageIOBase and RawImageIO classes.
RawImageIO derives from ImageIOBase
ImageIOBase has a pure virtual method "Write()",
that has to be overloaded by any writer. The signature
of "Write()" in your version of RawImageIO doesn't match
the signature of "Write()" on your version of ImageIOBase.
You have:
void ImageIOBase::Write( void * );
void RawImageIO::Write( const void * );
We have put a lot of effort on making ITK const-correct,
the version that you have of ImageIOBase should be
relatively old.
All the ImageIO objects implementing the reading and
writing of specific file formats derive from ImageIOBase
and therefore have to implement the "Write()" method.
(among others...)
http://www.itk.org/Insight/Doxygen/html/classitk_1_1ImageIOBase.html
Please make sure that you have a consistent checkout of ITK.
Let us know if you still find any problems after updating
your cvs checkout.
Thanks
Luis
PS: If you would like to have some guidelines about how
to use cvs we will be happy to point you to some URLs.
=================================================================
cspl wrote:
> Dear Mr.Luis,
>
>
>
> I have downloaded ur examples and tried to make it run. I have compiled
> the total project once again and got new lib files after downloading
> the newversion of RawImageIO.h and RawImageIO.txx.
>
> But I am getting the following errors.
>
>
> :\ITK\Insight\Code\IO\itkRawImageIO.h(56) : error C2259:
> 'RawImageIO' : cannot instantiate abstract class due to
> following members:
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : while compiling
> class-template member function 'class itk::SmartPointer itk::RawImageIO > __cdecl itk::RawImageIO char,3>::New(void)'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : warning C4259: 'void
> __thiscall itk::ImageIOBase::Write(void *)' : pure virtual function was
> not defined
> F:\ITK\Insight\Code\IO\itkImageIOBase.h(201) : see declaration
> of 'Write'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : while compiling
> class-template member function 'class itk::SmartPointer itk::RawImageIO > __cdecl itk::RawImageIO char,3>::New(void)'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : error C2259:
> 'RawImageIO' : cannot instantiate abstract class due to
> following members:
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : while compiling
> class-template member function 'class itk::SmartPointer itk::RawImageIO > __cdecl itk::RawImageIO char,3>::New(void)'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : warning C4259: 'void
> __thiscall itk::ImageIOBase::Write(void *)' : pure virtual function was
> not defined
> F:\ITK\Insight\Code\IO\itkImageIOBase.h(201) : see declaration
> of 'Write'
> F:\ITK\Insight\Code\IO\itkRawImageIO.h(56) : while compiling
> class-template member function 'class itk::SmartPointer itk::RawImageIO > __cdecl itk::RawImageIO char,3>::New(void)'
> Error executing cl.exe.
>
>
>
> ALL_BUILD - 2 error(s), 2 warning(s)
>
>
>
>
>
>
> When I used the old version of lib files and rawimageio.h , I got the
> exception.This is as follows.
>
>
>
> Exception caught during Raw file reading
> itk::ExceptionObject (0012F1AC)
> Location: "Unknown"
> File: F:\ITK\Insight\Code\IO\itkRawImageIO.txx
> Line: 117
> Description: itk::ERROR: RawImageIO(00301640): Could not open file:
> c:\diocmfile
> s\download\xyz\1.raw
>
>
>
> I will try second example which is using FLTK. Actually I have 2D Image
> raw files.(i.e.from CT scanner Images) . I want to read and show it's
> o/p in vtk.
>
>
>
> Please help me in getting the output.
>
>
>
>
>
> Thanking you,
> Reagards,
> Ramakrishna
>
From will.schroeder@kitware.com Sun Jun 9 00:18:17 2002
From: will.schroeder@kitware.com (Will Schroeder)
Date: Sat, 08 Jun 2002 19:18:17 -0400
Subject: [Insight-users] Announcement: ITK Public Meeting
In-Reply-To: <007301c20f32$4e51cb80$0201a8c0@nycap.rr.com>
References: <5.0.2.1.0.20020607165222.02795780@pop.nycap.rr.com>
Message-ID: <5.0.2.1.0.20020608191706.036e1360@pop.nycap.rr.com>
Hi Asad-
No fees, just the cost of getting there. I have no idea if it will be
crowded. I'll vouch for you if you come and make sure that you get a seat :-)
Will
At 05:20 PM 6/8/2002 -0400, Asad A. Abu-Tarif wrote:
>Hi,
>Is there any registration or fees? I might be able to go but
>don't want to drive to Boston and not be able to get in :-)
>
>Thanks,
>Asad
>***************************************************************************
>* Asad A. Abu-Tarif
>* Computer Engineering.
>* PhD Candidate, Rensselaer Polytechnic Institute (RPI).
>* Web-site: http://asad.ods.org/Professional/
>* Registration Toolkit: http://asad.ods.org/RegMagicTKDoc/
>* tarifa@rpi.edu
>***************************************************************************
>
>----- Original Message -----
>From: "Will Schroeder"
>To:
>Sent: Friday, June 07, 2002 4:55 PM
>Subject: [Insight-users] Announcement: ITK Public Meeting
>
>
> >
> > ANNOUNCING
> >
> > ITK: The Insight Segmentation and Registration Toolkit Public Presentation
> > When: Thursday, June 13, 2002 2:00-5:00pm
> > Where: Auditorium 250, Second Floor Tosteson Medical Education Center
> > Harvard Medical School, Boston, MA, USA
> > Info: www.itk.org
> >
> > The Insight Segmentation and Registration Toolkit (ITK) is an open source
> > software system supporting the Visible Human Project. ITK was developed by
> > six principal firms (three academic-UNC,U. of Pennsylvania, U. of Utah;
>and
> > three commercial-GE Research, Insightful, Kitware) and funded through The
> > National Library of Medicine at NIH. ITK employs a variety of leading edge
> > segmentation and registration algorithms in 2D, 3D, and more dimensions,
>and
> > is being developed using advanced, distributed software processes. This
> > presentation marks the first formal introduction of ITK to the public. We
> > will provide a brief history of and motivation for the software, a survey
>of
> > available registration and segmentation algorithms, live demonstrations,
>and
> > an overview of the development environment. We will also discuss some
>early
> > reviews from the ITK community and plans for the future. Developers,
> > Principal Investigators, and NLM project officers will be available for
> > questions after the presentation.
> >
> >
> > Thursday June 13, 2002
> > Schedule of Presentations
> > =========================
> >
> > 2:00 - 3:00 An Introduction to ITK
> > + Introduction
> > Goals, objectives, team, relationship to VHP (Visible Human
> > Project)
> > Validation Effort
> >
> > + Overview
> > Architecture, major design decisions, major subsystems
> > Use of templates/generic programming
> > Image representation
> > Mesh Representation
> >
> > + Registration Algorithms & Framework
> > Various algorithms and results
> >
> > + Segmentation Algorithms & Framework
> > Various algorithms and results
> >
> > + Future
> > Upcoming releases, etc.
> > Annoucement of the Beta2.
> >
> > 3:00 - 4:20 Demonstrations
> > + Live demos
> >
> > 4:00 - 5:00 Developing with ITK
> > + Development Environment
> >
> > + Architectural Features
> > Memory management (smart pointers, object factories, etc.)
> > Events (command/observer)
> > Image Processing (Image, iterators, etc.)
> > Mesh
> > Data flow
> > Image IO
> >
> > 5:00 - Informal Meetings
> >
> > Directions
> >
> > The address is:
> >
> > Tosteson Medical Medical Education Center (T-MEC)
> > 260 Longwood Ave
> > Boston, MA 02115
> >
> > General map and direction information about Harvard Medical School can
> > be found at http://www.hms.harvard.edu/about/mapsdir.html .
> >
> > T-MEC is located in Harvard Medical School Quadrangle
> > (http://www.hms.harvard.edu/about/maps/quadmap.html) at the intersection
> > of Longwood Ave and Ave Louis Pasteur, at Longwood Medical Area
> > (http://www.hms.harvard.edu/about/maps/lmamap.html).
> >
> > By MBTA subway or bus or by car:
> >
> > Subway Green Line (E line Longwood Medical Area stop or D line Longwood
> > stop), bus routes 47, CT2 and 8A will all take you there. For more
> > information on public transportation, and for DRIVING DIRECTIONS, please
> > check http://www.hms.harvard.edu/about/direction.html .
> >
> > By M2 shuttle
> >
> > M2 shuttle bus runs between Harvard Yard (Quincy Street outside Lamont
> > Library Gate) and Longwood Medical Area (T-MEC is right across the street
> > from shuttle stop). Harvard GSAS students can take M2 for free. The
> > shuttle also makes stops on the way, including one at MBTA bus stop of
> > MIT's main entrance. The shuttle leaving at 7pm from Harvard Yard will
> > take you there on time. For more information, please check
> > http://www.masco.org/transit/ptsM2.htm .
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-users
> >
From wlorens1@nycap.rr.com Sun Jun 9 13:24:25 2002
From: wlorens1@nycap.rr.com (Bill Lorensen)
Date: Sun, 09 Jun 2002 08:24:25 -0400
Subject: [Insight-users] Re: [vtkusers] itk Seminar in Boston,
Thursday, June 13
In-Reply-To:
References: <5.1.0.14.2.20020607163508.025fb5e0@pop.nycap.rr.com>
Message-ID: <5.1.0.14.2.20020609082335.04188820@pop.nycap.rr.com>
None at MICCAI this year. However, there will be a tutorial at IEEE Visualization 2002.
Bill
At 11:14 AM 6/8/02 +0200, Rasmus Reinhold Paulsen wrote:
>Hi Bill,
>
>Sounds very good. Hard to go to Boston for a single event though ;)
>
>Do you know if there will be any ITK related events at MICCAI 2002 in
>Tokyo, Japan ?
>
>Regards,
>Rasmus
>
>
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
From luis.ibanez@kitware.com Mon Jun 10 17:19:57 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Mon, 10 Jun 2002 12:19:57 -0400
Subject: [Insight-users] Re: problem with the new version
Message-ID: <3D04D1AD.7050901@kitware.com>
Hi cspl,
Looking closely at your error messages, you can notice
that you are mixing two directories of ITK code:
1) F:\10.06.2002ITK
2) F:\ITK
You should be doing an incorrect setup that is mixing
the header files of one version with the other.
Note that once you run CMake, you should *not* modifiy the
VC++ project settings for any reason. Any need for doing
so, will only indicate that the configuration was done
incorrectly, and in that case you should correct the problem
by using CMake. If you are doing something like adding
include directories in VC++ with the Build/Custom options,
this will certainly confuse the build please don't use any
of these options.
Those things were only necesary in the "Dark Ages" when
CMake didn't exist :-)
Please do the following:
1) erase all the previous directories where you
have put ITK source code and binary code
2) do a fresh checkout using cvs
3) restart the configuration.
4) Make sure that you DONT have any ITK directories
in "Tools->Options->Directories" in VC++
Please let us know if you find any problem.
Thanks
Luis
===================================================
cspl wrote:
I have downloaded the new version of itk through wincvs.But I am getting
somany errors while building the project to get lib files. The errors
are as follows.
I could compile the Basic filters, common, vxl and FEM and get the
corresponding lib files.
Could not compile Numeric and IO source code..
Please help us
compiling...
itkAmoebaOptimizer.cxx
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(54) : error C2976: 'Array'
: too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(62) : error C2976: 'Array'
: too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(96) : error C2079:
'm_InitialPosition' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(97) : error C2079:
'm_CurrentPosition' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(98) : error C2079:
'm_Scales' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCostFunction.h(51) : error C2976:
'Array' : too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkSingleValuedCostFunction.h(54) : error
C2976: 'Array' : too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkAmoebaOptimizer.cxx(73) : error C2079:
'scales' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkAmoebaOptimizer.cxx(74) : error C2228:
left of '.Fill' must have class/struct/union type
F:\10.06.2002ITK\Code\Numerics\itkAmoebaOptimizer.cxx(75) : fatal error
C1903: unable to recover from previous error(s); stopping compilation
itkCacheableScalarFunction.cxx
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.h(66) : error
C2976: 'Array' : too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.h(114) : error
C2079: 'm_CacheTable' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.cxx(37) :
error C2440: 'type cast' : cannot convert from 'long' to 'class
itk::Array'
Source or target has incomplete type
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.cxx(47) :
error C2109: subscript requires array or pointer type
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.cxx(47) :
error C2106: '=' : left operand must be l-value
itkCompositeValleyFunction.cxx
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.h(66) : error
C2976: 'Array' : too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkCacheableScalarFunction.h(114) : error
C2079: 'm_CacheTable' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(24) :
error C2027: use of undefined type 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(24) :
error C2228: left of '.size' must have class/struct/union type
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(26) :
error C2027: use of undefined type 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(26) :
error C2228: left of '.size' must have class/struct/union type
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(44) :
error C2676: binary '[' : 'const class itk::Array' does not
define this operator or a conversion to a type acceptable to the
predefined operator
F:\10.06.2002ITK\Code\Numerics\itkCompositeValleyFunction.cxx(44) :
error C2676: binary '[' : 'const class itk::Array' does not
define this operator or a conversion to a type acceptable to the
predefined operator
itkConjugateGradientOptimizer.cxx
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(54) : error C2976: 'Array'
: too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(62) : error C2976: 'Array'
: too few template arguments
F:\ITK\Insight\Code\Common\itkArray.h(435) : see declaration of
'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(96) : error C2079:
'm_InitialPosition' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(97) : error C2079:
'm_CurrentPosition' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkOptimizer.h(98) : error C2079:
'm_Scales' uses undefined class 'Array'
F:\10.06.2002ITK\Code\Numerics\itkCostFunction.h(51) : error C2976:
'Array' : too few template arguments
F:\ITK\Insight\Code
From cates@sci.utah.edu Mon Jun 10 21:35:23 2002
From: cates@sci.utah.edu (Joshua Cates)
Date: Mon, 10 Jun 2002 14:35:23 -0600 (MDT)
Subject: [Insight-users] Questions about the fast marching and level set
filters
In-Reply-To:
Message-ID:
Hi Luca,
Yes the level set is calculated to subvoxel accuracy as in Whitaker's
implementation. The implementation in Insight is based on that described
in "A Level-Set Approach to 3D Reconstruction from Range Data" Whitaker,
International Journal of Computer Vision 29(3), 203-231, 1998.
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 Fri, 7 Jun 2002, Luca Antiga wrote:
> Dear users,
> dealing with sparse field and narrow band level sets. I know that sparse
> field method (at least in the implementation given by Whitaker in his
> library) ensures sub-voxel accuracy even with first order upwinding, by
> estimating level set position according to \phi and \nabla(\phi) and
> evaluating there all the quantities involved with evolution. Is this feature
> included in narrow band version?
> Thanks
>
> Luca
>
>
> >From: Bjorn Hanch Sollie
> >To: insight-users , Joshua Cates
> >
> >Subject: Re: [Insight-users] Questions about the fast marching and level
> >set filters
> >Date: Thu, 6 Jun 2002 19:29:35 +0200 (CEST)
> >
> >On Tue, 4 Jun 2002, Joshua Cates wrote:
> >
> > > You can use the SparseFieldLevelSetImageFilter for applications that
> >only
> > > care about a single level set (and you will almost certainly get some
> > > speed advantage by doing so). I
> >
> >Thanks for answering some questions. I've been looking at the
> >SparseFieldLevelSet filter examples, and as far as I can see, it
> >requires the potential map (or target image) to have positive values
> >on the inside of the region and negative values on the outside. This
> >is in contrast to the potential map for the ShapeDetectionLevelSet
> >filter which wants values between 0 and 1. My queston then is: What
> >is the best way of making a potential map for the SparseFieldLevelSet
> >filter from an edge image? Just do a simple positive/negative
> >threshold on some grey value? Are there any recommended (better?)
> >ways?
> >
> >-Bjorn
> >--
> >The History of the Universe
> >Chapter 1: Bang! Chapter 2: Sss... Chapter 3: Crunch!
> >The End
> >
> >_______________________________________________
> >Insight-users mailing list
> >Insight-users@public.kitware.com
> >http://public.kitware.com/mailman/listinfo/insight-users
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
From galicjan@yahoo.com Tue Jun 11 16:42:45 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Tue, 11 Jun 2002 08:42:45 -0700 (PDT)
Subject: [Insight-users] Roadblocks of using ITK in practice
Message-ID: <20020611154245.51611.qmail@web20907.mail.yahoo.com>
ITK is has a very good potential of being a great image analysis package.
* Multi-platform support
* Large number of already available imaging algorithms
* Parametric algorithms and data representation
* Pipeline architecture
* Potential for streaming and multi-threading support
* Last but not least, great community of users and developers
However, in the current stage, ITK is very difficult to be used for many
practical application. There are number of issues a developer stumbles
upon. To keep discussion focused, I want to single out one that is the
most critical: difficulty, or stating it more directly, practical
inability to handle image types at runtime.
Many data representation objects in ITK, an image in particular, are
parametric (template classes) without a related non-parametric base class.
Consider image representation, purely parametric representation means that
exact image type has to be known at compile time. Fixing image type at
compile time drastically limits application's usability to handle images
with different pixel types (or dimension). In medical application, forcing
type conversion, in praticulat automatic type conversion, is undesirable.
Conversions that involve shifting and scaling distort data. Converting to
a 'larger' type to avoid scaling, e.g. 'short' to 'int' increases memory
requirement that is unacceptable for processing of large images. ITK is
missing a base non-parametric image class. This class should allow
querying information about an image like its pixel type, dimension, size,
etc. This information could be used to execute a version of a pipeline
that matches image typew without need of conversion. The solution to this
problem is relatively simple: add a base non-parametric image class for
ImageBase<> (or even better make ImageBase non-parametric by dropping
dimension as a template parameter). I do not suggest removing templates
all together, there are important for creation of generic and robust code.
I do suggest extending ITK architecture by adding non-parametric base
classes for existing data representation classes. This extension would
facilitate run-time type handling that enable writing code that can
directly handle various image types (without) need for conversion.
I would strongly advocate addition of non-parametric base classes to ITK.
This would help in creation of practical medical image analysis
applications. It would also help to resolve some of other ITKs issues like
wrapping in other languages or creation of more robust image I/O module.
Jarek
P.S.: Note that, in a limited sense, writing run-time type independent
code using ITK is possible. It is possible only in the case when input to
a pipeline is an image file. One can query image pixel type and dimension
before declaring and initializing processing pipeline. Here is a sample
code, for simplicity image dimension is ignored:
MetaImageIO::Pointer io = MetaImageIO::New();
io->SetFileName(inputFileName);
io->ReadImageInformation();
if(io->GetPixelType() == std::typeid(unsigned char) ) {
MyPipeline myPipeline;
myPipeline.SetFileName(inputFileName);
myPipeline.Update();
}
else if(io->GetPixelType() == std::typeid(unsigned short) ) {
MyPipeline myPipeline;
myPipeline.SetFileName(inputFileName);
myPipeline.Update();
}
... // and so on
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From lorensen@crd.ge.com Tue Jun 11 16:48:05 2002
From: lorensen@crd.ge.com (Lorensen, William E (Research))
Date: Tue, 11 Jun 2002 11:48:05 -0400
Subject: [Insight-users] Roadblocks of using ITK in practice
Message-ID:
Jarek,
Thanks for your comments. They are timely since our development team is meeting this week to assess
progress and address issues. As a team we have struggled with this run-time issue from the start. It
will be a topic of discussion this week.
Bill
-----Original Message-----
From: Jarek Sacha [mailto:galicjan@yahoo.com]
Sent: Tuesday, June 11, 2002 11:43 AM
To: Insight-users
Subject: [Insight-users] Roadblocks of using ITK in practice
ITK is has a very good potential of being a great image analysis package.
* Multi-platform support
* Large number of already available imaging algorithms
* Parametric algorithms and data representation
* Pipeline architecture
* Potential for streaming and multi-threading support
* Last but not least, great community of users and developers
However, in the current stage, ITK is very difficult to be used for many
practical application. There are number of issues a developer stumbles
upon. To keep discussion focused, I want to single out one that is the
most critical: difficulty, or stating it more directly, practical
inability to handle image types at runtime.
Many data representation objects in ITK, an image in particular, are
parametric (template classes) without a related non-parametric base class.
Consider image representation, purely parametric representation means that
exact image type has to be known at compile time. Fixing image type at
compile time drastically limits application's usability to handle images
with different pixel types (or dimension). In medical application, forcing
type conversion, in praticulat automatic type conversion, is undesirable.
Conversions that involve shifting and scaling distort data. Converting to
a 'larger' type to avoid scaling, e.g. 'short' to 'int' increases memory
requirement that is unacceptable for processing of large images. ITK is
missing a base non-parametric image class. This class should allow
querying information about an image like its pixel type, dimension, size,
etc. This information could be used to execute a version of a pipeline
that matches image typew without need of conversion. The solution to this
problem is relatively simple: add a base non-parametric image class for
ImageBase<> (or even better make ImageBase non-parametric by dropping
dimension as a template parameter). I do not suggest removing templates
all together, there are important for creation of generic and robust code.
I do suggest extending ITK architecture by adding non-parametric base
classes for existing data representation classes. This extension would
facilitate run-time type handling that enable writing code that can
directly handle various image types (without) need for conversion.
I would strongly advocate addition of non-parametric base classes to ITK.
This would help in creation of practical medical image analysis
applications. It would also help to resolve some of other ITKs issues like
wrapping in other languages or creation of more robust image I/O module.
Jarek
P.S.: Note that, in a limited sense, writing run-time type independent
code using ITK is possible. It is possible only in the case when input to
a pipeline is an image file. One can query image pixel type and dimension
before declaring and initializing processing pipeline. Here is a sample
code, for simplicity image dimension is ignored:
MetaImageIO::Pointer io = MetaImageIO::New();
io->SetFileName(inputFileName);
io->ReadImageInformation();
if(io->GetPixelType() == std::typeid(unsigned char) ) {
MyPipeline myPipeline;
myPipeline.SetFileName(inputFileName);
myPipeline.Update();
}
else if(io->GetPixelType() == std::typeid(unsigned short) ) {
MyPipeline myPipeline;
myPipeline.SetFileName(inputFileName);
myPipeline.Update();
}
... // and so on
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
_______________________________________________
Insight-users mailing list
Insight-users@public.kitware.com
http://public.kitware.com/mailman/listinfo/insight-users
From will.schroeder@kitware.com Wed Jun 12 11:51:20 2002
From: will.schroeder@kitware.com (Will Schroeder)
Date: Wed, 12 Jun 2002 06:51:20 -0400
Subject: [Insight-users] Roadblocks of using ITK in practice
In-Reply-To: <20020611154245.51611.qmail@web20907.mail.yahoo.com>
Message-ID: <5.0.2.1.0.20020612064630.0278a580@pop.nycap.rr.com>
Hi Jarek-
Thanks for the feedback, as Bill says the timing is good. I have a question
about your proposal:
At 08:42 AM 6/11/2002 -0700, Jarek Sacha wrote:
>. ITK is
>missing a base non-parametric image class. This class should allow
>querying information about an image like its pixel type, dimension, size,
>etc. This information could be used to execute a version of a pipeline
>that matches image typew without need of conversion. The solution to this
>problem is relatively simple: add a base non-parametric image class for
>ImageBase<> (or even better make ImageBase non-parametric by dropping
>dimension as a template parameter). I
>I would strongly advocate addition of non-parametric base classes to ITK.
>This would help in creation of practical medical image analysis
>applications. It would also help to resolve some of other ITKs issues like
>wrapping in other languages or creation of more robust image I/O module.
If a non-parametric image class is added, how do you see modifying the
templated filters to process such a base class? I have some ideas but
rather than taint yours, I'd like to hear what you have to say first.
Thanks,
Will
From ander833@student.liu.se Wed Jun 12 16:16:21 2002
From: ander833@student.liu.se (Andreas Eriksson)
Date: Wed, 12 Jun 2002 17:16:21 +0200
Subject: [Insight-users] vnl_quaternion::rotation_matrix_4() declared but not defined?
Message-ID: <3144235510.3551031442@student.liu.se>
vnl_matrix_fixed vnl_quaternion::rotation_matrix_4 () const seems to be declared but not defined, or am I wrong??
From lferrari@cci.fmrp.usp.br Wed Jun 12 19:27:38 2002
From: lferrari@cci.fmrp.usp.br (Lucas Ferrari de Oliveira)
Date: Wed, 12 Jun 2002 15:27:38 -0300
Subject: [Insight-users] Problems in instalation
Message-ID: <3D07929A.6050909@cci.fmrp.usp.br>
Hi All,
I am trying install Itk in my Debian GNU/Linux. But, appear the error:
/home/lferrari/aplicativos/Insight/Auxiliary/FltkImageViewer/fltkClippingPlane3DDrawer.cxx:
In method `void fltk::ClippingPlane3DDrawer::glDraw() const':
/home/lferrari/aplicativos/Insight/Auxiliary/FltkImageViewer/fltkClippingPlane3DDrawer.cxx:154:
conversion from `const unsigned int' to `enum GLenum'
/home/lferrari/aplicativos/Insight/Auxiliary/FltkImageViewer/fltkClippingPlane3DDrawer.cxx:155:
conversion from `const unsigned int' to `enum GLenum'
/home/lferrari/aplicativos/Insight/Auxiliary/FltkImageViewer/fltkClippingPlane3DDrawer.cxx:159:
conversion from `const unsigned int' to `enum GLenum'
make[5]: *** [fltkClippingPlane3DDrawer.o] Error 1
make[4]: *** [default_target] Error 2
make[3]: *** [default_target_FltkImageViewer] Error 2
make[2]: *** [default_target] Error 2
make[1]: *** [default_target_Auxiliary] Error 2
make: *** [default_target] Error 2
What I have to do??
Thanks regards,
--
|===================================================|
| (*< , Lucas Ferrari de Oliveira |
| //\c[] Doutorando USP |
| V_/_ Ribeirao Preto - SP |
| Seja Livre, e-mails: lferrari@cci.fmrp.usp.br |
| use GNU/Linux! lferrari@quadrim.com.br |
|===================================================|
From galicjan@yahoo.com Wed Jun 12 20:41:14 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Wed, 12 Jun 2002 12:41:14 -0700 (PDT)
Subject: [Insight-users] Roadblocks of using ITK in practice
In-Reply-To: <5.0.2.1.0.20020612064630.0278a580@pop.nycap.rr.com>
Message-ID: <20020612194114.23191.qmail@web20909.mail.yahoo.com>
--- Will Schroeder wrote:
> If a non-parametric image class is added, how do you see modifying the
> templated filters to process such a base class? I have some ideas but
> rather than taint yours, I'd like to hear what you have to say first.
Will:
I would see it as a two phase change. Initially only non-parametric
classes for data representation objects are added. This already would help
solve some issues. In the second phase data processing API is extended to
actually support non-parametric data representation objects.
The parametric filters should not need to handle non-parametric images.
Rather there should be a non-parametric "selector" that would instantiate
proper parametric filter based on information queried from a
non-parametric image base class. How this is going to be actually done is
a very good point for discussion.
One possibility is to add a non-parametric base for each parametric
filter. This class will act as a filter handle and as a dispatch for
instantiating proper parametric filter. The point here would be to make
life easy for the user. A sample program using this approach could look
something like this:
// Setup image file reader
ImageFileReaderS::Pointer reader = ImageFileReaderS::New();
reader->SetImageIO(MyImageIO::New());
reader->SetFileName(inputFileName);
// Setup median filter
MedianImageFilterS::Pointer filter = MedianImageFilterS::New();
filter->SetInput(reader->GetOutput());
// Setup image file writer
ImageFileWriterS::Pointer writer = ImageFileWriterS::New();
writer->SetImageIO(MyImageIO::New());
writer->SetFileName(outputFileName);
writer->SetInput(filter->GetOutput());
// Execute pipeline
writer->Write();
Selectors would support some known set of data types. That is, only a
fixed number of parametric filters could be instantiated by a selector
since each type must be known at compile time. To aid a library developer
a right set of preprocessor macros could simplify writing instantiation
code for selector classes. Possibly, filter selector classes could be
automatically generated from filter templates.
>From the library development and maintenance point of view, creating a
"selector" for each filter may not be most desirable solution. A different
approach could be to provide a mechanism for assembling parametric
pipeline fragments, say using a parametric StaticPipelineChunk<> class and
then generating a "selector" for each such chunk. A StaticPipelineChunk
correspons to pipeline fragments where image type could not randomly
change. As before, the selector would handle instantiating
StaticPipelineChunk with proper data representation types at runtime. This
could be a solution simpler to implement and maintain but may be more
difficult to handle on the user side.
In general, there should always be a possibility of directly using
parametric filter. With same care parametric and non parametric code could
be mixed.
There may be a need to modify existing parametric filters and the pipeline
in general. For instance, many filters take output image type as a
parameter. In non-parametric pipeline, as in example above, the output
image type is decided by the filter based on the input image type and type
of processing. Another example, efficient streaming support may require
addition of messages that would indicate beginning (before first piece is
in) and end of streaming (after last piece is out) to prevent unneeded
re-instantiations of template-filters.
Just some thoughts, hope that you will find them helpful.
I wonder what you were thinking about.
Jarek
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From Sebastian Fiorentini Thu Jun 13 03:03:10 2002
From: Sebastian Fiorentini (Sebastian Fiorentini)
Date: Wed, 12 Jun 2002 23:03:10 -0300
Subject: [Insight-users] Deformable3DMesh
Message-ID: <371998744.20020612230310@yahoo.com.ar>
Hi..
Can anyone give me a piece of code, or an example that uses
GradientVectorFlow and Deformable3DMesh to do segmentation??
Thanks in advance...
Saludos...Sebas..
sebasfiorent@yahoo.com.ar
From Vincent.Daanen@imag.fr Thu Jun 13 11:15:50 2002
From: Vincent.Daanen@imag.fr (Vincent Daanen)
Date: Thu, 13 Jun 2002 12:15:50 +0200
Subject: [Insight-users] Problem compiling cvs version of ITK on Win2000/VC6.0
Message-ID: <3D0870D6.5D9D26D9@mail-timc.imag.fr>
Hi boys,
I downloaded CVS release of ITK.
but when compiling, compiler hangs with this error :
"
E:\Outils_Dev\Insight\Code\BasicFilters\itkDanielssonDistanceMapImageFilter.txx(287)
: fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494)
"
does anybody know what to do ?
Vince
From bill.hoffman@kitware.com Thu Jun 13 14:24:40 2002
From: bill.hoffman@kitware.com (Bill Hoffman)
Date: Thu, 13 Jun 2002 09:24:40 -0400
Subject: [Insight-users] Problem compiling cvs version of ITK on
Win2000/VC6.0
In-Reply-To: <3D0870D6.5D9D26D9@mail-timc.imag.fr>
Message-ID: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com>
You will need service pack 5 for visual studio.
-Bill
At 12:15 PM 6/13/2002 +0200, Vincent Daanen wrote:
>Hi boys,
>
>I downloaded CVS release of ITK.
>
>but when compiling, compiler hangs with this error :
>"
>E:\Outils_Dev\Insight\Code\BasicFilters\itkDanielssonDistanceMapImageFilter.txx(287)
>: fatal error C1001: INTERNAL COMPILER ERROR
> (compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494)
>"
>
>does anybody know what to do ?
>
> Vince
>
>
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
From Vincent.Daanen@imag.fr Fri Jun 14 13:59:16 2002
From: Vincent.Daanen@imag.fr (Vincent Daanen)
Date: Fri, 14 Jun 2002 14:59:16 +0200
Subject: [Insight-users] Problem compiling cvs version of ITK onWin2000/VC6.0
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com>
Message-ID: <3D09E8A4.368398E@mail-timc.imag.fr>
OK I get service pack 5 for visual studio.
More files are now compiled but again, compilation process breaks with
these errors :
Compiling...
vtkITKConfidenceConnectedImageFilter.cxx
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
error C2039:
'seekdir' : is not a member of 'ios'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
: see
declaration of 'ios'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
error C2061: syntax
error : identifier 'seekdir'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
error C2039:
'openmode' : is not a member of 'ios'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
: see
declaration of 'ios'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
error C2061: syntax
error : identifier 'openmode'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(91) :
error C2629:
unexpected 'class std::ostrstream ('
Is this related to the ITK_USE_SYSTEM_STDLIB flag ??
Should I set it to On or OFF ??
Thanks
Vince
From Vincent.Daanen@imag.fr Fri Jun 14 14:31:35 2002
From: Vincent.Daanen@imag.fr (Vincent Daanen)
Date: Fri, 14 Jun 2002 15:31:35 +0200
Subject: [Insight-users] Problem compiling cvs version of ITKonWin2000/VC6.0
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com> <5.0.2.1.0.20020614091658.043a7220@pop.nycap.rr.com>
Message-ID: <3D09F037.A951026E@mail-timc.imag.fr>
Sorry for ce precedent email, I didn't pay attention that I was sending it to you and not to the
insight mailing list !
Bill Hoffman wrote:
> It looks like you are using VTK with ITK, VTK has to be compiled with VTK_USE_ANSI_STDLIB set on.
>
> -Bill
I recompiled VTK with the flag VTK_USE_ANSI_STDLIB set on.
While cmakesetup processing ITK, I do not use VTK !
Is this an error ??
From mmalat@irus.rri.ca Fri Jun 14 21:03:01 2002
From: mmalat@irus.rri.ca (Mathieu Malaterre)
Date: Fri, 14 Jun 2002 16:03:01 -0400
Subject: [Insight-users] ftlk + debian bug report
Message-ID: <3D0A4BF5.8A6F2CC6@irus.rri.ca>
This is a multi-part message in MIME format.
--------------449F282EDE8D7B606B90B142
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi all,
I had some problems making FltkImageViewer work with debian. I took a
look to the gl.h file that comes with the debian and it is the Mesa 3.1
Lib version.
There, they define GLenum as:
#ifdef CENTERLINE_CLPP
/* CenterLine C++ workaround: */
gl_enum;
typedef int GLenum;
#else
/* all other compilers */
GLenum;
#endif
whereas in fltkClippingPlane3DDrawer.cxx, for instance, they assume that
GLenum is 'unsigned int'
So I replaced by GLenum each time I had compilation problem.
HTH
Mathieu
--------------449F282EDE8D7B606B90B142
Content-Type: text/x-vcard; charset=us-ascii;
name="mmalat.vcf"
Content-Transfer-Encoding: 7bit
Content-Description: Card for Mathieu Malaterre
Content-Disposition: attachment;
filename="mmalat.vcf"
begin:vcard
n:Malaterre;Mathieu
tel;cell:519-697-5045
tel;work:519-685-8300 x34096
x-mozilla-html:FALSE
url:http://www.irus.rri.ca/~mmalat
org:The John P. Robarts Research Institute;Imaging Research Laboratories
adr:;;100 Perth Drive;London;Ontario;N6A 5K8;CANADA
version:2.1
email;internet:mmalat@irus.rri.ca
title:Visiting Graduate Student
x-mozilla-cpt:;0
fn:Malaterre, Mathieu
end:vcard
--------------449F282EDE8D7B606B90B142--
From luis.ibanez@kitware.com Sat Jun 15 17:42:08 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Sat, 15 Jun 2002 12:42:08 -0400
Subject: [Insight-users] Re: Help
References: <000d01c2147f$2fb9e7f0$5033b801@macinfo.net>
Message-ID: <3D0B6E60.9000203@kitware.com>
Hi cspl,
ITK applications can be build without the use of CMake,
It will just be harder to setup the project file
correctly
Can you please add a try/catch block to you OLE application
and printout the message of the caught exception ?
Something like:
try
{
laplacian->Update();
}
catch( itk::ExceptionObject & e )
{
std::cout << e << std::endl;
}
Then printed message could probably help to identify
the source of the problem.
Thanks
Luis
==============================================
cspl wrote:
> Dear Mr. Luis,
>
>
>
> I got the laplician filter output and I can able to read and write raw
> files.These functionalitie's are working fine when I am making projects
> with the help of CMake.I tried another application which is a OLE
> Automation
>
> server.In that application Laplician filter is not working .But Actually
> Iam not creating project with the help of CMake.I tried using dll also
> but Laplician filter ->Update() is giving exception in with out using
> CMake projects.Please give me suggestion to solve our problem.Is it work
> with only Cmake projects or it can be placed any where in the code in
> other applications.
>
>
>
>
>
> Thanking you,
>
> Regards,
>
> Ramakrishna
>
>
>
From lorensen@crd.ge.com Mon Jun 17 12:05:25 2002
From: lorensen@crd.ge.com (Lorensen, William E (Research))
Date: Mon, 17 Jun 2002 07:05:25 -0400
Subject: [Insight-users] Problem compiling cvs version of ITK onWin200
0/VC6.0
Message-ID:
VTK 4 may be OK. As Bill Hoffman mentioned earlier, VTK has to be compiled with VTK_USE_ANSI_STDLIB
set on.
-----Original Message-----
From: Vincent Daanen [mailto:Vincent.Daanen@imag.fr]
Sent: Monday, June 17, 2002 2:17 AM
To: Lorensen, William E (Research)
Subject: Re: [Insight-users] Problem compiling cvs version of ITK
onWin2000/VC6.0
VTK 4
it'is not the CVS version ! does-it mattter ?
Vince
"Lorensen, William E (Research)" wrote:
> No, the stdlib flag should be left as is.
>
> I suspect you are building against an old version of vtk. What version do you have?
>
> Bill
>
> -----Original Message-----
> From: Vincent Daanen [mailto:Vincent.Daanen@imag.fr]
> Sent: Friday, June 14, 2002 8:59 AM
> To: insight-users@public.kitware.com
> Subject: Re: [Insight-users] Problem compiling cvs version of ITK
> onWin2000/VC6.0
>
> OK I get service pack 5 for visual studio.
>
> More files are now compiled but again, compilation process breaks with
> these errors :
>
> Compiling...
> vtkITKConfidenceConnectedImageFilter.cxx
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
> error C2039:
> 'seekdir' : is not a member of 'ios'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
> : see
> declaration of 'ios'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
> error C2061: syntax
> error : identifier 'seekdir'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
> error C2039:
> 'openmode' : is not a member of 'ios'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
> : see
> declaration of 'ios'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
> error C2061: syntax
> error : identifier 'openmode'
> D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(91) :
> error C2629:
> unexpected 'class std::ostrstream ('
>
> Is this related to the ITK_USE_SYSTEM_STDLIB flag ??
> Should I set it to On or OFF ??
>
> Thanks
>
> Vince
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
--
Vincent Daanen,
Research Engineer- Post Doctoral Position
Laboratoire TIMC/IMAG Equipe GMCAO - Universite Joseph Fourier - CNRS UMR 5525
Faculte de Medecine - Domaine de la Merci - 38706 La Tronche cedex - France
Tel: +33 (0)4 76 54 95 23
Vincent.Daanen@imag.fr
From Vincent.Daanen@imag.fr Mon Jun 17 12:34:43 2002
From: Vincent.Daanen@imag.fr (Vincent Daanen)
Date: Mon, 17 Jun 2002 13:34:43 +0200
Subject: [Insight-users] Problem compiling cvs version of ITK onWin2000/VC6.0
References:
Message-ID: <3D0DC953.163DB83@mail-timc.imag.fr>
I just verified : VTK_USE_ANSI_STDLIB is on.
I just recompiled vtk and then try to recompile itk but still the sames errors !
Vince
"Lorensen, William E (Research)" wrote:
> VTK 4 may be OK. As Bill Hoffman mentioned earlier, VTK has to be compiled with VTK_USE_ANSI_STDLIB
> set on.
>
> -----Original Message-----
> From: Vincent Daanen [mailto:Vincent.Daanen@imag.fr]
> Sent: Monday, June 17, 2002 2:17 AM
> To: Lorensen, William E (Research)
> Subject: Re: [Insight-users] Problem compiling cvs version of ITK
> onWin2000/VC6.0
>
> VTK 4
> it'is not the CVS version ! does-it mattter ?
>
> Vince
>
> "Lorensen, William E (Research)" wrote:
>
> > No, the stdlib flag should be left as is.
> >
> > I suspect you are building against an old version of vtk. What version do you have?
> >
> > Bill
> >
> > -----Original Message-----
> > From: Vincent Daanen [mailto:Vincent.Daanen@imag.fr]
> > Sent: Friday, June 14, 2002 8:59 AM
> > To: insight-users@public.kitware.com
> > Subject: Re: [Insight-users] Problem compiling cvs version of ITK
> > onWin2000/VC6.0
> >
> > OK I get service pack 5 for visual studio.
> >
> > More files are now compiled but again, compilation process breaks with
> > these errors :
> >
> > Compiling...
> > vtkITKConfidenceConnectedImageFilter.cxx
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
> > error C2039:
> > 'seekdir' : is not a member of 'ios'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
> > : see
> > declaration of 'ios'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(51) :
> > error C2061: syntax
> > error : identifier 'seekdir'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
> > error C2039:
> > 'openmode' : is not a member of 'ios'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ios.h(106)
> > : see
> > declaration of 'ios'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(54) :
> > error C2061: syntax
> > error : identifier 'openmode'
> > D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\strstream(91) :
> > error C2629:
> > unexpected 'class std::ostrstream ('
> >
> > Is this related to the ITK_USE_SYSTEM_STDLIB flag ??
> > Should I set it to On or OFF ??
> >
> > Thanks
> >
> > Vince
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-users
>
> --
> Vincent Daanen,
> Research Engineer- Post Doctoral Position
> Laboratoire TIMC/IMAG Equipe GMCAO - Universite Joseph Fourier - CNRS UMR 5525
> Faculte de Medecine - Domaine de la Merci - 38706 La Tronche cedex - France
> Tel: +33 (0)4 76 54 95 23
> Vincent.Daanen@imag.fr
--
Vincent Daanen,
Research Engineer- Post Doctoral Position
Laboratoire TIMC/IMAG Equipe GMCAO - Université Joseph Fourier - CNRS UMR 5525
Faculté de Médecine - Domaine de la Merci - 38706 La Tronche cedex - France
Tel: +33 (0)4 76 54 95 23
Vincent.Daanen@imag.fr
From affable@hd2.dot.net.in Sat Jun 15 16:05:08 2002
From: affable@hd2.dot.net.in (cspl)
Date: Sat, 15 Jun 2002 20:35:08 +0530
Subject: [Insight-users] Help
Message-ID: <000d01c2147f$2fb9e7f0$5033b801@macinfo.net>
This is a multi-part message in MIME format.
------=_NextPart_000_000A_01C214AC.2396EFE0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Dear Mr. Luis,
I got the laplician filter output and I can able to read and write raw =
files.These functionalitie's are working fine when I am making projects =
with the help of CMake.I tried another application which is a OLE =
Automation=20
server.In that application Laplician filter is not working .But Actually =
Iam not creating project with the help of CMake.I tried using dll also =
but Laplician filter ->Update() is giving exception in with out using =
CMake projects.Please give me suggestion to solve our problem.Is it work =
with only Cmake projects or it can be placed any where in the code in =
other applications.
Thanking you,
Regards,
Ramakrishna
------=_NextPart_000_000A_01C214AC.2396EFE0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Dear Mr. Luis,
I got the laplician filter output and I =
can able to=20
read and write raw files.These functionalitie's are working fine when I =
am=20
making projects with the help of CMake.I tried another application which =
is a=20
OLE Automation
server.In that application Laplician =
filter is not=20
working .But Actually Iam not creating project with the help of =
CMake.I=20
tried using dll also but Laplician filter ->Update() is giving =
exception in=20
with out using CMake projects.Please give me suggestion to solve our =
problem.Is=20
it work with only Cmake projects or it can be placed any where in the =
code in=20
other applications.
Thanking you,
Regards,
Ramakrishna
------=_NextPart_000_000A_01C214AC.2396EFE0--
From galicjan@yahoo.com Mon Jun 17 14:43:00 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Mon, 17 Jun 2002 06:43:00 -0700 (PDT)
Subject: [Insight-users] Non-parametric base classes for data representation
Message-ID: <20020617134300.57251.qmail@web20908.mail.yahoo.com>
Will:
Did you had a chance to discuss non-parametric base classes for data
representation classes during the Boston meeting?
Jarek
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From synsk8boardingco@hotmail.com Tue Jun 18 01:15:45 2002
From: synsk8boardingco@hotmail.com (erin get ya hand off it =0)
Date: Tue, 18 Jun 2002 10:15:45 +1000
Subject: [Insight-users] helps needed
Message-ID:
Ahhhh hello
umm i found your addy at this site i went to when i was looking for a win 32 application for msn messenger the site was www.itk.org/pipermail/insight-users/2002-april/000196.html and you seemed you new a bit about computers and that so i thought i would ask you if you had any idea where i could get that win 32 application from cause i cant download msn with out it and its giving me the shits well my sisters mainly giving me the shits but i need it i spose
well hope you can help write back with any info
thanx l8a
I LOVE ERIN
MSN Photos is the easiest way to share and print your photos: Click Here
From Y.Rouillard@exeter.ac.uk Tue Jun 18 17:32:46 2002
From: Y.Rouillard@exeter.ac.uk (Yann Rouillard)
Date: Tue, 18 Jun 2002 17:32:46 +0100
Subject: [Insight-users] Capturing progress info while loading file
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com> <3D09E8A4.368398E@mail-timc.imag.fr>
Message-ID: <017801c216e5$c760b1c0$2a2cad90@janus>
Hi,
I'd like to know how to set up a progress bar to monitor a loading file
operation.
Does anyone know how to do it with ITK ?
Cheers,
Yann Rouillard
From ferrari@ucalgary.ca Tue Jun 18 17:31:54 2002
From: ferrari@ucalgary.ca (Ricardo J. Ferrari)
Date: Tue, 18 Jun 2002 10:31:54 -0600
Subject: [Insight-users] ITK on MAC OS X 10
Message-ID:
Hi all,
If somebody has gotten ITK running on MAC OS X 10 could you please give
me some hints about how to install it. I couldn't link the libraries.
Thanks,
Ricardo
From luis.ibanez@kitware.com Tue Jun 18 19:44:10 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Tue, 18 Jun 2002 14:44:10 -0400
Subject: [Insight-users] Capturing progress info while loading file
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com> <3D09E8A4.368398E@mail-timc.imag.fr> <017801c216e5$c760b1c0$2a2cad90@janus>
Message-ID: <3D0F7F7A.3040702@kitware.com>
Hi Yann,
ITK uses the the Observer Design Pattern.
Most ITK filters send "itk::Events", for example:
itk::StartEvent
itk::EndEvent
itk::ProgressEvent
...
ITK provide Observers that can be registered
on a filter in order to "listen" to these events.
You may be interested on the "itk::ProgressEvent"
Basically you create an Observer, and register it
with the filter for which you want to track the
progress.
myFilter->AddObserver( itk::ProgressEvent(),
HxButton->GetRedrawCommand());
NOTE that the first argument is a newly constructed
"ProgressEvent". Only the type of the event is used
here, in an approach similar the one used for Exceptions.
When the filter throws the particular event, the "Execute()"
method of the observer is invoked. Then you can do whatever
you want at this level. For example update a progress bar
in a GUI, or just print a value on the standard output.
There is a FLTK class that you can use right now.
It derives from the fltkSlider and has built in
an Observer.
Insight/Auxiliary/FltkImageViewer/fltkProgressBar.cxx
You may see an example of this on the GaussianFilter example:
Insight/Examples/GaussianFilter/liFilterConsole2D.cxx
progressSlider->Observe( myFilter.GetPointer() );
Please let us know if you encounter any problems
setting up Observers.
Thanks
Luis
==============================================================
Yann Rouillard wrote:
> Hi,
>
> I'd like to know how to set up a progress bar to monitor a loading file
> operation.
>
> Does anyone know how to do it with ITK ?
>
> Cheers,
>
> Yann Rouillard
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
From hjohnson@engineering.uiowa.edu Tue Jun 18 20:16:53 2002
From: hjohnson@engineering.uiowa.edu (Hans J. Johnson)
Date: Tue, 18 Jun 2002 14:16:53 -0500
Subject: [Insight-users] IO factory creation problem for writing
Message-ID: <3D0F8725.7020906@engineering.uiowa.edu>
This is a multi-part message in MIME format.
--------------040601060808030202010207
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello,
PROBLEM #1
==========
There is a possible design problem with the way automatic
XXXImageIOFactory works for writing of images. If you want the
ImageFileWriter to determine the output image type automatically, the
current implementation may fail.
The problem is that when itk::ImageFileWriter tries to Write the image,
it fails to find a suitable derived class of ImageIOBase. The failure
occurs because the write function calls CreateImageIO, which then calls
CanReadFile to determine if it is an accepable derived ImageIOBase is
found. For this to work properly, the CreateImageIO function needs to
call CanWriteFile from the class derived from ImageIOBase when doing the
Write operation, and CanReadFile when doing the Read operation.
CALLTREE:
itk::PNGImageIO::CanReadFile,
itk::ImageIOFactory::CreateImageIO,
itk::ImageFileWriter >::Write
I have attached a simple test to demonstrate this. Notice that if you
first create an image that can be read, then you can use the automatic
mechanism to write the image.
Example outputs from enclosed program:
[hjohnson@robin FileWriteTest]$ FileWriteTest
Determining file output type automatically (should be PNG)
Problem found while writing image ./newtest.png
Unknown
itk::ERROR: ImageFileWriter(0x8107db0): No ImageIO set, or none could be
created.
[hjohnson@robin FileWriteTest]$ FileWriteTest "BeExplicit"
Explicitly setting file output to PNG
File: ./newtest.png
Image ./newtest.png Written To Disk
[hjohnson@robin FileWriteTest]$ FileWriteTest
Determining file output type automatically (should be PNG)
File: ./newtest.png
Image ./newtest.png Written To Disk
[hjohnson@robin FileWriteTest]$ rm newtest.png
[hjohnson@robin FileWriteTest]$ FileWriteTest
Determining file output type automatically (should be PNG)
Problem found while writing image ./newtest.png
Unknown
itk::ERROR: ImageFileWriter(0x8107db0): No ImageIO set, or none could be
created.
SOLUTION:
==========
Replace function called CreateImageIO with function called CreateImageIO
Reader, then duplicate
that function into one called CreateImageIOWriter that is exactly the
same except that it uses CanWriteFile() call instead of CanReadFile() call.
This change only affects the following four files (including all of the
examples):
./Code/IO/itkImageIOFactory.h
./Code/IO/itkImageIOFactory.cxx
./Code/IO/itkImageFileReader.txx
./Code/IO/itkImageFileWriter.txx
patches to implement the described changes are attached to this document.
PROBLEM #2
===========
PNGImageIO::CanWriteFile(const char * filename)
add one line ---> m_FileName=filename;
SOLUTION
=========
Apply patches attached to this e-mail.
PROBLEM #3
===========
MetaImageIO::Write() not finished
SOLUTION
=========
Finish writing this. I can do this if it has not yet been done.
Regards,
Hans J. Johnson
hans-johnson@uiowa.edu
PS: Is there some other more efficient way to get changes committed to
the CVS repository? Is it possible to get CVS write access?
PPS: I have written a file reader for Analyze v7.5 file format. It has
been tested for both reading and writing of images. If anybody else
needs this, just send me an e-mail.
--------------040601060808030202010207
Content-Type: text/plain;
name="CMakeLists.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="CMakeLists.txt"
PROJECT(FileWriteTest)
#
# Find ITK
#
FIND_PATH( ITK_BINARY_DIR itkConfigure.h )
# Load in the values from ITK if found
IF ( ITK_BINARY_DIR )
LOAD_CACHE(${ITK_BINARY_DIR})
INCLUDE (${ITK_SOURCE_DIR}/itkCMakeOptions.cmake)
ENDIF (ITK_BINARY_DIR )
INCLUDE_DIRECTORIES(
${ITK_SOURCE_DIR}/Code/BasicFilters
${ITK_SOURCE_DIR}/Code/Algorithms
${CMAKE_INSTALL_PREFIX}/include
)
LINK_DIRECTORIES(
${ITK_BINARY_DIR}/Code/Common
${ITK_BINARY_DIR}/Code/IO
${CMAKE_INSTALL_PREFIX}/lib
)
LINK_LIBRARIES (
VXLNumerics
ITKCommon
ITKIO
)
ADD_EXECUTABLE(FileWriteTest FileWriteTest )
--------------040601060808030202010207
Content-Type: text/plain;
name="FileWriteTest.cxx"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="FileWriteTest.cxx"
/*=========================================================================
Program: FileWriteTest
Module: $RCSfile: FileWriteTest.cxx,v $
Language: C++
\author Hans J. Johnson
// This project is designed to test if you write out an image file
// based on the image extension alone.
=========================================================================*/
#include "itkImage.h"
#include "itkImageFileWriter.h"
#include "itkImageIOFactory.h"
#include "itkPNGImageIOFactory.h"
#include "itkPNGImageIO.h"
int main(int argc, char *argv[])
{
//Allocate Images
enum { ImageDimension = itk::Image::ImageDimension };
const itk::Image::SizeType size = {{100,100}};
const itk::Image::IndexType index = {{0,0}};
itk::Image::RegionType region;
region.SetSize( size );
region.SetIndex( index );
itk::Image::Pointer img = itk::Image::New();
img->SetLargestPossibleRegion( region );
img->SetBufferedRegion( region );
img->SetRequestedRegion( region );
img->Allocate();
itk::PNGImageIOFactory::RegisterOneFactory();
itk::ImageFileWriter< itk::Image >::Pointer ImageWriterPointer = itk::ImageFileWriter< itk::Image > ::New();
//Set the output filename
char outputFileName[] = "./newtest.png";
ImageWriterPointer->SetFileName(outputFileName);
//Not Necessary if using file extensions to determine. ImageWriterPointer->SetImageIO( Analyzeio );
//Make a png image writer
itk::PNGImageIO::Pointer pngio;
if(argc>1)
{
std::cout << "Explicitly setting file output to PNG"<< std::endl;
pngio= itk::PNGImageIO::New();
ImageWriterPointer->SetImageIO( pngio );
}
else
{
std::cout << "Determining file output type automatically (should be PNG)"<< std::endl;
}
//Attach input image to the writer.
ImageWriterPointer->SetInput( img );
//Determine file type and instantiate appropriate ImageIO class if not
//explicitly stated with SetImageIO, then write to disk.
try {
ImageWriterPointer->Write();
std::cout <<" Image "<< outputFileName << " Written To Disk" << std::endl;
}
catch ( itk::ExceptionObject & ex )
{
std::string message;
message = "Problem found while writing image ";
message += outputFileName;
message += "\n";
message += ex.GetLocation();
message += "\n";
message += ex.GetDescription();
std::cerr << message << std::endl;
}
return 0;
}
--------------040601060808030202010207
Content-Type: text/plain;
name="itkPNGImageIO.h.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkPNGImageIO.h.patch"
--- itkPNGImageIO.h.old Tue Jun 18 14:04:42 2002
+++ itkPNGImageIO.h Tue Jun 18 14:05:20 2002
@@ -48,7 +48,7 @@
/** Determine the file type. Returns true if this ImageIO can read the
* file specified. */
- virtual bool CanReadFile(const char*);
+ virtual bool CanReadFile(const char * FileNameToCheck);
/** Set the spacing and diemention information for the set filename. */
virtual void ReadImageInformation();
@@ -68,7 +68,7 @@
/** Determine the file type. Returns true if this ImageIO can read the
* file specified. */
- virtual bool CanWriteFile(const char*);
+ virtual bool CanWriteFile(const char* FileNameToCheck);
/** Writes the spacing and dimentions of the image.
* Assumes SetFileName has been called with a valid file name. */
--------------040601060808030202010207
Content-Type: text/plain;
name="itkPNGImageIO.cxx.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkPNGImageIO.cxx.patch"
--- itkPNGImageIO.cxx.old Tue Jun 18 14:04:48 2002
+++ itkPNGImageIO.cxx Tue Jun 18 14:06:49 2002
@@ -41,9 +41,10 @@
-bool PNGImageIO::CanReadFile(const char* file)
-{
- PNGFileWrapper pngfp(file,"rb");
+bool PNGImageIO::CanReadFile(const char* FileNameToCheck)
+{
+ m_FileName=FileNameToCheck;
+ PNGFileWrapper pngfp(FileNameToCheck,"rb");
FILE* fp = pngfp.m_FilePointer;
if(!fp)
{
@@ -367,8 +368,9 @@
return;
}
-bool PNGImageIO::CanWriteFile(const char*)
+bool PNGImageIO::CanWriteFile(const char * FileNameToCheck)
{
+ m_FileName=FileNameToCheck;
if ( m_FileName != "" &&
m_FileName.find(".png") < m_FileName.length() )
{
--------------040601060808030202010207
Content-Type: text/plain;
name="itkImageIOFactory.h.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkImageIOFactory.h.patch"
--- itkImageIOFactory.h.old Tue Jun 18 13:36:27 2002
+++ itkImageIOFactory.h Tue Jun 18 13:36:27 2002
@@ -43,7 +43,8 @@
typedef ::itk::ImageIOBase::Pointer ImageIOBasePointer;
/** Create the appropriate ImageIO depending on the particulars of the file. */
- static ImageIOBasePointer CreateImageIO(const char* path);
+ static ImageIOBasePointer CreateImageIOReader(const char* path);
+ static ImageIOBasePointer CreateImageIOWriter(const char* path);
protected:
ImageIOFactory();
--------------040601060808030202010207
Content-Type: text/plain;
name="itkImageIOFactory.cxx.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkImageIOFactory.cxx.patch"
--- itkImageIOFactory.cxx.old Tue Jun 18 13:36:27 2002
+++ itkImageIOFactory.cxx Tue Jun 18 13:36:27 2002
@@ -19,11 +19,10 @@
namespace itk
{
-
-
+
ImageIOBase::Pointer
-ImageIOFactory::CreateImageIO(const char* path)
+ImageIOFactory::CreateImageIOReader(const char* path)
{
std::list possibleImageIO;
std::list allobjects =
@@ -50,6 +49,38 @@
{
return *k;
}
+ }
+ return 0;
+}
+
+ImageIOBase::Pointer
+ImageIOFactory::CreateImageIOWriter(const char* path)
+{
+ std::list possibleImageIO;
+ std::list allobjects =
+ ObjectFactoryBase::CreateAllInstance("itkImageIOBase");
+ for(std::list::iterator i = allobjects.begin();
+ i != allobjects.end(); ++i)
+ {
+ ImageIOBase* io = dynamic_cast(i->GetPointer());
+ if(io)
+ {
+ possibleImageIO.push_back(io);
+ }
+ else
+ {
+ std::cerr << "Error ImageIO factory did not return an ImageIOBase: "
+ << (*i)->GetNameOfClass()
+ << std::endl;
+ }
+ }
+ for(std::list::iterator k = possibleImageIO.begin();
+ k != possibleImageIO.end(); ++k)
+ {
+ if((*k)->CanWriteFile(path))
+ {
+ return *k;
+ }
}
return 0;
}
--------------040601060808030202010207
Content-Type: text/plain;
name="itkImageFileWriter.txx.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkImageFileWriter.txx.patch"
--- itkImageFileWriter.txx.old Tue Jun 18 13:36:27 2002
+++ itkImageFileWriter.txx Tue Jun 18 13:36:27 2002
@@ -101,7 +101,7 @@
if ( m_ImageIO == 0 ) //try creating via factory
{
- m_ImageIO = ImageIOFactory::CreateImageIO(m_FileName.c_str());
+ m_ImageIO = ImageIOFactory::CreateImageIOWriter(m_FileName.c_str());
}
if ( m_ImageIO == 0 )
--------------040601060808030202010207
Content-Type: text/plain;
name="itkImageFileReader.txx.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkImageFileReader.txx.patch"
--- itkImageFileReader.txx.old Tue Jun 18 13:36:27 2002
+++ itkImageFileReader.txx Tue Jun 18 13:36:27 2002
@@ -82,7 +82,7 @@
if ( m_ImageIO == 0 ) //try creating via factory
{
m_UserSpecified = false;
- m_ImageIO = ImageIOFactory::CreateImageIO(m_FileName.c_str());
+ m_ImageIO = ImageIOFactory::CreateImageIOReader(m_FileName.c_str());
}
else
{
--------------040601060808030202010207--
From Y.Rouillard@exeter.ac.uk Tue Jun 18 20:58:11 2002
From: Y.Rouillard@exeter.ac.uk (Yann Rouillard)
Date: Tue, 18 Jun 2002 20:58:11 +0100
Subject: [Insight-users] Capturing progress info while loading file
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com> <3D09E8A4.368398E@mail-timc.imag.fr> <017801c216e5$c760b1c0$2a2cad90@janus> <3D0F7F7A.3040702@kitware.com>
Message-ID: <004001c21702$8c9120d0$fe00a8c0@wallis>
Hi Luis,
Thank you for your detailed answer. I have tried to use an observer to
update a progress bar while loading a meta-image file but it doesn't seem to
work. I traced the execution and I have reached the MetaImageIO::Read method
where it seems that no ProgressEvent are triggered.
Are ProgressEvent only used for filter or am I wrong in some point ?
Cheers;
Yann
>
> Hi Yann,
>
> ITK uses the the Observer Design Pattern.
>
> Most ITK filters send "itk::Events", for example:
>
> itk::StartEvent
> itk::EndEvent
> itk::ProgressEvent
> ...
>
>
> ITK provide Observers that can be registered
> on a filter in order to "listen" to these events.
>
> You may be interested on the "itk::ProgressEvent"
>
> Basically you create an Observer, and register it
> with the filter for which you want to track the
> progress.
>
>
> myFilter->AddObserver( itk::ProgressEvent(),
> HxButton->GetRedrawCommand());
>
> NOTE that the first argument is a newly constructed
> "ProgressEvent". Only the type of the event is used
> here, in an approach similar the one used for Exceptions.
>
>
> When the filter throws the particular event, the "Execute()"
> method of the observer is invoked. Then you can do whatever
> you want at this level. For example update a progress bar
> in a GUI, or just print a value on the standard output.
>
>
> There is a FLTK class that you can use right now.
> It derives from the fltkSlider and has built in
> an Observer.
>
> Insight/Auxiliary/FltkImageViewer/fltkProgressBar.cxx
>
>
> You may see an example of this on the GaussianFilter example:
>
> Insight/Examples/GaussianFilter/liFilterConsole2D.cxx
>
>
> progressSlider->Observe( myFilter.GetPointer() );
>
>
>
> Please let us know if you encounter any problems
> setting up Observers.
>
>
> Thanks
>
>
> Luis
>
>
> ==============================================================
> Yann Rouillard wrote:
>
> > Hi,
> >
> > I'd like to know how to set up a progress bar to monitor a loading file
> > operation.
> >
> > Does anyone know how to do it with ITK ?
> >
> > Cheers,
> >
> > Yann Rouillard
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-users
> >
> >
>
>
>
>
From luis.ibanez@kitware.com Tue Jun 18 22:22:39 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Tue, 18 Jun 2002 17:22:39 -0400
Subject: [Insight-users] Capturing progress info while loading file
References: <5.0.2.1.0.20020613092419.0432e610@pop.nycap.rr.com> <3D09E8A4.368398E@mail-timc.imag.fr> <017801c216e5$c760b1c0$2a2cad90@janus> <3D0F7F7A.3040702@kitware.com> <004001c21702$8c9120d0$fe00a8c0@wallis>
Message-ID: <3D0FA49F.80202@kitware.com>
Hi Yann,
You are right,
the ImageIO was not invoking ProgressEvents.
I just modified the MetaImageIO class in order
to invoke ProgressEvents.
It was originally reading the whole image in
a single Read(char *buffer, imagesize) operation.
Now this has been divided into 100 reads() and
in between them, ProgressEvents are invoked.
The GaussianFilter example (3D) has been modified
in order to reflect these updates.
If you CVS update now, you will be able to get the
updated version of IO.
Please let us know if you find further problems.
Thanks for your feedback.
Luis
==========================================
Yann Rouillard wrote:
> Hi Luis,
>
> Thank you for your detailed answer. I have tried to use an observer to
> update a progress bar while loading a meta-image file but it doesn't seem to
> work. I traced the execution and I have reached the MetaImageIO::Read method
> where it seems that no ProgressEvent are triggered.
>
> Are ProgressEvent only used for filter or am I wrong in some point ?
>
> Cheers;
> Yann
>
>
>
From luis.ibanez@kitware.com Tue Jun 18 22:26:34 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Tue, 18 Jun 2002 17:26:34 -0400
Subject: [Insight-users] IO factory creation problem for writing
References: <3D0F8725.7020906@engineering.uiowa.edu>
Message-ID: <3D0FA58A.7020705@kitware.com>
Hi Hans,
Thanks for your feedback,
We are working on the integration of the changes (fixes)
that you proposed. We will be back soon.
Thanks
Luis
===================================================
Hans J. Johnson wrote:
> Hello,
>
> PROBLEM #1
> ==========
> There is a possible design problem with the way automatic
> XXXImageIOFactory works for writing of images. If you want the
> ImageFileWriter to determine the output image type automatically, the
> current implementation may fail.
> The problem is that when itk::ImageFileWriter tries to Write the image,
> it fails to find a suitable derived class of ImageIOBase. The failure
> occurs because the write function calls CreateImageIO, which then calls
> CanReadFile to determine if it is an accepable derived ImageIOBase is
> found. For this to work properly, the CreateImageIO function needs to
> call CanWriteFile from the class derived from ImageIOBase when doing the
> Write operation, and CanReadFile when doing the Read operation.
>
> CALLTREE:
> itk::PNGImageIO::CanReadFile,
> itk::ImageIOFactory::CreateImageIO,
> itk::ImageFileWriter >::Write
>
> I have attached a simple test to demonstrate this. Notice that if you
> first create an image that can be read, then you can use the automatic
> mechanism to write the image.
>
> Example outputs from enclosed program:
>
> [hjohnson@robin FileWriteTest]$ FileWriteTest
> Determining file output type automatically (should be PNG)
> Problem found while writing image ./newtest.png
> Unknown
> itk::ERROR: ImageFileWriter(0x8107db0): No ImageIO set, or none could be
> created.
>
> [hjohnson@robin FileWriteTest]$ FileWriteTest "BeExplicit"
> Explicitly setting file output to PNG
> File: ./newtest.png
> Image ./newtest.png Written To Disk
>
> [hjohnson@robin FileWriteTest]$ FileWriteTest
> Determining file output type automatically (should be PNG)
> File: ./newtest.png
> Image ./newtest.png Written To Disk
>
> [hjohnson@robin FileWriteTest]$ rm newtest.png
> [hjohnson@robin FileWriteTest]$ FileWriteTest
> Determining file output type automatically (should be PNG)
> Problem found while writing image ./newtest.png
> Unknown
> itk::ERROR: ImageFileWriter(0x8107db0): No ImageIO set, or none could be
> created.
>
> SOLUTION:
> ==========
> Replace function called CreateImageIO with function called CreateImageIO
> Reader, then duplicate
> that function into one called CreateImageIOWriter that is exactly the
> same except that it uses CanWriteFile() call instead of CanReadFile() call.
>
> This change only affects the following four files (including all of the
> examples):
> ./Code/IO/itkImageIOFactory.h
> ./Code/IO/itkImageIOFactory.cxx
> ./Code/IO/itkImageFileReader.txx
> ./Code/IO/itkImageFileWriter.txx
>
> patches to implement the described changes are attached to this document.
>
>
> PROBLEM #2
> ===========
> PNGImageIO::CanWriteFile(const char * filename)
> add one line ---> m_FileName=filename;
> SOLUTION
> =========
> Apply patches attached to this e-mail.
>
>
> PROBLEM #3
> ===========
> MetaImageIO::Write() not finished
> SOLUTION
> =========
> Finish writing this. I can do this if it has not yet been done.
>
> Regards,
> Hans J. Johnson
> hans-johnson@uiowa.edu
>
> PS: Is there some other more efficient way to get changes committed to
> the CVS repository? Is it possible to get CVS write access?
>
> PPS: I have written a file reader for Analyze v7.5 file format. It has
> been tested for both reading and writing of images. If anybody else
> needs this, just send me an e-mail.
>
>
>
>
> ------------------------------------------------------------------------
>
> PROJECT(FileWriteTest)
>
> #
> # Find ITK
> #
> FIND_PATH( ITK_BINARY_DIR itkConfigure.h )
>
> # Load in the values from ITK if found
> IF ( ITK_BINARY_DIR )
> LOAD_CACHE(${ITK_BINARY_DIR})
> INCLUDE (${ITK_SOURCE_DIR}/itkCMakeOptions.cmake)
> ENDIF (ITK_BINARY_DIR )
>
>
> INCLUDE_DIRECTORIES(
> ${ITK_SOURCE_DIR}/Code/BasicFilters
> ${ITK_SOURCE_DIR}/Code/Algorithms
> ${CMAKE_INSTALL_PREFIX}/include
> )
>
> LINK_DIRECTORIES(
> ${ITK_BINARY_DIR}/Code/Common
> ${ITK_BINARY_DIR}/Code/IO
> ${CMAKE_INSTALL_PREFIX}/lib
> )
>
> LINK_LIBRARIES (
> VXLNumerics
> ITKCommon
> ITKIO
> )
>
>
> ADD_EXECUTABLE(FileWriteTest FileWriteTest )
>
>
>
> ------------------------------------------------------------------------
>
> /*=========================================================================
> Program: FileWriteTest
> Module: $RCSfile: FileWriteTest.cxx,v $
> Language: C++
> \author Hans J. Johnson
> // This project is designed to test if you write out an image file
> // based on the image extension alone.
> =========================================================================*/
>
>
> #include "itkImage.h"
> #include "itkImageFileWriter.h"
> #include "itkImageIOFactory.h"
> #include "itkPNGImageIOFactory.h"
> #include "itkPNGImageIO.h"
>
> int main(int argc, char *argv[])
> {
> //Allocate Images
> enum { ImageDimension = itk::Image::ImageDimension };
> const itk::Image::SizeType size = {{100,100}};
> const itk::Image::IndexType index = {{0,0}};
> itk::Image::RegionType region;
> region.SetSize( size );
> region.SetIndex( index );
>
> itk::Image::Pointer img = itk::Image::New();
> img->SetLargestPossibleRegion( region );
> img->SetBufferedRegion( region );
> img->SetRequestedRegion( region );
> img->Allocate();
>
> itk::PNGImageIOFactory::RegisterOneFactory();
> itk::ImageFileWriter< itk::Image >::Pointer ImageWriterPointer = itk::ImageFileWriter< itk::Image > ::New();
>
> //Set the output filename
> char outputFileName[] = "./newtest.png";
> ImageWriterPointer->SetFileName(outputFileName);
> //Not Necessary if using file extensions to determine. ImageWriterPointer->SetImageIO( Analyzeio );
> //Make a png image writer
> itk::PNGImageIO::Pointer pngio;
> if(argc>1)
> {
> std::cout << "Explicitly setting file output to PNG"<< std::endl;
> pngio= itk::PNGImageIO::New();
> ImageWriterPointer->SetImageIO( pngio );
> }
> else
> {
> std::cout << "Determining file output type automatically (should be PNG)"<< std::endl;
> }
>
> //Attach input image to the writer.
> ImageWriterPointer->SetInput( img );
> //Determine file type and instantiate appropriate ImageIO class if not
> //explicitly stated with SetImageIO, then write to disk.
> try {
> ImageWriterPointer->Write();
> std::cout <<" Image "<< outputFileName << " Written To Disk" << std::endl;
> }
> catch ( itk::ExceptionObject & ex )
> {
> std::string message;
> message = "Problem found while writing image ";
> message += outputFileName;
> message += "\n";
> message += ex.GetLocation();
> message += "\n";
> message += ex.GetDescription();
> std::cerr << message << std::endl;
> }
> return 0;
> }
>
>
> ------------------------------------------------------------------------
>
> --- itkPNGImageIO.h.old Tue Jun 18 14:04:42 2002
> +++ itkPNGImageIO.h Tue Jun 18 14:05:20 2002
> @@ -48,7 +48,7 @@
>
> /** Determine the file type. Returns true if this ImageIO can read the
> * file specified. */
> - virtual bool CanReadFile(const char*);
> + virtual bool CanReadFile(const char * FileNameToCheck);
>
> /** Set the spacing and diemention information for the set filename. */
> virtual void ReadImageInformation();
> @@ -68,7 +68,7 @@
>
> /** Determine the file type. Returns true if this ImageIO can read the
> * file specified. */
> - virtual bool CanWriteFile(const char*);
> + virtual bool CanWriteFile(const char* FileNameToCheck);
>
> /** Writes the spacing and dimentions of the image.
> * Assumes SetFileName has been called with a valid file name. */
>
>
> ------------------------------------------------------------------------
>
> --- itkPNGImageIO.cxx.old Tue Jun 18 14:04:48 2002
> +++ itkPNGImageIO.cxx Tue Jun 18 14:06:49 2002
> @@ -41,9 +41,10 @@
>
>
>
> -bool PNGImageIO::CanReadFile(const char* file)
> -{
> - PNGFileWrapper pngfp(file,"rb");
> +bool PNGImageIO::CanReadFile(const char* FileNameToCheck)
> +{
> + m_FileName=FileNameToCheck;
> + PNGFileWrapper pngfp(FileNameToCheck,"rb");
> FILE* fp = pngfp.m_FilePointer;
> if(!fp)
> {
> @@ -367,8 +368,9 @@
> return;
> }
>
> -bool PNGImageIO::CanWriteFile(const char*)
> +bool PNGImageIO::CanWriteFile(const char * FileNameToCheck)
> {
> + m_FileName=FileNameToCheck;
> if ( m_FileName != "" &&
> m_FileName.find(".png") < m_FileName.length() )
> {
>
>
> ------------------------------------------------------------------------
>
> --- itkImageIOFactory.h.old Tue Jun 18 13:36:27 2002
> +++ itkImageIOFactory.h Tue Jun 18 13:36:27 2002
> @@ -43,7 +43,8 @@
> typedef ::itk::ImageIOBase::Pointer ImageIOBasePointer;
>
> /** Create the appropriate ImageIO depending on the particulars of the file. */
> - static ImageIOBasePointer CreateImageIO(const char* path);
> + static ImageIOBasePointer CreateImageIOReader(const char* path);
> + static ImageIOBasePointer CreateImageIOWriter(const char* path);
>
> protected:
> ImageIOFactory();
>
>
> ------------------------------------------------------------------------
>
> --- itkImageIOFactory.cxx.old Tue Jun 18 13:36:27 2002
> +++ itkImageIOFactory.cxx Tue Jun 18 13:36:27 2002
> @@ -19,11 +19,10 @@
>
> namespace itk
> {
> -
>
> -
> +
> ImageIOBase::Pointer
> -ImageIOFactory::CreateImageIO(const char* path)
> +ImageIOFactory::CreateImageIOReader(const char* path)
> {
> std::list possibleImageIO;
> std::list allobjects =
> @@ -50,6 +49,38 @@
> {
> return *k;
> }
> + }
> + return 0;
> +}
> +
> +ImageIOBase::Pointer
> +ImageIOFactory::CreateImageIOWriter(const char* path)
> +{
> + std::list possibleImageIO;
> + std::list allobjects =
> + ObjectFactoryBase::CreateAllInstance("itkImageIOBase");
> + for(std::list::iterator i = allobjects.begin();
> + i != allobjects.end(); ++i)
> + {
> + ImageIOBase* io = dynamic_cast(i->GetPointer());
> + if(io)
> + {
> + possibleImageIO.push_back(io);
> + }
> + else
> + {
> + std::cerr << "Error ImageIO factory did not return an ImageIOBase: "
> + << (*i)->GetNameOfClass()
> + << std::endl;
> + }
> + }
> + for(std::list::iterator k = possibleImageIO.begin();
> + k != possibleImageIO.end(); ++k)
> + {
> + if((*k)->CanWriteFile(path))
> + {
> + return *k;
> + }
> }
> return 0;
> }
>
>
> ------------------------------------------------------------------------
>
> --- itkImageFileWriter.txx.old Tue Jun 18 13:36:27 2002
> +++ itkImageFileWriter.txx Tue Jun 18 13:36:27 2002
> @@ -101,7 +101,7 @@
>
> if ( m_ImageIO == 0 ) //try creating via factory
> {
> - m_ImageIO = ImageIOFactory::CreateImageIO(m_FileName.c_str());
> + m_ImageIO = ImageIOFactory::CreateImageIOWriter(m_FileName.c_str());
> }
>
> if ( m_ImageIO == 0 )
>
>
> ------------------------------------------------------------------------
>
> --- itkImageFileReader.txx.old Tue Jun 18 13:36:27 2002
> +++ itkImageFileReader.txx Tue Jun 18 13:36:27 2002
> @@ -82,7 +82,7 @@
> if ( m_ImageIO == 0 ) //try creating via factory
> {
> m_UserSpecified = false;
> - m_ImageIO = ImageIOFactory::CreateImageIO(m_FileName.c_str());
> + m_ImageIO = ImageIOFactory::CreateImageIOReader(m_FileName.c_str());
> }
> else
> {
>
> CMakeLists.txt
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> FileWriteTest.cxx
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkPNGImageIO.h.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkPNGImageIO.cxx.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkImageIOFactory.h.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkImageIOFactory.cxx.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkImageFileWriter.txx.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
> ------------------------------------------------------------------------
> itkImageFileReader.txx.patch
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
>
>
From galicjan@yahoo.com Wed Jun 19 13:36:52 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Wed, 19 Jun 2002 05:36:52 -0700 (PDT)
Subject: [Insight-users] Notes from Boston meeting? (or where ITK is heading)
Message-ID: <20020619123652.20608.qmail@web20910.mail.yahoo.com>
I wonder if somebody who attended the recent Boston meeting would be so
kind and post a summary. In particular, I am interested in priorities for
ITK development. Where ITK is heading in near future? For instance are
following considered or planed for near future:
* Revise design and implementation of the ImageIO module (e.g. streaming)?
* Support for non-parametric base classes for data representation objects?
* Vascular segmentation and morphometry?
* Wrapping for Java and Python?
Thanks,
Jarek
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From luis.ibanez@kitware.com Wed Jun 19 14:51:13 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Wed, 19 Jun 2002 09:51:13 -0400
Subject: [Insight-users] Notes from Boston meeting? (or where ITK is heading)
References: <20020619123652.20608.qmail@web20910.mail.yahoo.com>
Message-ID: <3D108C51.3080201@kitware.com>
Hi Jarek,
Here is a summary of the topics discussed
at the Boston meeting. This reflect what the
focus of developers may be for the rest of
the year.
(This is just from my notes so it is probably
not an exhaustive list)
You can also get access to all the material and
presentations of the ITK meeting by checking out
the "InsightDocuments" module from cvs.
cvs -d :pserver:anonymous@public.kitware.com:/cvsroot/Insight login
password: insight
cvs -d :pserver:anonymous@public.kitware.com:/cvsroot/Insight
co InsightDocuments
You will find the notes on the Boston meeting under:
InsightDocuments/Developer/Administrative/Meetings/BostonJune2002
===============================
Summary of Boston Meeting:
1) A Survey with feedback from users was analyzed.
Among the interesting findings:
1- more than 50% Windows users,
followed by about 25% of Linux users
2- the more requested additions to the toolkit are:
a- Documentation
b- Examples
2) A list of missing algorithms was collected
(it is available on the cvs repository)
3) Wrapping for Tcl is ready,(documentation and examples are required)
next targeted scripting language is Python
4) A tutorial on ITK will be presented at IEEE Visualization 2002
plans for other tutorials at conferences are on the way.
5) A need for increasing the robustness of the toolkit and
improving the uniformity of the code was identified.
6) A Book/Tutorial is needed to provide an organized
and complete introduction to the toolkit.
7) Need to improve IO modules.
DICOM to be available soon.
(the possibility of human sacrifices was
discussed on this topic :-)
8) Invitations for adding algorithms are open.
The NLM provide funding for groups interested
in adapting and adding their algorithms to ITK.
Please keep in mind that this is an unofficial and
necessarily incomplete summary of the meeting.
Luis
---------
Jarek Sacha wrote:
> I wonder if somebody who attended the recent Boston meeting would be so
> kind and post a summary. In particular, I am interested in priorities for
> ITK development. Where ITK is heading in near future? For instance are
> following considered or planed for near future:
> * Revise design and implementation of the ImageIO module (e.g. streaming)?
>
> * Support for non-parametric base classes for data representation objects?
> * Vascular segmentation and morphometry?
> * Wrapping for Java and Python?
>
> Thanks,
>
> Jarek
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! - Official partner of 2002 FIFA World Cup
> http://fifaworldcup.yahoo.com
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
From bill.hoffman@kitware.com Wed Jun 19 16:24:12 2002
From: bill.hoffman@kitware.com (Bill Hoffman)
Date: Wed, 19 Jun 2002 11:24:12 -0400
Subject: [Insight-users] ITK on MAC OS X 10
In-Reply-To:
Message-ID: <5.0.2.1.0.20020619112325.043ee2b8@pop.nycap.rr.com>
Currently, due to bugs in the gcc that comes with Mac OSX it is not possible to compile ITK. The manual template instantiations do not work.
-Bill
At 10:31 AM 6/18/2002 -0600, Ricardo J. Ferrari wrote:
>Hi all,
>
>If somebody has gotten ITK running on MAC OS X 10 could you please give me some hints about how to install it. I couldn't link the libraries.
>
>Thanks,
>
>Ricardo
>
>_______________________________________________
>Insight-users mailing list
>Insight-users@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-users
From Y.Rouillard@exeter.ac.uk Wed Jun 19 17:16:19 2002
From: Y.Rouillard@exeter.ac.uk (Yann Rouillard)
Date: Wed, 19 Jun 2002 17:16:19 +0100
Subject: [Insight-users] Capturing progress info while loading file
Message-ID: <002501c217ac$a57bc140$2a2cad90@janus>
Hi Luis,
I CVS updated to get your modification but it doesn't seem to work.
In fact the problem is that I use ImageFileReader and not MetaImageIO
directly.
So my observer registered with ImageFileReader doesn't get ProgressEvent
from MetaImageIO.
I tried to use GetImageIO() to get the correct ImageIO instance but it seems
to be correctly set only during Update() (too late).
I look at ImageFileReader and saw that m_imageIO is set in the
GenerateOutputInformation() method but if I try to call this method manually
before GetImageIO() it raises an exception later when I try to read the file
later (with Update ()).
Is there a solution ?
Cheers,
Yann
From luis.ibanez@kitware.com Wed Jun 19 19:55:39 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Wed, 19 Jun 2002 14:55:39 -0400
Subject: [Insight-users] Capturing progress info while loading file
References: <002501c217ac$a57bc140$2a2cad90@janus>
Message-ID: <3D10D3AB.4080503@kitware.com>
Hi Yann,
You are right, invoking the events from the
ImageIO class is not enough since the
visible object is the ImageFileReader or
the ImageFileWriter.
The solution seems to be to make the
ImageFileReader and ImageFileWriter
Observers of their own ImageIO objects.
and make them re-throw the events
comming from the ImageIO objects.
I'll add this to the code and let you
know when is ready.
Luis
========================================
Yann Rouillard wrote:
> Hi Luis,
>
> I CVS updated to get your modification but it doesn't seem to work.
> In fact the problem is that I use ImageFileReader and not MetaImageIO
> directly.
> So my observer registered with ImageFileReader doesn't get ProgressEvent
> from MetaImageIO.
> I tried to use GetImageIO() to get the correct ImageIO instance but it seems
> to be correctly set only during Update() (too late).
> I look at ImageFileReader and saw that m_imageIO is set in the
> GenerateOutputInformation() method but if I try to call this method manually
> before GetImageIO() it raises an exception later when I try to read the file
> later (with Update ()).
>
> Is there a solution ?
>
> Cheers,
> Yann
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
From luis.ibanez@kitware.com Fri Jun 21 14:34:56 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Fri, 21 Jun 2002 09:34:56 -0400
Subject: [Insight-users] Re: Confirmation on the output
References: <000d01c2147f$2fb9e7f0$5033b801@macinfo.net> <3D0B6E60.9000203@kitware.com> <003501c217a3$35c1da00$5033b801@macinfo.net>
Message-ID: <3D132B80.8020700@kitware.com>
This is a multi-part message in MIME format.
--------------090307080702020500030200
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi cspl,
The output that you are getting form the
Laplacian looks quite noisy. It seems that
the current implementation of the Laplacian
filter is expecting "float" type of images.
The Laplacian filter that you are using is
implemented by performing convolution with
a kernel but without any previous smoothing.
That means that it is sensitive to a particular
scale of edges (basically of 1 pixel width).
A more robust way of dealing with edges is to
tune your detection to the scales of interest
in your image.
Could you help us doing the following
experiment ?
If you have a recent CVS checkout of ITK,
build the Example : GaussianFilter2D.
http://www.itk.org/HTML/GaussianFilter.htm
I'm attaching the MetaImage header file
to this email, that will help you read
your raw image as a MetaImage.
The GaussianFilter2D examples expects
2D MetaImages or PNG files.
You will have to edit the input.mha file
and at the end replace "input.raw" with
the actual filename of your 2D input file.
Make sure that you have both the .mha and
the .raw files in the same directory.
Load the image by clicking on the "Load"
button, select a sigma (starting with low
values, close to 1.0) and then Click on
"Execute". Once all buttons are green,
take a look at the outputs:
"Modulus": the magnitude of the gradient
"Smooth" : input convolved with a gaussian
"Laplacian": input after a laplacian filter
If you are interested in locating contours
you may find more useful the output of the
"Modulus" than the one from the Laplacian.
take a look at the Laplacian and the gradient
magnitued in the web page of the example:
http://www.itk.org/HTML/GaussianFilter.htm
The laplacian will give you zero-crossings
on the contours, but not a good mechanism
for detection.
A more robust way of detecting contours is
to combine the information of the modulus
with the information from the Laplacian.
Using a Sigma around 3.0 to 5.0. You can use
the Modulus for "detection" of edges, and
the Laplacian's zero-crossings for locating
those contours with precision.
Basically you will be looking for pixels
whose Gradient Modulus is high and its
Laplacian is in a Zero-Crossing.
Please let us know if you find any problems
Thanks
Luis
======================================
cspl wrote:
> Dear Mr.Luis,
>
> I got the Laplacian Filter o/p.But I am not sure it is exact o/p of
> Laplacian filter.Because I have seen in some other tool it is giving
> different o/p.Please make sure that is it correct o/p or not.I attached
> herewith my LaplacianImageFilter o/p.I have written code as follows.
>
> int main(int argc,char** argv)
> {
>
> const char * inputFileName = argv[1];
> const char * outputFileName = argv[4];
>
> const unsigned int nx =atoi(argv[2]);
> const unsigned int ny =atoi(argv[3]);
>
> typedef unsigned short PixelType;
> const unsigned int Dimension = 2;
>
>
>
> typedef itk::Image< PixelType, Dimension > ImageType;
>
>
>
> // Read a Raw File
> typedef itk::ImageFileReader< ImageType > FileSourceType;
> typedef itk::RawImageIO RawReaderType;
>
>
> FileSourceType::Pointer fileSource = FileSourceType::New();
> fileSource->SetFileName( inputFileName );
> RawReaderType::Pointer rawReader = RawReaderType::New();
> rawReader->SetDimensions( 0, nx );
> rawReader->SetDimensions( 1, ny );
> fileSource->SetImageIO( rawReader );
> fileSource->Update();
> ImageType::Pointer image = fileSource->GetOutput();
>
>
> ///Laplician Filter
> itk::LaplacianImageFilter::Pointer
> lapFilter = itk::LaplacianImageFilter::New();
>
> lapFilter->SetInput(image);
> lapFilter->Update();
>
>
>
> ImageType::Pointer imageo = lapFilter->GetOutput();
> // Write a Raw File
> typedef itk::ImageFileWriter< ImageType > FileSinkType;
> typedef itk::RawImageIO RawWriterType;
>
>
> FileSinkType::Pointer fileSink = FileSinkType::New();
> RawWriterType::Pointer rawWriter = RawWriterType::New();
>
> fileSink->SetImageIO( rawWriter );
> fileSink->SetFileName( outputFileName );
> fileSink->SetInput(imageo);
> fileSink->Write();
>
> return 0;
>
>
> }
>
> I am giving Raw file as i/p and getting as Raw file o/p.Actually Iwant edge
> detection using Laplacian filter.
>
> Thanking you,
> Regards,
> Ramakrishna
--------------090307080702020500030200
Content-Type: text/plain;
name="input.mha"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="input.mha"
NDims = 2
DimSize = 512 512
ElementType = MET_USHORT
ElementSpacing = 1.0 1.0
ElementByteOrderMSB = False
ElementDataFile = input.raw
--------------090307080702020500030200--
From lorenzen@cs.unc.edu Fri Jun 21 15:53:49 2002
From: lorenzen@cs.unc.edu (Peter J. Lorenzen)
Date: Fri, 21 Jun 2002 10:53:49 -0400
Subject: [Insight-users] Compiling ITK on MacOS X/Darwin
Message-ID: <7305135.1024656829@[0.0.0.0]>
Greetings All,
I am trying to build ITK on a PowerBook G4 running MacOS X (v10.1). I have
had success in building both the FLTK and VTK libraries.
However, I has not been able to build ITK. Perhaps you could help me?
Thanks,
- Peter
The compilation fails in Code/Numerics when the libtool tries to produce the
libVXLNumerics.dylib from the collection of vnl and v3p object files. Here
is a snippet from the compilation output:
...
Building default_target in directory /sw/Insight_bin/Code/Numerics
rm -f libVXLNumerics.dylib
c++ -dynamiclib -g -O2 -o libVXLNumerics.dylib
vnl/Templates/vcl_list+vnl_double_4-.o vnl/Templates/vcl_vector+double_3-.o
vnl/Templates/vcl_vector+double_3x3-.o vnl/Templates/vcl_vector+float_2-.o
vnl/Templates/vcl_vector+float_3
A number of lines later ...
o v3p/netlib/zlassq.o v3p/netlib/zlatrs.o v3p/netlib/ztrevc.o
v3p/netlib/zung2r.o v3p/netlib/zunghr.o v3p/netlib/zungqr.o
-L/sw/Insight_bin/Utilities/zlib -L/sw/Insight_bin/Utilities/png
-L/sw/Insight_bin/Code/Common -L/sw/Insight_bin/Code/IO
-L/sw/Insight_bin/Code/Numerics/vxl -L/usr/local/lib/vtk -lpthread
-framework OpenGL -framework AGL -framework Cocoa -lXt -lSM -lICE
-L/usr/X11R6/lib -lX11 -lXext -lpthread -lm -lm
ld: common symbols not allowed with MH_DYLIB output format
ld: common symbols not allowed with MH_DYLIB output format
ld: common symbols not allowed with MH_DYLIB output format
vnl/Templates/vnl_matrix+double-.o definition of common
__44vnl_inplace_transpose__H1Zd_PX01UiUiPcUi_i.0.b (size 8)
vnl/Templates/vnl_matrix+double-.o definition of common
__44vnl_inplace_transpose__H1Zd_PX01UiUiPcUi_i.1.c (size 8)
(a few more of these follow)
...
Host info:
----------
[localhost:/sw/Insight_bin] peter% uname -a
Darwin localhost 5.5 Darwin Kernel Version 5.5: Thu May 30 14:51:26 PDT
2002; root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC Power Macintosh powerpc
Compiler used:
--------------
[localhost:/sw/Insight_bin] peter% c++ -v
Reading specs from /usr/libexec/gcc/darwin/ppc/2.95.2/specs
Apple Computer, Inc. version gcc-937.2, based on gcc version 2.95.2
19991024 (release)
CMakeCache.txt
--------------
# This is the CMakeCache file.
# For build in directory: /sw/Insight_bin
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a varible in the cache.
# TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//Build the unsupported directory
BUILD_AUXILIARY:BOOL=ON
//Build the examples directory
BUILD_EXAMPLES:BOOL=ON
//Build the FEM Code
BUILD_FEM_CODE:BOOL=ON
//Build the FEM-Mesh example
BUILD_FEM_MESH_EXAMPLE:BOOL=OFF
//Build the FltkImageViewer Library
BUILD_FLTKIMAGEVIEWER:BOOL=OFF
//Build the MetaImage Library
BUILD_METAIMAGE:BOOL=OFF
//Build with shared libraries.
BUILD_SHARED_LIBS:BOOL=ON
//Build the testing tree.
BUILD_TESTING:BOOL=ON
//Single output directory for building all executables.
EXECUTABLE_OUTPUT_PATH:PATH=
//Where can the fluid file be found
FLTK_FLUID_EXE:FILEPATH=/usr/local/bin/fluid
//What is the path where the file FL/Fl.h can be found
FLTK_INCLUDE_PATH:PATH=/usr/local/include
//Where can the fltk library be found
FLTK_LIBRARY:FILEPATH=/usr/local/lib/libfltk.a
//Can we honour the FLTK_WRAP_UI command
FLTK_WRAP_UI:BOOL=1
//Value Computed by CMake
ITKPNG_BINARY_DIR:STATIC=/sw/Insight_bin/Utilities/png
//Value Computed by CMake
ITKPNG_SOURCE_DIR:STATIC=/sw/Insight/Utilities/png
//Value Computed by CMake
ITKZLIB_BINARY_DIR:STATIC=/sw/Insight_bin/Utilities/zlib
//Value Computed by CMake
ITKZLIB_SOURCE_DIR:STATIC=/sw/Insight/Utilities/zlib
//Value Computed by CMake
ITK_BINARY_DIR:STATIC=/sw/Insight_bin
//What is the path where the file ITKData.readme can be found
ITK_DATA_ROOT:PATH=/sw/Insight/Testing/Data
//Value Computed by CMake
ITK_SOURCE_DIR:STATIC=/sw/Insight
//Use the system's version of the standard C++ library (STL and
// streams). If 'OFF', ITK will build against a supplied version
// of the standard library from SGI. On SGI systems, this should
// be set to 'OFF'.
ITK_USE_SYSTEM_STDLIB:BOOL=ON
//Build Tcl wrapper support.
ITK_WRAP_TCL:BOOL=OFF
//Single output directory for building all libraries.
LIBRARY_OUTPUT_PATH:PATH=
//Use FLTK (The Fast Light Toolkit) for GUI (some examples need
// this)
USE_FLTK:BOOL=ON
//Use an installed (versus built from source) version of VTK. Be
// sure that VTK_INSTALL_PATH is correct.
USE_INSTALLED_VTK:BOOL=1
//Use VTK (The Visualization Toolkit) (some examples need this)
//
USE_VTK:BOOL=ON
//What is the path where the file UseVTK.cmake can be found
VTK_BINARY_PATH:PATH=NOTFOUND
//What is the path where the file include/vtk/UseVTK.cmake can
// be found
VTK_INSTALL_PATH:PATH=/usr/local
//What is the path where the file avfCROP.1023c.raw can be found
//
VW_RAW_DATA_PATH:PATH=NOTFOUND
########################
# INTERNAL cache entries
########################
//Advanced flag for variable: BUILD_FEM_MESH_EXAMPLE
BUILD_FEM_MESH_EXAMPLE-ADVANCED:INTERNAL=1
//Path to an executable
BrainStripValidationApp:INTERNAL=/sw/Insight_bin/Examples/IBSRValidation/At
lasSegmentation
//What flags are required by the c++ compiler to make it ansi.
CMAKE_ANSI_CFLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_ANSI_CFLAGS
CMAKE_ANSI_CFLAGS-ADVANCED:INTERNAL=1
//What flags are required by the c++ compiler to make it ansi.
CMAKE_ANSI_CXXFLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_ANSI_CXXFLAGS
CMAKE_ANSI_CXXFLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_AR loaded from external file. To change this
// value edit this file: /usr/local/include/vtk/CMakeCache.txt
CMAKE_AR:INTERNAL=/usr/bin/ar
//Advanced flag for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_AR_ARGS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_AR_ARGS:INTERNAL=cr
//Advanced flag for variable: CMAKE_AR_ARGS
CMAKE_AR_ARGS-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCahe.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=/sw/Insight_bin
//Major version of cmake used to create the current loaded cache
//
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=1
//Minor version of cmake used to create the current loaded cache
//
CMAKE_CACHE_MINOR_VERSION:INTERNAL=2
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=/sw/bin/cmake
//Is the compile GNU C++.
CMAKE_COMPILER_IS_GNUCXX:INTERNAL=1
//Advanced flag for variable: CMAKE_COMPILER_IS_GNUCXX
CMAKE_COMPILER_IS_GNUCXX-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_CXX_COMPILER loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_CXX_COMPILER:INTERNAL=c++
//Advanced flag for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_CXX_FLAGS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_CXX_FLAGS:INTERNAL=-g -O2
//DO NOT EDIT, CMAKE_C_COMPILER loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_C_COMPILER:INTERNAL=gcc
//Advanced flag for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_C_FLAGS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_C_FLAGS:INTERNAL=-g -O2
//DO NOT EDIT, CMAKE_DL_LIBS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_DL_LIBS:INTERNAL=
//Advanced flag for variable: CMAKE_DL_LIBS
CMAKE_DL_LIBS-ADVANCED:INTERNAL=1
//Advanced flag for variable: CMAKE_EXECUTABLE_SUFFIX
CMAKE_EXECUTABLE_SUFFIX-ADVANCED:INTERNAL=1
//Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
//Is X11 around.
CMAKE_HAS_X:INTERNAL=1
//DO NOT EDIT, CMAKE_HP_PTHREADS loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_HP_PTHREADS:INTERNAL=0
//Advanced flag for variable: CMAKE_HP_PTHREADS
CMAKE_HP_PTHREADS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_INSTALL_PREFIX loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
//DO NOT EDIT, CMAKE_LIB_EXT loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_LIB_EXT:INTERNAL=
//Advanced flag for variable: CMAKE_LIB_EXT
CMAKE_LIB_EXT-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_MAKE_PROGRAM loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_MAKE_PROGRAM:INTERNAL=/usr/bin/make
//Advanced flag for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_MODULE_BUILD_FLAGS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_MODULE_BUILD_FLAGS:INTERNAL=-bundle -flat_namespace -undefined
suppress
//Advanced flag for variable: CMAKE_MODULE_BUILD_FLAGS
CMAKE_MODULE_BUILD_FLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_MODULE_LINK_FLAGS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_MODULE_LINK_FLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_MODULE_LINK_FLAGS
CMAKE_MODULE_LINK_FLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_MODULE_SUFFIX loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_MODULE_SUFFIX:INTERNAL=.so
//Advanced flag for variable: CMAKE_MODULE_SUFFIX
CMAKE_MODULE_SUFFIX-ADVANCED:INTERNAL=1
//Does the compiler support ansi for scoping.
CMAKE_NO_ANSI_FOR_SCOPE:INTERNAL=
//Advanced flag for variable: CMAKE_NO_ANSI_FOR_SCOPE
CMAKE_NO_ANSI_FOR_SCOPE-ADVANCED:INTERNAL=1
//Does the compiler support headers like iostream.
CMAKE_NO_ANSI_STREAM_HEADERS:INTERNAL=
//Advanced flag for variable: CMAKE_NO_ANSI_STREAM_HEADERS
CMAKE_NO_ANSI_STREAM_HEADERS-ADVANCED:INTERNAL=1
//Does the compiler not support explicit template instantiation.
//
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION:INTERNAL=1
//Advanced flag for variable: CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION
//
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION-ADVANCED:INTERNAL=1
//Does the compiler support std::.
CMAKE_NO_STD_NAMESPACE:INTERNAL=
//Advanced flag for variable: CMAKE_NO_STD_NAMESPACE
CMAKE_NO_STD_NAMESPACE-ADVANCED:INTERNAL=1
//Advanced flag for variable: CMAKE_OBJECT_FILE_SUFFIX
CMAKE_OBJECT_FILE_SUFFIX-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_RANLIB loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_RANLIB:INTERNAL=ranlib
//Advanced flag for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=/sw/CMake-1.2
//DO NOT EDIT, CMAKE_SHLIB_BUILD_FLAGS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_BUILD_FLAGS:INTERNAL=-dynamiclib
//Advanced flag for variable: CMAKE_SHLIB_BUILD_FLAGS
CMAKE_SHLIB_BUILD_FLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_CFLAGS loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_CFLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_SHLIB_CFLAGS
CMAKE_SHLIB_CFLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_LD_LIBS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_LD_LIBS:INTERNAL=
//Advanced flag for variable: CMAKE_SHLIB_LD_LIBS
CMAKE_SHLIB_LD_LIBS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_LINK_FLAGS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_LINK_FLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_SHLIB_LINK_FLAGS
CMAKE_SHLIB_LINK_FLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_RUNTIME_FLAG loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_RUNTIME_FLAG:INTERNAL=
//Advanced flag for variable: CMAKE_SHLIB_RUNTIME_FLAG
CMAKE_SHLIB_RUNTIME_FLAG-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_RUNTIME_SEP loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_RUNTIME_SEP:INTERNAL=:
//Advanced flag for variable: CMAKE_SHLIB_RUNTIME_SEP
CMAKE_SHLIB_RUNTIME_SEP-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_SHLIB_SUFFIX loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SHLIB_SUFFIX:INTERNAL=.dylib
//Advanced flag for variable: CMAKE_SHLIB_SUFFIX
CMAKE_SHLIB_SUFFIX-ADVANCED:INTERNAL=1
//Size of char data type
CMAKE_SIZEOF_CHAR:INTERNAL=1
//Size of double data type
CMAKE_SIZEOF_DOUBLE:INTERNAL=8
//Size of float data type
CMAKE_SIZEOF_FLOAT:INTERNAL=4
//Size of int data type
CMAKE_SIZEOF_INT:INTERNAL=4
//Size of long data type
CMAKE_SIZEOF_LONG:INTERNAL=4
//Size of short data type
CMAKE_SIZEOF_SHORT:INTERNAL=2
//Size of void* data type
CMAKE_SIZEOF_VOID_P:INTERNAL=4
//DO NOT EDIT, CMAKE_SKIP_RPATH loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_SKIP_RPATH:INTERNAL=NO
//Advanced flag for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//Advanced flag for variable: CMAKE_STATICLIB_SUFFIX
CMAKE_STATICLIB_SUFFIX-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_TEMPLATE_FLAGS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_TEMPLATE_FLAGS:INTERNAL=
//Advanced flag for variable: CMAKE_TEMPLATE_FLAGS
CMAKE_TEMPLATE_FLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_THREAD_LIBS loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_THREAD_LIBS:INTERNAL=-lpthread
//Advanced flag for variable: CMAKE_THREAD_LIBS
CMAKE_THREAD_LIBS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_USE_PTHREADS loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_USE_PTHREADS:INTERNAL=1
//Advanced flag for variable: CMAKE_USE_PTHREADS
CMAKE_USE_PTHREADS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_USE_SPROC loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_USE_SPROC:INTERNAL=0
//Advanced flag for variable: CMAKE_USE_SPROC
CMAKE_USE_SPROC-ADVANCED:INTERNAL=1
//Advanced flag for variable: CMAKE_USE_WIN32_THREADS
CMAKE_USE_WIN32_THREADS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_WORDS_BIGENDIAN loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
CMAKE_WORDS_BIGENDIAN:INTERNAL=1
//Advanced flag for variable: CMAKE_WORDS_BIGENDIAN
CMAKE_WORDS_BIGENDIAN-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_X_CFLAGS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_X_CFLAGS:INTERNAL= -I/usr/X11R6/include
//Advanced flag for variable: CMAKE_X_CFLAGS
CMAKE_X_CFLAGS-ADVANCED:INTERNAL=1
//DO NOT EDIT, CMAKE_X_LIBS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
CMAKE_X_LIBS:INTERNAL=' -lSM -lICE -L/usr/X11R6/lib -lX11 -lXext '
//Advanced flag for variable: CMAKE_X_LIBS
CMAKE_X_LIBS-ADVANCED:INTERNAL=1
//DO NOT EDIT, DART_ROOT loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
DART_ROOT:INTERNAL=NOTFOUND
//Path to a library
FEM:INTERNAL=/sw/Insight_bin/Code/Numerics/FEM
//Path to an executable
FEMImageRegEx:INTERNAL=/sw/Insight_bin/Examples/FEM
//Path to an executable
FEMRead:INTERNAL=/sw/Insight_bin/Examples/FEM
//Path to an executable
FEMTruss:INTERNAL=/sw/Insight_bin/Examples/FEM
//Whether a library is static, shared or module.
FEM_LIBRARY_TYPE:INTERNAL=SHARED
//Advanced flag for variable: FLTK_FLUID_EXE
FLTK_FLUID_EXE-ADVANCED:INTERNAL=0
//Advanced flag for variable: FLTK_INCLUDE_PATH
FLTK_INCLUDE_PATH-ADVANCED:INTERNAL=0
//Advanced flag for variable: FLTK_LIBRARY
FLTK_LIBRARY-ADVANCED:INTERNAL=0
//Path to an executable
FuzzyConnectedness:INTERNAL=/sw/Insight_bin/Examples/FuzzyConnectedness
//Support for FEM
HAS_FEM:INTERNAL=1
//FLTK library, headers and Fluid are available
HAS_FLTK:INTERNAL=1
//no FLTK image support
HAS_FLTKIMAGEVIEWER:INTERNAL=0
//no meta image support
HAS_METAIMAGE:INTERNAL=0
//no vtkFlWindowInteractor image support
HAS_VTK_FLTK_WINDOW_INTERACTOR:INTERNAL=0
//VTK Hybrid libraries are available
HAS_VTK_HYBRID:INTERNAL=1
//Path to a library
ITKBasicFilters:INTERNAL=/sw/Insight_bin/Code/BasicFilters
//Whether a library is static, shared or module.
ITKBasicFilters_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
ITKCommon:INTERNAL=/sw/Insight_bin/Code/Common
//Whether a library is static, shared or module.
ITKCommon_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
ITKIO:INTERNAL=/sw/Insight_bin/Code/IO
//Whether a library is static, shared or module.
ITKIO_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
ITKNumerics:INTERNAL=/sw/Insight_bin/Code/Numerics
//Whether a library is static, shared or module.
ITKNumerics_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
ITKSpatialObject:INTERNAL=/sw/Insight_bin/Code/SpatialObject
//Whether a library is static, shared or module.
ITKSpatialObject_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
ITKStatistics:INTERNAL=/sw/Insight_bin/Code/Numerics/Statistics
//Whether a library is static, shared or module.
ITKStatistics_LIBRARY_TYPE:INTERNAL=SHARED
//Path to an executable
MIValidationApp:INTERNAL=/sw/Insight_bin/Examples/MIValidation
//Path to an executable
MultiResMIRegistration:INTERNAL=/sw/Insight_bin/Examples/MultiResMIRegistra
tion
//DO NOT EDIT, OPENGL_INCLUDE_PATH loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
OPENGL_INCLUDE_PATH:INTERNAL=/usr/include
//DO NOT EDIT, OPENGL_LIBRARY loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
OPENGL_LIBRARY:INTERNAL=-framework OpenGL -framework AGL -framework Cocoa
//Path to an executable
RawImageReadWrite:INTERNAL=/sw/Insight_bin/Examples/RawImageReadWrite
//Path to an executable
ShapeDetection:INTERNAL=/sw/Insight_bin/Examples/ShapeDetection
//DO NOT EDIT, VTKJPEG_BINARY_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKJPEG_BINARY_DIR:INTERNAL=/sw/VTK/Utilities/jpeg
//DO NOT EDIT, VTKJPEG_SOURCE_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKJPEG_SOURCE_DIR:INTERNAL=/sw/VTK/Utilities/jpeg
//DO NOT EDIT, VTKPNG_BINARY_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKPNG_BINARY_DIR:INTERNAL=/sw/VTK/Utilities/png
//DO NOT EDIT, VTKPNG_SOURCE_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKPNG_SOURCE_DIR:INTERNAL=/sw/VTK/Utilities/png
//DO NOT EDIT, VTKZLIB_BINARY_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKZLIB_BINARY_DIR:INTERNAL=/sw/VTK/Utilities/zlib
//DO NOT EDIT, VTKZLIB_SOURCE_DIR loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTKZLIB_SOURCE_DIR:INTERNAL=/sw/VTK/Utilities/zlib
//DO NOT EDIT, VTK_BINARY_DIR loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_BINARY_DIR:INTERNAL=/sw/VTK
//DO NOT EDIT, VTK_BUILD_SHARED_LIBS loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
VTK_BUILD_SHARED_LIBS:INTERNAL=ON
//DO NOT EDIT, VTK_DATA_ROOT loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_DATA_ROOT:INTERNAL=NOTFOUND
//DO NOT EDIT, VTK_DEBUG_LEAKS loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_DEBUG_LEAKS:INTERNAL=OFF
//DO NOT EDIT, VTK_LIBRARY_PATH loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_LIBRARY_PATH:INTERNAL=/sw/VTK/bin
//DO NOT EDIT, VTK_MANGLE_MESA loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_MANGLE_MESA:INTERNAL=OFF
//DO NOT EDIT, VTK_OPENGL_HAS_OSMESA loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
VTK_OPENGL_HAS_OSMESA:INTERNAL=OFF
//DO NOT EDIT, VTK_SOURCE_DIR loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_SOURCE_DIR:INTERNAL=/sw/VTK
//DO NOT EDIT, VTK_USE_64BIT_IDS loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_64BIT_IDS:INTERNAL=OFF
//DO NOT EDIT, VTK_USE_ANSI_STDLIB loaded from external file.
// To change this value edit this file:
/usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_ANSI_STDLIB:INTERNAL=OFF
//DO NOT EDIT, VTK_USE_HYBRID loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_HYBRID:INTERNAL=ON
//DO NOT EDIT, VTK_USE_MPI loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_MPI:INTERNAL=OFF
//DO NOT EDIT, VTK_USE_PARALLEL loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_PARALLEL:INTERNAL=ON
//DO NOT EDIT, VTK_USE_PATENTED loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_PATENTED:INTERNAL=OFF
//DO NOT EDIT, VTK_USE_QUARTZ loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_QUARTZ:INTERNAL=ON
//DO NOT EDIT, VTK_USE_RENDERING loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_RENDERING:INTERNAL=ON
//DO NOT EDIT, VTK_USE_VOLUMEPRO loaded from external file. To
// change this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_VOLUMEPRO:INTERNAL=OFF
//DO NOT EDIT, VTK_USE_X loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_USE_X:INTERNAL=OFF
//DO NOT EDIT, VTK_WRAP_JAVA loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_WRAP_JAVA:INTERNAL=OFF
//DO NOT EDIT, VTK_WRAP_PYTHON loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_WRAP_PYTHON:INTERNAL=OFF
//DO NOT EDIT, VTK_WRAP_TCL loaded from external file. To change
// this value edit this file: /usr/local/include/vtk/CMakeCache.txt
//
VTK_WRAP_TCL:INTERNAL=OFF
//Path to a library
VXLNumerics:INTERNAL=/sw/Insight_bin/Code/Numerics/vxl
//Whether a library is static, shared or module.
VXLNumerics_LIBRARY_TYPE:INTERNAL=SHARED
//Path to an executable
itk2DSimpleLevelSetsExample:INTERNAL=/sw/Insight_bin/Examples/SimpleLevelSe
tsExample
//Path to an executable
itk3DSimpleLevelSetsExample:INTERNAL=/sw/Insight_bin/Examples/SimpleLevelSe
tsExample
//Path to an executable
itkAlgorithmsHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/Algorithms
//Path to an executable
itkAlgorithmsTests:INTERNAL=/sw/Insight_bin/Testing/Code/Algorithms
//Path to an executable
itkAntiAliasBinaryImageFilterExample:INTERNAL=/sw/Insight_bin/Examples/Anti
AliasBinaryImageFilter
//Path to an executable
itkBasicFiltersHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/BasicFilters
//Path to an executable
itkBasicFiltersTests:INTERNAL=/sw/Insight_bin/Testing/Code/BasicFilters
//Path to an executable
itkCommonHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/Common
//Path to an executable
itkCommonTests:INTERNAL=/sw/Insight_bin/Testing/Code/Common
//Path to an executable
itkEllipsoidInteriorExteriorSpatialFunctionExample:INTERNAL=/sw/Insight_bin
/Examples/EllipsoidInteriorExteriorSpatialFunction
//Path to an executable
itkFEMTests:INTERNAL=/sw/Insight_bin/Testing/Code/Numerics/FEM
//Path to an executable
itkFloodFilledSpatialFunctionExample:INTERNAL=/sw/Insight_bin/Examples/Floo
dFilledSpatialFunction
//Path to an executable
itkIOHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/IO
//Path to an executable
itkIOTests:INTERNAL=/sw/Insight_bin/Testing/Code/IO
//Path to an executable
itkNumericsHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/Numerics
//Path to an executable
itkNumericsTests:INTERNAL=/sw/Insight_bin/Testing/Code/Numerics
//Path to an executable
itkPrincipalAxesResampler:INTERNAL=/sw/Insight_bin/Examples/PrincipalAxes
//Path to an executable
itkSampleDataGenerator:INTERNAL=/sw/Insight_bin/Examples/AntiAliasBinaryIma
geFilter
//Path to an executable
itkSpatialObjectHeaderTest:INTERNAL=/sw/Insight_bin/Testing/Code/SpatialObj
ect
//Path to an executable
itkSpatialObjectTests:INTERNAL=/sw/Insight_bin/Testing/Code/SpatialObject
//Path to an executable
itkStatisticsTests:INTERNAL=/sw/Insight_bin/Testing/Code/Numerics/Statistics
//Path to an executable
itkSymmetricEllipsoidInteriorExteriorSpatialFunctionExample:INTERNAL=/sw/In
sight_bin/Examples/SymmetricEllipsoidInteriorExteriorSpatialFunction
//Path to an executable
itkWSRawToPNG:INTERNAL=/sw/Insight_bin/Examples/WatershedSegmentation
//Path to an executable
itkWatershedSegmentationExample:INTERNAL=/sw/Insight_bin/Examples/Watershed
Segmentation
//Path to a library
itkpng:INTERNAL=/sw/Insight_bin/Utilities/png
//Whether a library is static, shared or module.
itkpng_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
itkzlib:INTERNAL=/sw/Insight_bin/Utilities/zlib
//Whether a library is static, shared or module.
itkzlib_LIBRARY_TYPE:INTERNAL=SHARED
//Path to a library
param:INTERNAL=/sw/Insight_bin/Examples/StreamedWatershedSegmentation/Param
eterFileParser
//Whether a library is static, shared or module.
param_LIBRARY_TYPE:INTERNAL=SHARED
//Path to an executable
vnlTests:INTERNAL=/sw/Insight_bin/Testing/Code/Numerics/vxl/vnl/tests
From luis.ibanez@kitware.com Sun Jun 23 20:52:57 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Sun, 23 Jun 2002 15:52:57 -0400
Subject: [Insight-users] Re: How to put Thinplatespline into the automatic registration framework?
References: <3CFC52C3.2070809@kitware.com> <000801c21acd$58291360$1223bd89@ee.cuhk.edu.hk>
Message-ID: <3D162719.3050004@kitware.com>
Hi zhangzhijun
Short answer = Yes,
You can use ThinPlateSpline transforms with the registration framework
--
Long answer:
The ThinPlateSpline transform derives from the itkTransform.
This is the only requirement for using it as part of the
registration framework and/or the multi-resolution registration
framework.
This is valid also for all the ITK transforms in the family
of the SplineKernelTransform:
http://www.itk.org/Insight/Doxygen/html/classitk_1_1KernelTransform.html
That is:
- ThinPlateSplineKernelTransform
- ThinPlateR2LogRSplineKernelTransform
- ElasticBodySplineKernelTransform
- ElasticBodyReciprocalSplineKernelTransform
- VolumeSplineKernelTransform
The Geometrical aspect of these transforms can be analyzed with
the ThinPlateSplines example in the Insight/Examples directory.
Where a set of landmarks is mapped from one space to another
and results are compared between VTK transforms and ITK Transforms.
This example also allows to benchmark the transform.
The ITK registration framework allow you to combine any
transform, with any Image metric and any Optimizer.
However, some optimizers may be better adapted to the shape of
the function resulting from the evaluation of the metric near
the optimal position.
You can even replace the Optimization method at run time if
you wish to create a particular optimization strategy.
Note that SplineKernelTransform will have a large number
of parameters !!
While an AffineTransform in 3D has 12 parameters, a
SplineKernelTransform will have 3*N (where N is the number of
landmarks used to define the transform). So, let's say that
you have selected a set of 20 landmarks in the fixed image,
and the corresponding 20 landmarks in the moving image.
The dimension of the search space in this case will be 60.
The registration will be done by optimizing the landmak positions
on the moving image. The cost function of the optimization
can be any of the Image metrics already defined in ITK, or
you can define your own.
Note also that as opossed to FEM or PDE deformable registration
approaches here you will not be introducing any regularization
strategy other than the natural smoothing done by the Splines.
Powell's optimization method could be good for initial trials
since you will be able to trace how the registration progress
by optimizing each one of the landmark coordinates at a time.
However it may not be the best optimization approach for the
long run. Probably a ConjugateGradient will behave better
since it will take into account the mutual interactions
resuling from the cross-talk between the landmarks due to
the Spline smooting.
The Powell optimization method is not currently implemented
in ITK. It shouldn't be hard to get it done since the Regular
StepGradientDescent is already there. It is in some way
equivalent to run the Regular Step Gradient descent but
one dimension (one transform parameter) at a time. If you
are motivated to implement it, we will be glad to give you
a hand for doing so.
Please let us know if you encounter any problems.
Thanks
Luis
=========================================================
zhangzhijun wrote:
> Dear Luis:
> I see in the files in the document attached with the ITK
package
> there is a poster about the automatic registration.
> I am wondering how to put the TPS into an automatic registration
framework ?
> Can I use it with the Powell's method and
> steepest decent optimization method?
>
> regards,
> zhang zhijun
>
>
>
From luis.ibanez@kitware.com Sun Jun 23 21:10:41 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Sun, 23 Jun 2002 16:10:41 -0400
Subject: [Insight-users] Re: More on : How to put Thinplatespline into the automatic registration framework?
References: <3CFC52C3.2070809@kitware.com> <000801c21acd$58291360$1223bd89@ee.cuhk.edu.hk>
Message-ID: <3D162B41.1010605@kitware.com>
Hi zhangzhijun
You may also want to look at the recently added example:
MutualInformationEuler2DRegistration
(the name is missleading since it was originally intended
to do only Rigid2D registration. It has however been
extended to include other four types of transforms)
After your email I added a class for illustrating how
to use ThinPlateSplines in this framework. Note that
this is only for illustrating how to configure the code !
it is not fully operational since it is missing the
landmark initialization.
(look at the MIThinPlateSplineRegistrator.h and .txx)
You may probably want to play with the GUI in order
to define landmarka by allowing the user to interactively
click on the fixed and moving images.
Please let us know if you have any further questions.
Thanks
Luis
From luis.ibanez@kitware.com Mon Jun 24 04:35:06 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Sun, 23 Jun 2002 23:35:06 -0400
Subject: [Insight-users] Re: More on : How to put Thinplatespline into the automatic registration framework?
References: <3CFC52C3.2070809@kitware.com> <000801c21acd$58291360$1223bd89@ee.cuhk.edu.hk> <3D162B41.1010605@kitware.com> <001801c21b22$9fb9ff00$1223bd89@ee.cuhk.edu.hk>
Message-ID: <3D16936A.1010609@kitware.com>
Hi zhangzhijun
ITK is GUI independent
You can use it with MFC, Qt, Gtk or wxWindows...
Just use the Command/Observer mechanism for
communicating with the GUI by passing itk::Events
around.
The reasons why the examples in itk use
FLTK as GUI are:
1) FLTK is Multiplatform
2) FLTK is Open Source
3) FLTK is Compact (small)
We could not use MFC examples in Unix,
or Motif examples in Windows.
Note that in ITK *ONLY* the Examples use FLTK.
The rest of the tookit is GUI independent and
visualization independent. We went through great
pains to make it that way so anybody could use
it with its favorite GUI and visualization library.
If you would like to contribute any MFC Examples
we will be glad to add them to the toolkit
(with the corresponding CMake flags to build
them only under Windows).
Thanks
Luis
====================================
zhangzhijun wrote:
> Dear Luis:
> Thank you very much. I want to know why itk use the fltk as gui
> but not use MFC, I feel fltk gui is
> complexed.
>
> regards,
> zhang zhijun
From galicjan@yahoo.com Mon Jun 24 16:03:41 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Mon, 24 Jun 2002 08:03:41 -0700 (PDT)
Subject: [Insight-users] How to redirect debug output on Windows or cygwin?
Message-ID: <20020624150341.15389.qmail@web20907.mail.yahoo.com>
Is there a way to redirect debug output?
In particular, when running on Windows using either VC++ or cygwin, the
debug information is displayed in a separate window that disappears when
program exits. I would like to be able to simply print debug information
to standard output (that is the same way std::cout is printing). Is there
a way to reconfigure debug to do this?
Thanks,
Jarek
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From luis.ibanez@kitware.com Mon Jun 24 16:34:03 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Mon, 24 Jun 2002 11:34:03 -0400
Subject: [Insight-users] How to redirect debug output on Windows or cygwin?
References: <20020624150341.15389.qmail@web20907.mail.yahoo.com>
Message-ID: <3D173BEB.9010704@kitware.com>
Hi Jarek,
You may want to try:
itk::OutputWindow::SetInstance(itk::TextOutput::New().GetPointer());
before sending any output.
This is used in the tests in: Insight/Testing/Code/Algorithms/
itkCurvatureFlowTest.cxx
itkFastMarchingTest.cxx
itkImageRegistrationMethodTest_13.cxx
itkImageRegistrationMethodTest_14.cxx
itkImageRegistrationMethodTest.cxx
itkMultiResolutionImageRegistrationMethodTest_1.cxx
itkMultiResolutionImageRegistrationMethodTest_2.cxx
itkMultiResolutionImageRegistrationMethodTest.cxx
itkRegionGrow2DTest.cxx
Regards,
Luis
============================================
Jarek Sacha wrote:
> Is there a way to redirect debug output?
> In particular, when running on Windows using either VC++ or cygwin, the
> debug information is displayed in a separate window that disappears when
> program exits. I would like to be able to simply print debug information
> to standard output (that is the same way std::cout is printing). Is there
> a way to reconfigure debug to do this?
>
> Thanks,
>
> Jarek
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! - Official partner of 2002 FIFA World Cup
> http://fifaworldcup.yahoo.com
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
From galicjan@yahoo.com Mon Jun 24 17:07:26 2002
From: galicjan@yahoo.com (Jarek Sacha)
Date: Mon, 24 Jun 2002 09:07:26 -0700 (PDT)
Subject: [Insight-users] How to redirect debug output on Windows or cygwin?
In-Reply-To: <3D173BEB.9010704@kitware.com>
Message-ID: <20020624160726.17314.qmail@web20903.mail.yahoo.com>
--- Luis Ibanez wrote:
>
> Hi Jarek,
>
> You may want to try:
>
> itk::OutputWindow::SetInstance(itk::TextOutput::New().GetPointer());
>
> before sending any output.
Thanks it works well now.
By the way, it would be a good idea to move itkTextOutput.h from
Text/Code/Algorithms to Code/Algorithms and|or add TextOutput to doxygen
documentation. This will help those who look for it in the documentation.
Jarek
>
>
> This is used in the tests in: Insight/Testing/Code/Algorithms/
>
> itkCurvatureFlowTest.cxx
> itkFastMarchingTest.cxx
> itkImageRegistrationMethodTest_13.cxx
> itkImageRegistrationMethodTest_14.cxx
> itkImageRegistrationMethodTest.cxx
> itkMultiResolutionImageRegistrationMethodTest_1.cxx
> itkMultiResolutionImageRegistrationMethodTest_2.cxx
> itkMultiResolutionImageRegistrationMethodTest.cxx
> itkRegionGrow2DTest.cxx
>
>
> Regards,
>
>
> Luis
>
> ============================================
>
> Jarek Sacha wrote:
>
> > Is there a way to redirect debug output?
> > In particular, when running on Windows using either VC++ or cygwin,
> the
> > debug information is displayed in a separate window that disappears
> when
> > program exits. I would like to be able to simply print debug
> information
> > to standard output (that is the same way std::cout is printing). Is
> there
> > a way to reconfigure debug to do this?
> >
> > Thanks,
> >
> > Jarek
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! - Official partner of 2002 FIFA World Cup
> > http://fifaworldcup.yahoo.com
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-users
> >
> >
>
>
>
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From Sebastian Fiorentini Wed Jun 26 13:52:41 2002
From: Sebastian Fiorentini (Sebastian Fiorentini)
Date: Wed, 26 Jun 2002 09:52:41 -0300
Subject: [Insight-users] FLTK
Message-ID: <537428281.20020626095241@yahoo.com.ar>
Hello..
Anyone tried FLTK 2.0 and VTK? (fltk widget that interfaces to VTK)..
Any suggestions?
Saludos...Sebas..
sebasfiorent@yahoo.com.ar
From luis.ibanez@kitware.com Wed Jun 26 14:28:15 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Wed, 26 Jun 2002 09:28:15 -0400
Subject: [Insight-users] FLTK
References: <537428281.20020626095241@yahoo.com.ar>
Message-ID: <3D19C16F.4090103@kitware.com>
Hi Sebastian,
We have recently modified ITK and CMake
to support both FLTK 1.1 and FLTK 1.0.11.
The vtkFlRenderWindowInteractor in:
Insight/Auxiliary/VtkFltk
was also updated two days ago to the latest
release (0.8) made by the author Charl Botha.
I'm not aware of any FLTK 2.0 attempts but
it shouldn't be too hard to set it up.
If you want to give it a shoot a good place
to start is the CMake file:
FindFLTK.cmake in the directory CMake/Modules
then the CMakeLists.txt file in the Insight root
directory.
Note that ITK itself is GUI independent.
FLTK is used only on some of the examples with
the aim of illustrating how to build full
fledged applications with ITK.
Please let us know if you need any help.
Thanks
Luis
===========================================
Sebastian Fiorentini wrote:
> Hello..
>
> Anyone tried FLTK 2.0 and VTK? (fltk widget that interfaces to VTK)..
>
> Any suggestions?
>
> Saludos...Sebas..
> sebasfiorent@yahoo.com.ar
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>
>
From luis.ibanez@kitware.com Wed Jun 26 14:39:45 2002
From: luis.ibanez@kitware.com (Luis Ibanez)
Date: Wed, 26 Jun 2002 09:39:45 -0400
Subject: [Insight-users] Re: Confirmation on the output
References: <000d01c2147f$2fb9e7f0$5033b801@macinfo.net> <3D0B6E60.9000203@kitware.com> <003501c217a3$35c1da00$5033b801@macinfo.net> <3D132B80.8020700@kitware.com> <003f01c21cd7$a319d240$5033b801@macinfo.net>
Message-ID: <3D19C421.20905@kitware.com>
Hi cspl,
The errors that you got are related with files generated by FLTK.
"fluid" is an interactive utility from FLTK that allow you to
create GUI's and generate C++ for them.
Downloading a binary version of fluid.exe is not enough.
You will have to fully install FLTK.
This is not too hard. Just download the sources from:
http://www.fltk.org
They will build without trouble in Windows and Unix.
You can select either FLTK 1.1 or 1.0.11.
Once you compile and install FLTK, you can run CMake and
enable "USE_FLTK", Then Select
"USE_FLTK_VERSION_1.0.11" or "USE_FLTK_VERSION_1.1"
Then make sure that you provide CMake with the paths for
- fluid.exe
- the header files
- the libraries
Please let us know if you encounter any problems
Thanks
Luis
====================================================
cspl wrote:
> Dear Mr.Luis,
> I was experimenting the example you asked to me to work on..
>
> I got problem while building GaussianFilter2D example. I am
> writing herewith the steps I followed. Please,suggest me steps
> to solve the problem
>
> 1.When I tried to compile the example it gave compiler error
> 'unable to open fltkIma2DviewrGUI.h and lifilterconsole2DGUI.h'.
>
> 2.To make these files from fltkIma2DviewrGUI.FL and
> lifilterconsole2DGUI.FL, I have downloaded FLUID.exe((updated:
> Jun-23-2001).
>
> 3.Using the command 'fluid.exe -c filename.FL' i got required .h and .cxx
> files from fltkIma2DviewrGUI.FL and lifilterconsole2DGUI.FL.
>
> 4.While building ITK.dsw for libs, encountered a problem, but
> fltkimageviewer.lib was genereated but several linking errorshave occured.
>
> problem was while linking Imageregistration,Imageregistration2D examples .As
> I have got the fltkimageviewer.lib ,I used it with out solving the linking
> errors.
>
> Actually,I don't know how to solve it.
>
> 5.After this when I tried to build the Gaussianfilter2D example it is
> giving linking error as given below.
>
> Linking...
> GaussianFilter2D.obj : error LNK2001: unresolved external symbol "public:
> __thiscall liFilterConsole2D::liFilterConsole2D(void)"
> (??0liFilterConsole2D@@QAE@XZ)
> Debug/fltkGaussian.exe : fatal error LNK1120: 1 unresolved externals
> Error executing link.exe.
>
> fltkGaussian.exe - 2 error(s), 47 warning(s)
>
> Project Settings:
>
> Preprocessor definitions:
>
> WIN32,_DEBUG,_WINDOWS,WIN32_LEAN_AND_MEAN,VC_EXTRA_LEAN,WIN32_EXTRA_LEAN
>
> Project Options:
>
> /nologo /MDd /GX /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D
> "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "WIN32_EXTRA_LEAN"
> /Fp"shape_/shape.pch" /YX /Fo"shape_/" /Fd"shape_/" /FD /Zm200/Od /c
>
> object/library modules:
>
> opengl32.lib fltkd.lib wsock32.lib comctl32.lib kernel32.lib user32.lib
> gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib
> oleaut32.lib uuid.lib MetaImageIO.lib fltkimageviewer.lib Iview.lib
>
> Please suggest me the course of action.
>
> Regards,
> cspl
>
>
>
> ----- Original Message -----
> From: "Luis Ibanez"
> To: "cspl" ;
> Sent: Friday, June 21, 2002 7:04 PM
> Subject: Re: Confirmation on the output
>
>
>
From bahrahm@yahoo.com Wed Jun 26 19:49:35 2002
From: bahrahm@yahoo.com (Jisung Kim)
Date: Wed, 26 Jun 2002 11:49:35 -0700 (PDT)
Subject: [Insight-users] Re: Confirmation on the output
In-Reply-To: <3D19C421.20905@kitware.com>
Message-ID: <20020626184935.27588.qmail@web10102.mail.yahoo.com>
Hi cspl,
If you want to build every examples included in ITK
and are using Windows, please check my step-by-step
instruction for ITK installation on Windows <
http://caddlab.rad.unc.edu/publications/Tutorials/Summer-02/itk_windows_installation.pdf
>
Unfortunately, if you want to use FLTK 1.1 with
CMakeSetup, you need to download CMake source code and
build it by yourself. However, to just build ITK
examples, you don't need FLTK 1.1. FLTK 1.0.11 will
do.
Thanks.
Jisung Kim.
--- Luis Ibanez wrote:
>
>
> Hi cspl,
>
>
> The errors that you got are related with files
> generated by FLTK.
>
> "fluid" is an interactive utility from FLTK that
> allow you to
> create GUI's and generate C++ for them.
>
> Downloading a binary version of fluid.exe is not
> enough.
>
> You will have to fully install FLTK.
>
> This is not too hard. Just download the sources
> from:
>
> http://www.fltk.org
>
> They will build without trouble in Windows and Unix.
>
> You can select either FLTK 1.1 or 1.0.11.
>
> Once you compile and install FLTK, you can run CMake
> and
> enable "USE_FLTK", Then Select
>
> "USE_FLTK_VERSION_1.0.11" or
> "USE_FLTK_VERSION_1.1"
>
> Then make sure that you provide CMake with the paths
> for
>
> - fluid.exe
> - the header files
> - the libraries
>
> Please let us know if you encounter any problems
>
>
> Thanks
>
>
> Luis
>
> ====================================================
>
> cspl wrote:
>
> > Dear Mr.Luis,
> > I was experimenting the example you asked to
> me to work on..
> >
> > I got problem while building
> GaussianFilter2D example. I am
> > writing herewith the steps I followed.
> Please,suggest me steps
> > to solve the problem
> >
> > 1.When I tried to compile the example it gave
> compiler error
> > 'unable to open fltkIma2DviewrGUI.h and
> lifilterconsole2DGUI.h'.
> >
> > 2.To make these files from
> fltkIma2DviewrGUI.FL and
> > lifilterconsole2DGUI.FL, I have downloaded
> FLUID.exe((updated:
> > Jun-23-2001).
> >
> > 3.Using the command 'fluid.exe -c filename.FL' i
> got required .h and .cxx
> > files from fltkIma2DviewrGUI.FL and
> lifilterconsole2DGUI.FL.
> >
> > 4.While building ITK.dsw for libs, encountered a
> problem, but
> > fltkimageviewer.lib was genereated but several
> linking errorshave occured.
> >
> > problem was while linking
> Imageregistration,Imageregistration2D examples .As
> > I have got the fltkimageviewer.lib ,I used it with
> out solving the linking
> > errors.
> >
> > Actually,I don't know how to solve it.
> >
> > 5.After this when I tried to build the
> Gaussianfilter2D example it is
> > giving linking error as given below.
> >
> > Linking...
> > GaussianFilter2D.obj : error LNK2001: unresolved
> external symbol "public:
> > __thiscall
> liFilterConsole2D::liFilterConsole2D(void)"
> > (??0liFilterConsole2D@@QAE@XZ)
> > Debug/fltkGaussian.exe : fatal error LNK1120: 1
> unresolved externals
> > Error executing link.exe.
> >
> > fltkGaussian.exe - 2 error(s), 47 warning(s)
> >
> > Project Settings:
> >
> > Preprocessor definitions:
> >
> >
>
WIN32,_DEBUG,_WINDOWS,WIN32_LEAN_AND_MEAN,VC_EXTRA_LEAN,WIN32_EXTRA_LEAN
> >
> > Project Options:
> >
> > /nologo /MDd /GX /I "." /I ".." /D "WIN32" /D
> "_DEBUG" /D "_WINDOWS" /D
> > "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D
> "WIN32_EXTRA_LEAN"
> > /Fp"shape_/shape.pch" /YX /Fo"shape_/"
> /Fd"shape_/" /FD /Zm200/Od /c
> >
> > object/library modules:
> >
> > opengl32.lib fltkd.lib wsock32.lib comctl32.lib
> kernel32.lib user32.lib
> > gdi32.lib winspool.lib comdlg32.lib advapi32.lib
> shell32.lib ole32.lib
> > oleaut32.lib uuid.lib MetaImageIO.lib
> fltkimageviewer.lib Iview.lib
> >
> > Please suggest me the course of action.
> >
> > Regards,
> > cspl
> >
> >
> >
> > ----- Original Message -----
> > From: "Luis Ibanez"
> > To: "cspl" ;
>
> > Sent: Friday, June 21, 2002 7:04 PM
> > Subject: Re: Confirmation on the output
> >
> >
> >
>
>
> _______________________________________________
> 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! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
From mmalat@imaging.robarts.ca Wed Jun 26 21:40:19 2002
From: mmalat@imaging.robarts.ca (Mathieu Malaterre)
Date: Wed, 26 Jun 2002 16:40:19 -0400
Subject: [Insight-users] Re: Confirmation on the output
References: <20020626184935.27588.qmail@web10102.mail.yahoo.com>
Message-ID: <3D1A26B3.EB768C84@imaging.robarts.ca>
This is a multi-part message in MIME format.
--------------465D9AD2E100F8F22FA26186
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi all,
It would be nice if those kind of help would be accessible from a link page from itk.org
website.
What do you think ?
Thanks
Mathieu
Jisung Kim wrote:
> Hi cspl,
>
> If you want to build every examples included in ITK
> and are using Windows, please check my step-by-step
> instruction for ITK installation on Windows <
> http://caddlab.rad.unc.edu/publications/Tutorials/Summer-02/itk_windows_installation.pdf
> >
>
> Unfortunately, if you want to use FLTK 1.1 with
> CMakeSetup, you need to download CMake source code and
> build it by yourself. However, to just build ITK
> examples, you don't need FLTK 1.1. FLTK 1.0.11 will
> do.
>
> Thanks.
>
> Jisung Kim.
>
> --- Luis Ibanez wrote:
> >
> >
> > Hi cspl,
> >
> >
> > The errors that you got are related with files
> > generated by FLTK.
> >
> > "fluid" is an interactive utility from FLTK that
> > allow you to
> > create GUI's and generate C++ for them.
> >
> > Downloading a binary version of fluid.exe is not
> > enough.
> >
> > You will have to fully install FLTK.
> >
> > This is not too hard. Just download the sources
> > from:
> >
> > http://www.fltk.org
> >
> > They will build without trouble in Windows and Unix.
> >
> > You can select either FLTK 1.1 or 1.0.11.
> >
> > Once you compile and install FLTK, you can run CMake
> > and
> > enable "USE_FLTK", Then Select
> >
> > "USE_FLTK_VERSION_1.0.11" or
> > "USE_FLTK_VERSION_1.1"
> >
> > Then make sure that you provide CMake with the paths
> > for
> >
> > - fluid.exe
> > - the header files
> > - the libraries
> >
> > Please let us know if you encounter any problems
> >
> >
> > Thanks
> >
> >
> > Luis
> >
> > ====================================================
> >
> > cspl wrote:
> >
> > > Dear Mr.Luis,
> > > I was experimenting the example you asked to
> > me to work on..
> > >
> > > I got problem while building
> > GaussianFilter2D example. I am
> > > writing herewith the steps I followed.
> > Please,suggest me steps
> > > to solve the problem
> > >
> > > 1.When I tried to compile the example it gave
> > compiler error
> > > 'unable to open fltkIma2DviewrGUI.h and
> > lifilterconsole2DGUI.h'.
> > >
> > > 2.To make these files from
> > fltkIma2DviewrGUI.FL and
> > > lifilterconsole2DGUI.FL, I have downloaded
> > FLUID.exe((updated:
> > > Jun-23-2001).
> > >
> > > 3.Using the command 'fluid.exe -c filename.FL' i
> > got required .h and .cxx
> > > files from fltkIma2DviewrGUI.FL and
> > lifilterconsole2DGUI.FL.
> > >
> > > 4.While building ITK.dsw for libs, encountered a
> > problem, but
> > > fltkimageviewer.lib was genereated but several
> > linking errorshave occured.
> > >
> > > problem was while linking
> > Imageregistration,Imageregistration2D examples .As
> > > I have got the fltkimageviewer.lib ,I used it with
> > out solving the linking
> > > errors.
> > >
> > > Actually,I don't know how to solve it.
> > >
> > > 5.After this when I tried to build the
> > Gaussianfilter2D example it is
> > > giving linking error as given below.
> > >
> > > Linking...
> > > GaussianFilter2D.obj : error LNK2001: unresolved
> > external symbol "public:
> > > __thiscall
> > liFilterConsole2D::liFilterConsole2D(void)"
> > > (??0liFilterConsole2D@@QAE@XZ)
> > > Debug/fltkGaussian.exe : fatal error LNK1120: 1
> > unresolved externals
> > > Error executing link.exe.
> > >
> > > fltkGaussian.exe - 2 error(s), 47 warning(s)
> > >
> > > Project Settings:
> > >
> > > Preprocessor definitions:
> > >
> > >
> >
> WIN32,_DEBUG,_WINDOWS,WIN32_LEAN_AND_MEAN,VC_EXTRA_LEAN,WIN32_EXTRA_LEAN
> > >
> > > Project Options:
> > >
> > > /nologo /MDd /GX /I "." /I ".." /D "WIN32" /D
> > "_DEBUG" /D "_WINDOWS" /D
> > > "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D
> > "WIN32_EXTRA_LEAN"
> > > /Fp"shape_/shape.pch" /YX /Fo"shape_/"
> > /Fd"shape_/" /FD /Zm200/Od /c
> > >
> > > object/library modules:
> > >
> > > opengl32.lib fltkd.lib wsock32.lib comctl32.lib
> > kernel32.lib user32.lib
> > > gdi32.lib winspool.lib comdlg32.lib advapi32.lib
> > shell32.lib ole32.lib
> > > oleaut32.lib uuid.lib MetaImageIO.lib
> > fltkimageviewer.lib Iview.lib
> > >
> > > Please suggest me the course of action.
> > >
> > > Regards,
> > > cspl
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: "Luis Ibanez"
> > > To: "cspl" ;
> >
> > > Sent: Friday, June 21, 2002 7:04 PM
> > > Subject: Re: Confirmation on the output
> > >
> > >
> > >
> >
> >
> > _______________________________________________
> > 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! - Official partner of 2002 FIFA World Cup
> http://fifaworldcup.yahoo.com
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
--------------465D9AD2E100F8F22FA26186
Content-Type: text/x-vcard; charset=us-ascii;
name="mmalat.vcf"
Content-Transfer-Encoding: 7bit
Content-Description: Card for Mathieu Malaterre
Content-Disposition: attachment;
filename="mmalat.vcf"
begin:vcard
n:Malaterre;Mathieu
tel;cell:519-697-5045
tel;work:519-685-8300 x34096
x-mozilla-html:FALSE
url:http://www.irus.rri.ca/~mmalat
org:The John P. Robarts Research Institute;Imaging Research Laboratories
adr:;;100 Perth Drive;London;Ontario;N6A 5K8;CANADA
version:2.1
email;internet:mmalat@irus.rri.ca
title:Visiting Graduate Student
x-mozilla-cpt:;0
fn:Malaterre, Mathieu
end:vcard
--------------465D9AD2E100F8F22FA26186--
From venkat@cs.utah.edu Sat Jun 29 23:32:20 2002
From: venkat@cs.utah.edu (Venkat Anand)
Date: Sat, 29 Jun 2002 16:32:20 -0600 (MDT)
Subject: [Insight-users] Compilation errors..in example StreamedWatershedSegmentation
Message-ID:
Hi,
I am trying to compile the example in linux -
Examples/StreamedWatershedSegmentation,
and am encountering linker error:
ld : cannot find -lparam
---------------------------------
But both libparam.a and param.o are present..
Any pointers???
Venkat
******************************
Venkatanand Venkatachalapathy
Graduate Student,
SCI, Univ of Utah
ph:
(O) 801 587 9459B
(H) 801 533 0387
http://www.sci.utah.edu/personnel/venkat.html
******************************