Total Pageviews

Thursday, December 01, 2011

iliac vessel attractors

When I left off last night, I was talking about how to use the concept of attraction to help in tracking iliac arteries.  In general the parameters that are available to be modified in my algorithm are the current direction vector (as determined by the longest continuous directional line path), the previous direction vector, and the overall bias vector (a vector that points in the general direction that one expects the vessel to travel). 
As the difference between the current direction vector and the bias vector increases, the contribution of the bias vector is proportionately increased.  The contribution of the previous vector is meant to buffer rapid changes in directionality.  Simple combinations of these three vectors have at one point or another successfully tracked every iliac vessel in my data set.  When dealing with situations like this in the past, my method has been to build in adaptive logic; for example, rather that setting a range of values that may be vessel, the algorithm goes to the last known point of vessel lumen and samples the average density of the contrast at that level and produces an average value around which a range us created.  This process allows the algorithm to accept very high or low density points only in situations where the scan and contrast quality require it.  The probem with the iliac vessel course is that there is not really a good predictive way of determining which parameters to use. 
Interestingly, in previous versions of the software, I used an algorithm which did essentially what I am try to achieve now, which is perform the tracking using a set of varying parameters and determining which ones result in a vessel end point close to the expected location.  The major problem with the previous algorithms was that it was very time consuming.  The current algorithm run in the 1-2 second range and achieves successful tracking in > 90% of vessels which means that the cost per additional vessel tracked will be very high.  One thought is that the since the algorithms already is biased so heavily towards finding the attractor, a validation step should be inserted after the initial iliac tracking algorithm to see if the endpoint and path are reasonable.  If not, the full algorithm can be attempted which evaluates a larger (though still restricted) portion of the parameteric space. 
This kind of logic check is smattered throughout the overall code and serves to reduce the overall run time by excluding computation that are unnecessary and dedicate additional resources to situations where the result is too complex for the simple algorithm. 
Alright, I have to go to the DICOM standards meeting in the morning and so I will call it a night.  

Wednesday, November 30, 2011

Complexity and vessel tracking

I know that it sounds cliche, but sometimes the most important part of working through the solution to a problem is to stop thinking about the problem in the context that is familiar to you.  I have been working for the past couple of weeks on expanding the scope of my aortoiliac tracking algorithms to account for the various morphologies that the bifurcation and iliacs can take.  The fundamental problem is that you only have a general idea of where the bifurcation happens and where the iliacs are going.  I was walking around the RSNA vendor area and saw a couple of systems that supposedly do centerline extraction for you, but the one unifying aspect of all of those studies is that they are perfect angiograms in normal patients.  It is my opinion that there is little benefit in being able to segment a normal study.
Every time I write an algorithm, I end up with results that are always imperfect.  Specifically, if I take the fundamental algorithms and boil it down to a handful of parameters that control the functionality, the result is that that the segmetation will never work for all possible morphologies and variations that can occur in clinical practice.  Every time the parameters are tweaked, the result across the 128 or so studies that I am training against begins to vary to some degree.  I judge the robustness of an algorithm in terms of whether or not this variability prevent successful tracking. 
In terms of optimization routines, the basic issue is whether or not the changes in parameters alters the parametric space in such a ways that it prevents the desired extrema (assumed to be the global extrema) from being achieved.  In my opinion, a good algorithm is one that successfully tracks >90% of the iliac vessels that it attempts. 
It has been creeping up in the back of my mind over the past couple of months that what I am actually dealing with is the sensitivity to inital conditions encountered in non-linear dynamics.  Minor alterations in the parameters can send the algorithm into undesired areas like tracking the pelvis as a vessel or abruptly stopping in the middle of a vessel.  Since I have to assume that any and all possible criteria that I create for the tracking algorithm will be violated, I am left with a seemingly intractable problem.  More specifically, there is no one set of algorithms or parameters that can linearly track an arbitrary vessel with variable path and contrast opacification.  More and more though I have come to realize that what I should actually be doing is searching for the attractors that underlie the seemingly chaotic path that the algorithm can take. 
Though I have not philosophically been doing this, the aortic tracking algorithm is such a means of finding the chaotic attractor in the parametric space that contains path, density, and continuity of the aorta.  Long ago i accepted that no matter how good my algorithm is, there is always a chance that the aortic tracking would go astray.  At the time, I was in the philosophical mindset of something between game theory and swarm logic where I created millions of independent elements that were allowed to progress subsequently whittled down the results until some cluster of results were reached that had a high probability of being correct (i.e. within the aorta).  At that point, rather than trying to select one, I use some basic statistics to find the underlying common average path.  It turns out that if you create enough element in your swarm and have reasonably good selection criteria, it is possible to track nearly any aorta with even a trace amount of contrast (>100 HU absolute density, which is really only about 25 HU above unenhanced blood).
The next issue is determining how much computational time I am willing to commit to finding the iliac attractors since the algorithm as it stands right now can successfully track all but the extremes of vessel opacification.  Since it is getting late and I have to be at some refresher courses in the morning, I will think about this some more and get back to you.