<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.6944.0">
<TITLE>RE: [Insight-users] 3D Vessel Extraction and Measurement</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<P><FONT SIZE=2>Hi Ivan,<BR>
<BR>
I don't know what you meant by "doesn't work the way it should". Are you using the gaussian derivatives in order to compute hessian and then the eigenvalues of the hessian? The vesselness filter in itk uses gaussian + eigen analysis and seems to work correctly. The pb is that it can work from a mathematical viewpoint but cannot work in real cases withtout tweaking and tuning...<BR>
<BR>
Anyway, I will be very delighted if you can produce a filter of your medialness and submit to insight in order to see it. I hope, like you, I can come back ASAP to this kind of project!<BR>
<BR>
Best Regards,<BR>
<BR>
Jerome Schmid<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: Iván Macía [<A HREF="mailto:imacia@vicomtech.es">mailto:imacia@vicomtech.es</A>]<BR>
Sent: Wed 2/15/2006 7:51 PM<BR>
To: SCHMID, Jerome<BR>
Cc: Insight Users<BR>
Subject: RE: [Insight-users] 3D Vessel Extraction and Measurement<BR>
<BR>
Hi Jerome,<BR>
<BR>
For now I had to postpone the creation of a Hessian image function because Im quite busy until April. Anyway I made some tests and the GaussianDerivativeImageFunction, that I could use as a model doesn't work the way it should. Either that, or I am not using it correctly (see attached source).<BR>
<BR>
Anyway I (think I) have successfully implemented a multi-scale medialness filter based on the work of Krissian et al. and more recently Pock et al. If I have time I would like to wrap it into a filter and maybe submit it to the Insight Journal (that would be in April at least). Right now I make the gradient and Hessian calculations in the whole volume so it is not much optimized.<BR>
<BR>
The third issue is how to implement multi-scale analysis within a filter. The straightforward thing is to keep a vector of scales to try in the filter and make the calculations in a loop. I was wondering if this could be generalized in a family of filters as some kind of base class (multi-scale image filter?), that keeps a vector of scales to try and whose output would depend on the response across scales. But I dont know if this would fit into the toolkit.<BR>
<BR>
Best regards<BR>
<BR>
Iván<BR>
<BR>
<BR>
<BR>
________________________________<BR>
<BR>
De: SCHMID, Jerome [<A HREF="mailto:jeromeschmid@surgery.cuhk.edu.hk">mailto:jeromeschmid@surgery.cuhk.edu.hk</A>]<BR>
Enviado el: jueves, 19 de enero de 2006 3:04<BR>
Para: Iván Macía; Luis Ibanez<BR>
CC: Insight Users<BR>
Asunto: RE: [Insight-users] 3D Vessel Extraction and Measurement<BR>
<BR>
<BR>
<BR>
Hi Ivan,<BR>
<BR>
I am facing the same pb of you concerning the computation of the hessian matrix at a given scale only on some points. As Luis suggested to me previously it would be a good idea to write an imageFunction that compute into a specific point an hessian mat at a given scale. I had started to work on this but I have been assigned to another project in the meantime, but I plan to come back on it soon. However I can give you here some tricks:<BR>
<BR>
- if you plan to code this function, see the gaussian derivative image function in order to have an idea in how to extend it to higher orders.<BR>
- if you want to test before you hessian analysis and doesn't care in super speed efficiency you can do 2 things. The first you compute N versions of your image at different scale in order to get the hessian value, this is long and consumes a lot of memory, then find the max of a vesselness func. The second thing, you can create a "fake" image function that internally uses a filter. This works, is fastest but it is not the best. Have a look at the attached zip. This is an ImageFunction filter that reproduces the behaviour of the itkHessianToVesselnessMeasureImageFilter. As an imageFunction you can compute it on isolated points. Please mind that however this fake imageFunction has a big issue ( that is pushing me to rewrite a genuine ImageFunction for hessian computing ), every time you change the scale, internally the filter of the hessian is reset and so it takes a long time to recompute the next values. As long you use it with the same scale value, a computation on a pixel is fast because the values are cached in the internal hessian filter. This imageFunction is experimental but seems to work. Turn off at the beginning multiscale analysis at this feature has not been tested.<BR>
<BR>
If you rewrite an imageFunction that computes the hessian for a specific scale on a chosen point, please submit it to the insight journal so it can be reviewed and maybe optimized and debugged ( I will be also very interested :) )<BR>
<BR>
Hope this helps.<BR>
<BR>
Best Regards,<BR>
<BR>
Jerome Schmid<BR>
<BR>
---------------------------------------------<BR>
Jerome SCHMID<BR>
Project Manager / Engineer<BR>
Augmented and Virtual Reality<BR>
Minimally Invasive Surgical Skills Center (MIS)<BR>
<A HREF="http://www.hkmisc.org.hk/">http://www.hkmisc.org.hk/</A><BR>
Prince of Wales Hospital<BR>
Chinese University Of Hong-Kong<BR>
----------------------------------------------<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: insight-users-bounces+jeromeschmid=surgery.cuhk.edu.hk@itk.org on behalf of Iván Macía<BR>
Sent: Wed 1/18/2006 11:24 PM<BR>
To: 'Luis Ibanez'<BR>
Cc: 'Insight Users'<BR>
Subject: RE: [Insight-users] 3D Vessel Extraction and Measurement<BR>
<BR>
Hi Luis,<BR>
<BR>
As you say in the second approach, i was thinking on selecting the vessel<BR>
center candidate points by means of an eigenanalysis of the Hessian matrix<BR>
and then to perform multi-scale analysis only on those points to estimate<BR>
centerline and radius. I want this analysis to be based on an offset<BR>
medialness function where the medialness contribution is calculated using<BR>
the sum of gradient contributions in a circular neighborhood. For this I was<BR>
thinking in a ShapedNeighborhoodIterator, is this a good approach? Then for<BR>
every point the scale at which the response is maximum is chosen.<BR>
<BR>
However, it is not very clear to me how to implement the multi-scale<BR>
analysis here because I only need to do it on certain points. Is there any<BR>
easy way to calculate the gradient gaussian response in the vecinity of one<BR>
point? Is there any other better approach?<BR>
<BR>
Thanks in advance<BR>
<BR>
Ivan<BR>
<BR>
<BR>
-----Mensaje original-----<BR>
De: Luis Ibanez [<A HREF="mailto:luis.ibanez@kitware.com">mailto:luis.ibanez@kitware.com</A>]<BR>
Enviado el: miércoles, 18 de enero de 2006 14:41<BR>
Para: Iván Macía<BR>
CC: Insight Users<BR>
Asunto: Re: [Insight-users] 3D Vessel Extraction and Measurement<BR>
<BR>
<BR>
<BR>
<BR>
Hi Ivan,<BR>
<BR>
<BR>
You may want to try the application<BR>
<BR>
<A HREF="http://www.itk.org/HTML/Curve3DExtraction.htm">http://www.itk.org/HTML/Curve3DExtraction.htm</A><BR>
<BR>
This application is distributed with the InsightApplications CVS checkout.<BR>
(or the .zip and .tgz file in the release).<BR>
<BR>
Note that this application assumes that you are targeting<BR>
a particular diameter of vessels.<BR>
<BR>
If what you need is to estimate the diameter of vessels in<BR>
the image, then you may want to run the Vesselness filter<BR>
for a range of different sigmas (which are associated)<BR>
to the vessel diameter) and then choose for each vessel<BR>
the sigma where you get the highest response.<BR>
<BR>
Note that this is a typical Multi-Scale analysis.<BR>
<BR>
The drawback is that this may not be a fast processing, since at all stages<BR>
you process the entire image.<BR>
<BR>
A more effective approach may involved to just perform the multi-scale<BR>
analysis on pixels that you have already spotted as belonging to a vessel.<BR>
In that case you will have a two pass processing. First, to identify<BR>
prospective pixels belonging to vessels, then Second visit to pixels and<BR>
perform multi-scale analysis on them, in order to estimate their diameters.<BR>
<BR>
<BR>
Another method for segmenting vessels is to use itk SpatialObjects and<BR>
register/fit them to your images. For this purpose you may use the itk Tube<BR>
SpatialObjects.<BR>
<BR>
<BR>
Please let us know if you have further questions.<BR>
<BR>
<BR>
<BR>
Thanks<BR>
<BR>
<BR>
<BR>
Luis<BR>
<BR>
<BR>
<BR>
------------------<BR>
Iván Macía wrote:<BR>
> Hi,<BR>
><BR>
> I'm trying to perform vessel segmentation on MR liver images using<BR>
> some kind of medialness function to detect vessel centerlines and<BR>
> estimate radius similar to the work of Krissian et al. on "Model Based<BR>
> Detection of Tubular Structures on 3D Images".<BR>
><BR>
> I have found in itk classes for Hessian Matrix computation<BR>
> (HessianRecursiveGaussianImageFilter) and measures of vesselness based<BR>
> on the eigenvalues of the Hessian Matrix<BR>
> (Hessian3DToVesselnessMeasureImageFilter). I have also found a<BR>
> VesselTubeSpatialObject suitable to represent the vessel information.<BR>
> But it does not seem to be a class suitable for estimation of vessel<BR>
> medialness, radius and some other properties.<BR>
><BR>
> I would like to know if there is any algorithm in itk that I could<BR>
> use, if someone is working on it or some advice that could be useful<BR>
> to implement one (probably in the form of an ImageToImageFilter).<BR>
><BR>
> Thanks in advance for your help<BR>
><BR>
> Iván Macía<BR>
><BR>
<BR>
<BR>
--<BR>
No virus found in this incoming message.<BR>
Checked by AVG Free Edition.<BR>
Version: 7.1.375 / Virus Database: 267.14.20/233 - Release Date: 18/01/2006<BR>
<BR>
<BR>
--<BR>
No virus found in this outgoing message.<BR>
Checked by AVG Free Edition.<BR>
Version: 7.1.375 / Virus Database: 267.14.20/233 - Release Date: 18/01/2006<BR>
<BR>
<BR>
_______________________________________________<BR>
Insight-users mailing list<BR>
Insight-users@itk.org<BR>
<A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
<BR>
<BR>
<BR>
<BR>
<BR>
--<BR>
No virus found in this incoming message.<BR>
Checked by AVG Free Edition.<BR>
Version: 7.1.375 / Virus Database: 267.14.20/233 - Release Date: 18/01/2006<BR>
<BR>
<BR>
<BR>
--<BR>
No virus found in this outgoing message.<BR>
Checked by AVG Free Edition.<BR>
Version: 7.1.375 / Virus Database: 267.15.8/260 - Release Date: 14/02/2006<BR>
<BR>
<BR>
<BR>
</FONT>
</P>
</BODY>
</HTML>