Check out my research paper that I completed after my project here!
Chicken Heart Movement ModelingWe are using MATLAB to build a 3D model of a chicken heart beating, some normal hearts and some with defects. The chicken hearts are scanned and the contour (outer edge) of each heart is traced. Our goal is to find a way to reconstruct the data in a more simple manner so complex analytics can be run on it (Example: If this chicken heart has a defect, what will it look like in five years?). The reconstructions are built through various types of curvature analysis. The simpler we can make the reconstructions, the more computational power we can put towards analytics. The goal of the project is to use the models to study blood flow in heart defects and apply it to human anatomy. For the summer, I am working to build a 3D model that is efficient and accurate, which can be used as a base for future analytical tests.
Before a chick's heart is fully developed, it is shaped like a tube. The hearts were scanned continuously at three different points over 196 time steps. The edges of the hearts, or contours, were traced from the images. A matrix representation of the contours was saved and sent to Dr. Grimm. The original data is a very large matrix that takes a lot of time and computational memory to process. We are trying to find a way to reconstruct the contours that is fast and efficient using the curvature of each contour. Curvature is the "roundness" of each piece of an ellipse, i.e. for a certain number of steps along the contour, is the line segment shaped close to a circle or a pancake? There are many ways to measure curvature, but the equation we used was to measure the change in angle over the length of the vectors. Once curvature has been measured, there are various types of analysis we can use to reconstruct the original contour.
The first few weeks of my summer have been dedicated to making plots and animations to figure out what type of curvature analysis works the best for our data sets.
This video shows the contours and curvature analysis for one chicken. Imagine a looking down a tube, where the orange contour is the top closest to you, the green contour is halfway down, and the cyan contour is at the base of the heart. The video shows a full "beat" sequence of a the heart. Since the heart is tube shaped at this point, it is more a combination of squishing, expansion and contraction along the tube rather than a what we would consider a normal human heart beat. If we can figure out the basics on simple hearts it will be easier to tackle larger problems in human hearts.
The contour reconstructions are generated through several steps. The analysis begins by reading in the contour data that was made from a medical scan (first colored circle). A program in MATLAB then approximates the curvature data (first colored zigzag line). As the user, I then select what type of curve fitting I would like to use in order to approximate the curvature (black lines in bottom row). For this video, I chose a piecewise linear fit. The weights or coefficients for each fit function are generated. For the piecewise linear fit, the weights are the slope of each line segment. The weights are saved out to a file and then read back into MATLAB to create a reconstructed contour (black ellipse).
A "perfect reconstruction" would place the black contour exactly in the middle of the colored contour. The animations don't upload too well to YouTube, but if you watch the video in full screen it's easier to see.
I found it very surprising that the piecewise linear fit had such an accurate reconstruction. The Hat Wavelet reconstruction (below) fits the curvature data much more accurately, but the contour reconstruction is not very good, especially at the end points.
As you can see, the Hat Wavelet fit does not reconstruct the curve quite as well as the piecewise linear fit, especially at the end points.
In this video, each set of three reconstructed contours represents an individual chick heart (8 individual hearts). The video is on loop to simulate continuous expansion and contraction of the hearts. Once again, imagine looking down a tube of a heart, where the red contour is the closest to you, the green contour is in the middle, and the blue contour is at the base of the heart. This model is good for comparing the contours between all of the different chickens. It also runs in a loop to help simulate what the heart would look like if it was beating (aka continuous contraction and expansion sets). A Quadratic Spline fit was used to approximate the curvature. The curvature is in the video below. (You have to look closely to see the movement... The most movement occurs in the bottom row, second from the right.)