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.

Monday, May 21, 2007

Morphological Operators

I have taken a different approach to the pulmonary vein ostium search problem. 'Primitive' machine vision techniques such as opening and closing can be applied to certain binary images in order to decompose them into their meaningful parts and separate them from their extraneous parts. These happen to be very useful operators. It is derived from mathematical morphology which is a theoretical model for digital images built using lattice theory and topology. So it is back to the basics of machine vision - and I am a little more than glad that I am doing hands-on morphology. I take it as one of the 'must-know' concepts in machine vision.

I will be looking to separate the atrium from its pulmonary veins using these operators. Although surely the operators, on its own, will not be sufficient to do such a task. At this end, I am also looking to possibly implement knowledge-based operators. These operators will incorporate knowledge about the subdivisions (such as their radii, etc.)

Although reading about the fundamentals of mathematical morphology was not great fun, however, I found this book by Haralick to be really helpful. I also found these lecture notes from the U. of Edinburgh informatics site easy to read and understand.

This Friday I picked up more atrium data from my clinician. We are looking at the possibility of exploring a different technique to the atrium segmentation problem.

Tuesday, May 15, 2007

Removal of Partial Volume Effected Voxels

As I had pointed out earlier in previous posts, perhaps the one and only reason the segmentation algorithm leaks into surrounding structures especially the aorta and the pulmonary artery is because of partial volume effected voxels. We have observed that the segmentation at times will leak into the pulmonary artery through a pulmonary vein. Although, it is physically possible, atleast in theory, for the pulmonary vein to touch the pulmonary artery. However, our images are Angiographic scans where the blood was Gadolinium-enhanced and the only thing that we see after subtracting the pre-Angio from the post-Angio is the blood pool. So, we can rightfully state that the blood pools of the pulmonary artery and the pulmonary vein cannot physically touch and this is definitely caused by partial volume effected voxels. Partial volume effected voxels are voxels that image two or more tissue types, thus giving an intensity level that is a weighted average of the intensity levels of each tissue type.

So here arises a dire requirement to identify partial volume effected voxels and remove them as much as possible. I have been looking at some papers recently such as Ballester et. al., and my task for this week will mainly be literature review of partial volume effect removal techniques.

Sunday, May 06, 2007

About subdivisions

A lot of the atrium segmentation computations depend on how the MRI image is subdivided into subdivisions (or basic components) and also partly on the location and spatial distribution of the local maximum and saddle points. Subdivisions are the collection of voxels each of which lead to a local maximum by following a path of increasing EDT values. Now, although intuitively these subdivisions could be thought of as one group of neighboring voxels, however, as I just found out this is not the case. The subdivisions can actually be a disjoint group of voxels as shown below in the figure. Notice that this is one single subdivision that is centered by the local maximum voxel marked in green (by the red arrow). The trail of points indicate the path that leads to the local maximum for a point in the smaller disjoint subdivision.


Here is another image of the same subdivision with the opacity changed to show the opaqued surface.


This is the main reason behind why the boundaries between certain subdivisions dont have a saddle point. For example if we look at the smaller disjoint group in the subdivision shown above in the figure, this smaller group may not have a saddle point with its neighboring subdivisions, since the other larger disjoint subdivision have satisfied the saddle point requirement by having a saddle point with a neighboring subdivision. Ideally we wouldn't have wanted subdivisions to be disjointed in this manner. As explained, this causes some subdivison boundaries to not have saddle points. This has implications in the work we are currently doing where we are trying to locate ostium centers automatically.

Monday, April 30, 2007

Doubts over saddle point locations

