<!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] Do RecursiveHessian or RecursiveGaussian requireisotropic voxels?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>

<P><FONT SIZE=2>Luis Ibanez wrote:<BR>
<BR>
&gt;<BR>
&gt;<BR>
&gt; Hi Jerome,<BR>
&gt;<BR>
&gt; No, the RecursiveGaussian filter does not requires the voxels<BR>
&gt; to be isotropic.<BR>
&gt;<BR>
&gt; The RecursiveGaussian filter takes the Pixel size into account.<BR>
&gt;<BR>
&gt; This means that the computations are performed correctly in<BR>
&gt; physical units.<BR>
&gt;<BR>
&gt; The values reported by the RecursiveGaussian and its associated<BR>
&gt; filters must be interpreted in terms of derivatives with respect<BR>
&gt; to millimeters.<BR>
&gt;<BR>
&gt; Note that if what you are doing is multi-scale analysis (and it<BR>
&gt; sounds like that, since you are searching for the sigma that matches<BR>
&gt; a particular blob...) then you should use the Normalize along scales<BR>
&gt; option, which will make possible for you to compare the results from<BR>
&gt; one scale (sigma) with the results of a different scale (sigma).<BR>
<BR>
Hi Luis,<BR>
<BR>
Thanks for the reply. Well I have seen the option of the normalization across scale, but my problem is not related to a mutliscale analysis. Anyway I set the flag to true already so it is not correlated I think. Moreover you confirm to me that the isotropy should not be a pb as the sigma is properly used as a physical unit instead of a voxel one.<BR>
<BR>
&gt;<BR>
&gt;<BR>
&gt; ---<BR>
&gt;<BR>
&gt; Just for the record...<BR>
&gt;<BR>
&gt; What is the size of the Blobs in your experiments in pixels ?<BR>
&gt; and what is the size of those pixels in millimeters ?<BR>
&gt;<BR>
<BR>
I am working on a phantom which has vessels and tumours in a fake liver. My objective is the vessels segmentation and by consequence I would like to detect them and *reject* the tumours. As I told previously by analysing the eigenvalues of the hessian with an adequate scale, one can have a &quot;vesselness&quot; value, as showed in one of the recent filter is the CVS. (BTW which as a little error that I pointed in the bug tracker ).<BR>
<BR>
Unfortunately, my data has an ugly slice thickness: 5 mm....!&nbsp; I expect in the future more accurate data but in the meantime I do some tests...<BR>
So the diameter of a tumour ( a nice ball ) is 15x15x15 in physical units which correspond roughly to 21x21x3 in voxels.<BR>
<BR>
I guess that you may say me that due to the huge slice thickness some approach may become invalid, but by resampling the volume in iso data I get &quot;better&quot; results....<BR>
<BR>
&gt;<BR>
&gt; If you find that the behavior of the filter is incorrect, please<BR>
&gt; post a minimal piece of code that illustrates your point, and if<BR>
&gt; necessary post an input/output image on a web accessible place.<BR>
&gt;<BR>
I will do this:<BR>
<BR>
- Find to this address :&nbsp; <A HREF="http://moscao.free.fr/PrivateDownloads/EigenToRGBSrc.zip">http://moscao.free.fr/PrivateDownloads/EigenToRGBSrc.zip</A>,&nbsp; a zip that contains:<BR>
- an example test that is run like this, &quot;exec InputImage OutputImage [sigma]&quot;<BR>
This example compute the hessian with the sigma value, and the eigenvalues of the hessian matrix of each voxel. An RGB image is eventually created whose each component is an eigenvalue. A useful filter is so added to the archive called &quot;itkHessianEigenValuesToRGBImageFilter.h&quot;.<BR>
<BR>
To this address: <A HREF="http://moscao.free.fr/PrivateDownloads/Phantom.zip">http://moscao.free.fr/PrivateDownloads/Phantom.zip</A> , a zip archive that contains:<BR>
<BR>
A version of the phantom cropped but *anisotropic* that show a part of the liver with a simple vessel and a tumour. NOTE: I am looking for dark vessel with bright background.<BR>
Its size: 95x81x14 , spacing: 0.7, 0.7, 5.0<BR>
It is an hdr/img Analyze image. Load it in volview with this orientation params: RAS + Posterior + Left. Then in slice 8 (in axial direction) there is a tumour at (46,17,40) (physical units)<BR>
<BR>
<BR>
A version of the phantom cropped *isotropic* ( and BTW scaled previously to avoid huge data) that show a part of the liver with a simple vessel and a tumour.<BR>
Its size: 48x55x44 , spacing: 1.4, 1.4, 1.4<BR>
It is an hdr/img Analyze image. Load it in volview with this orientation params: RAS + Posterior + Left. Then in slice 8 (in axial direction) there is a tumour at (52,31,38) (physical units)<BR>
<BR>
<BR>
Now run the program with the *first* image and set a sigma between 3 and 6. Open the image in volview, find the corresponding tumour and look at its eigenvalues: they should be roughly like this:<BR>
0.005 , 40, 40 ---&gt; NOT a blob...!?<BR>
<BR>
Now run the program with the *second* image and set a sigma between 3 and 6. Open the image in volview, find the corresponding tumour and look at its eigenvalues: they should be roughly like this:<BR>
3 , 4, 4 ---&gt; Looks more like a blob (i.e. eigenvalues close to each other )<BR>
<BR>
<BR>
Maybe the pb is that one cannot trust the results with such images/spacing but I wonder why by passing to isotropric voxels thre result are more as expected...?<BR>
<BR>
Thanks!<BR>
<BR>
Jerome<BR>
<BR>
<BR>
&gt;<BR>
&gt; Best Regards,<BR>
&gt;<BR>
&gt;<BR>
&gt;&nbsp;&nbsp;&nbsp; Luis<BR>
&gt;<BR>
&gt;<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
&gt;<BR>
&gt; ----------------------<BR>
&gt; SCHMID, Jerome wrote:<BR>
&gt;<BR>
&gt;&gt; Dear Itk users,<BR>
&gt;&gt;<BR>
&gt;&gt; I am playing with vesselness measure based on eigen values of Hessian matrices. I have noticed a quite odd behaviour and I would like to know if it is normal.<BR>
&gt;&gt;<BR>
&gt;&gt; Basically the eigenvalues change &quot;a lot&quot; whether or not my input image has or not isotropic voxels. The &quot;a lot&quot; changing is related to the tubes or blobs detection with the Hessian+eigenValues principle, i.e. roughly lambda1 = lambda2 = lambda3 for a blob and lambda1 = 0 and lambda1 &lt;&lt; 0 and lambda3 &lt;&lt; 0 for a tube.<BR>
&gt;&gt;<BR>
&gt;&gt; In my case with a blob and non isotropic image: lambda1 close to 0 and lambda2/3 &lt;&lt; 0. -&gt; odd(?)<BR>
&gt;&gt; In my case with a blob and isotropic image: lambda1 = lambda2 = lambda3 (roughly) -&gt; expected<BR>
&gt;&gt;<BR>
&gt;&gt; Knowing that the hessian is computed with the RecursiveGaussianImageFilter that is based on the RecursiveGaussian filter, I wonder whether the pb is here.<BR>
&gt;&gt;<BR>
&gt;&gt; A note: my sigma for the detection is close to the radius of the blob, and it is defined in physical units. I expect that the recursive gaussian filter uses sigma in physical units ( which looks to be the case, looking at the distinction variance/sigma, isn'it?).<BR>
&gt;&gt;<BR>
&gt;&gt; Any suggestion? Thanks!<BR>
&gt;&gt;<BR>
&gt;&gt; Best Regards,<BR>
&gt;&gt;<BR>
&gt;&gt; Jerome Schmid<BR>
&gt;&gt;<BR>
&gt;&gt; -----------------------------------<BR>
&gt;&gt; Jerome SCHMID<BR>
&gt;&gt; Project Manager/ Engineer<BR>
&gt;&gt; Augmented and Virtual Reality<BR>
&gt;&gt; MIS Centre<BR>
&gt;&gt; Prince of Wales Hospital<BR>
&gt;&gt; Chinese University Of Hong-Kong<BR>
&gt;&gt; -----------------------------------<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; ------------------------------------------------------------------------<BR>
&gt;&gt;<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; Insight-users mailing list<BR>
&gt;&gt; Insight-users@itk.org<BR>
&gt;&gt; <A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
</FONT>
</P>

</BODY>
</HTML>