Motion Based Segmentation of Heart Structures
 

Data and Software:

     The images used in this project were extracted from a set of ultrasound diagnostic images created by a Hewlett Packard proprietary system. The first goal was to isolate an image plane which showed the relevant structures and extract that plane out of the volume set for each time instance. This was accomplished by using a C program based on the data structure of the HP system, viewing data volumes and slices in IRIS Explorer, and rewriting the C program to extract only the relevant data slices. (This was accomplished with the help of a cardiologist, as it is quite difficult for a mere layman to identify appropriate structures.)
    Since a significant amount of noise was present in the images, a filtering program was written in MATLAB to remove the extraneous noise while preserving as much of the actual data as possible. Median filtering combined with a simple adaptive filtering method were used towards this end, and the program was optimized so that one set of parameters could adequately filter all of the images.
    The total number of images in one sequence is fifteen, representing one complete heartbeat. Ideally, several sequences will be to train the final program, and the program will be tested on a few new sequences. Considering the small number of images and the techniques being used, I have opted to do a majority of this work using MATLAB. The only caveat to this is the possible use of optical flow, which may be done with compiled code if necessary.

Goals:

    Short Term:
 
        1) Extract significant edges which define the borders of the ventricle

        2) Apply motion analysis associate edge points with specific structures (wall, valve, septum)

        3) Associate parameters with the motion of the specific structures

    Long Term:

        1) Redefine the edges based on motion parameters (using active contours)
 
        2) Automatically determine parameters based on training sequences and test on new images

        3) Extract borders for all slices of a 3-D data set, and render the various structures (TIME PERMITTING)

Progress:

    At this point, I have been able to automatically extract the borders of the ventricles of each image using an edge detection algorithm and various filtering techniques. The largest edge in each image is isolated from all extraneous (for the time being, anyway) edges, and the points are written to an array. A normal vector is then calculated for each point in the array. The ventricular borders can be seen in the following image sequence:

These should be animated once I get a chance to use the ECE labs.

    Motion analysis can be performed in a number of ways. The first attempt has been with optical flow, but has failed to produce usable results.
This appears to be due to the non rigid motion of the heart structures, combined with the fact that various features move in and out of the image plane throughout the sequence. It can be seen that the intraventricular septum moves out of the plane considerably, due to a defect of this structure. If it were to remain intact, it would separate the left and right side of the ventricles (the black portion of the images), and we could consider each ventricle separately. This would be easier from a computer vision point of view, but not very relevant in a clinical environment, as it is not very interesting to examine healthy hearts.
    Currently, I am using image differencing to characterize motion. A background image is obtained by averaging all the images. and each image is subtracted from the background to highlight the areas of motion. The motion at each point along the border is quantified by adding the motion value (the difference between that pixel and the background) of several pixel in the neighborhood of the edge point. (The pixels used are determined based on the normal vector at that point.) This method has proven to be useful in isolating the septum, which paves the way for future work.
    The septum ( and in many cases the lack thereof) has been a hindrance for me because it makes it difficult to correlate edge points in neighboring sequences. Having isolated it, the next step is to perform this correlation so that specific points can be tracked between images, and the motion can be parameterized in order to segment the structures. Also, frequency domain analysis of the motion value may prove useful in further segmenting the data, because the wall motion is more organized  and predictable. this analysis is still under investigation.
     Finally, I am also experimenting with a region-based approach to motion characterization, using user-defined regions which may be labeled as belonging to various structures. The purpose of this its to isolate unique characteristics of the data regions, which will aid in the development of motion parameters. This work is also still under investigation.

Notice the highlighted area; this is the septum.

Future Objectives:

    I expect that the various motion parameters being tested will yield appreciable results very soon, which will enable me to move on to the long term objectives. Since the initial contours defined are in fact a crude estimation, they will need ot be refined using active contours. Once segmentation is performed, the main border can then be broken up into its components, and a separate process for each piece can be used to define the borders of the structures of interest. The method for determining the borders will be based on the motion characteristics of that particular structure.