Friday, June 29, 2007

Intensity ridges

For the past two weeks I have been reading a lot. Starting off from the Manniseng PhD thesis to Frangi's vesselness filter to cubic B-spline sub-voxel interpolation, I have covered topics mostly that has got to do with measuring vesselness. Right now I am looking at three different approaches for automatically identifying the pulmonary veins of the left atrium:

1) A fuzzy approach where arteries and veins can be separated using local voxel affinity and range of other factors. The technique computes a range of affinities between every pair of voxel in the image. This is a combinatorilly explosive problem, but can be optimized using efficient data structures.

2) A level-set based approach: Arteries and veins can be "presumably" separated by labelling voxles according to the time-of-arrival of two evolving fronts which start off from a point in the artery and a point in the vein. Level-sets are a pain to implement as they must be solved via partial differential equations.

3) Computing intensity ridges. I was reading the paper by Aylward et. al. and it seems like it can be very useful in atleast detecting the starting points of the pulmonary veins (from the left atrium). The ridgeness function is loaded with Frangi's vesselness function which makes it detect tubular like objects such as vessels. The ridgeness should also be computed for every candidate voxel at an appropriate scale. I have also spent a considerable amount of time reading scale-spaces. A scale-space is the domain of images produced by convolving the image with a Gaussian filter at different variances (width). This 'optimal' scale is selected by choosing the variance (of the Gaussian) which gives the maximum response to Frangi's vesselness function.

I have also been implementing the intensity ridge functions. These include Hessian matrix comptutations, Eigen-space analysis of the Hessian and calculation of the ridgeness function. Although there were a few glitches in the program, these have been fixed. Finally, my program is yielding some ridge points (1800 in total in an image). I would soon be looking at how i can go about traversing these ridge points and also applying testing the ridgeness function at appropriate scales.

Friday, June 08, 2007

Skeletonization of vessels

I have not been the most efficient person for the past two weeks. I think I have been thinking too much about other things. I am finishing up my MIUA paper final revision which was accepted for an oral presentation for the upcoming MIUA conference .

For the past week, amongst other things (setting up cricket matches), I have been looking at various vessel analysis techniques especially R. Manniesing's PhD thesis titled "Image analysis in CT Angiography". Here I was stomped by some unfamiliar techniques such as diffusion filters and level set methods.

Diffusion filters are governed by diffusion equations which basically control the amount of diffusion when applying the Gaussian filter to vessel boundaries. The main idea is to come up with a non-linear diffusion co-efficient (a.k.a conductivity coeff.) which stops diffusion at the vessel boundaries thereby preserving the vessel topology. I was interested in exploring this area since I was a little concerned about the amount of noise in some of my new MRI datasets. The application of the Gaussian blur to the images with low variance has actually not done much harm to the pulmonary veins and its branches. Here are some images to prove that in atleast one of the datasets:


And their surface reconstructions show how easy it is to work with the Gaussian blurred image (bottom image):


So I was quite convinced that the Gaussian blur was rather a blessing than a curse. I thought perhaps I should apply it to my previous MRI studies (which are not as noisy as the new sets) and improve the segmentation results.

I diverted my attention by the middle of the week, away from noise-removal to vessel-axis tracking. I felt that this was prime to two things: 1) Eventually enabling the separation of the pulmonary vein from the artery. 2) Eventually being able to determine the number of pulmonary veins to an atrium. Manniesing's PhD thesis gave a very interesting insight into how Level set methods along with prior vessel topology information can be used to segment the vessel-axis. I have been off-beat with Level set methods and spent the remaining week listening to Level set methods lecture from MIT's opencourseware lecture series for their Mathematical Methods for Engineer's course run by R. Strang. A link to the entire series can be found here.

After meditating on a half-an-hour tube ride, I am a little convinced that given that the vessel-axis of the pulmonary vein and the artery can be tracked, they can be separated trivially. However, what worries me most is that it won't be as trivial to obtain the vessel axes at the vein-artery junctions.

off note, I feel compelled to say that I have started taking some interest in world history.