I set off to another glorified week when I intend to investigate the possibility implementing an automatic pulmonary vein detector. From the segmented atrium I wish to locate the pulmonary vein drainage ostium automatically so that their diameters can be calculated by some interactive means.
I had doubts over whether the saddle point algorithm was correctly detemrining the points on the image. A thorough close-examination of the algorithm and after some gruesome hours of analyzing the basic component maps I have come to the conclusion that the saddle point algorithm is working fine. I may not be color coding the BC maps correctly at times, so when the saddle points are overlaid over a color-coded BC map, they appear to be located over points which are not boundaries between two adjacent components. This is the case since the color mapper needs to be fine-tuned and by default neighboring components sometime get the same color.
The tube ride today was very instrumental allowing me to finally think of a way the automatic PV drainage detection can be done. I have noticed that the atrium is nicely subidivided at the ostiums for most of the cases. The only thing that needs to be done is to characterize these ostiums interms of the subdivisions or perhaps saddle point diameters.

Friday, April 27, 2007

MIUA paper

It has been a hectic week working on my first ever conference paper. The Medical Imaging Understanding and Analysis 2007 conference is to be held in Wales this year, and I am looking forward to visiting the place. Here is my paper on left atrium segmentation.

Monday, April 23, 2007

Basic component subdivision is random


Today I investigated how subdivision occurs near the pulmonary artery and pulmonary vein intersections. Intersections are caused by partial volume effects. I managed to analyse two datasets. In both datasets I have determined that the subdivision process is fairly random (although I still believe that to some extent it depends on the shape, but then again the shape is quite random near PV+PA intersections). The above image is a slice through the MRI showing the different subdivsions (color coded, i.e. a different color for each subdivision). The marked region within the image shows a pulmonary vein what is part of the left atrium but becomes part of the pulmonary artery due to the way that region was subdivided.

Ideally I would have liked the region marked to be a separate subdivision so that it could be merged in with the subdivisions at the atrium. This creates a massive problem where these subdivsions no longer make sense. Previously I have been under the impression that the left atrium would be uniformly subdivided. Thoughts on which directions to proceed: 1. Use a different neighborhood for picking local maximums (currently we use a 26-neighborhood).

Friday, April 20, 2007

Automatic segmentation

I have passed my MPhil to PhD transfer. Transfers can take a long time: it took me about 2 months to prepare the report and compile results. It is a good idea to write up the transfer report in thesis style keeping in mind that some parts of the transfer report can be recycled to be used in the final thesis.

It is now possible to automatically segment the left atrium using a subdivision and merging algorithm. The atrium is subdivided into disjoint components using some geometric means. These components are then automatically merged using a criterion defined on any two neighboring components. The merging criterion is defined using the notion of a narrowing. Any two neighboring components separated by a narrowing are not allowed to merge. This uses the assumption that the atrium is attached to neighboring structures only through narrow vessels. Allowing the merging to start from the center of the atrium, and stopping the merging at these narrowing can segment the atrium. However, we report that this assumption is not entirely correct. Narrowings can occur within the atrium itself: we have encountered a patient case where the left atrium opens into a pulmonary vein through a narrowing.


Seen above is a surface reconstruction of a left atrium segmented using the automatic scheme described above. A unusual narrowing within the ostium of a pulmonary vein caused the segmentation to miss the pulmonary vein completely. This was corrected by setting a second seed point at the center of the missed vein, and automatically segmenting and merging it with the original segmentation.

Above is my cartoon representation of a left atrium and its surrounding structures. Assume the blue tubular structure to be the ascending aorta, and the green structure to be the pulmonary artery. The left atrium is drawn in red. Using the narrowing scheme we described above, it still becomes difficult to separate the atrium from the pulmonary artery. The artery and the pulmonary veins touch as seen in the figure, and this is due to the partial volume effect. There is no genuine narrowing at these points (where the vein intersects the artery). As a result we have the system thinking that components on either side of this touching point should be merged - causing segmentation to leak into the artery.

We are looking at different ways to overcome this problem. It may be useful to compute the medial axis transform of the vessels. Vessles which touch due to partial volume effects may not have their medial axes touching. We could perhaps exploit this feature and detect where partial volume effect caused non-mergeable components to be merged.

Acknowledgements: The automatic segmentation technique was adopted from John et. al. 2005.