<!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 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>
</FONT>
</P>
</BODY>
</HTML>