The idea is to take connected components of image patches at different threshold levels, like this:
|Example image patch containing a malaria parasite on left, connected components at different threshold levels on the right.|
We then calculate various morphological features for each component, such as moment of inertia, elongation and jaggedness. Computing the max-tree of component hierarchy (indicating which components are contained within other components) make it possible to calculate some other features. From all the components in an image patch, we compute the 10th, 30th, 50th, 70th and 90th percentiles of each feature, giving us a standardised feature vector.
Using these feature vectors to learn labels for many image patches (where label 0="no parasite", 1="parasite") with an Extremely Randomised Trees classifier, the discriminative performance is quite good.
Another way of assessing whether the detection is working is to look at image patches in a set of test images and sort them according to classification probability:
|Patches classified confidently as positive cases are on the top row, and confident negatives are on the bottom.|
In general we're starting to get within range of the performance of an expert lab technician, and these results are also significantly better than anything we've managed to achieve with features developed for natural images, such as SURF, SIFT, or Haar cascades. However we can't yet get reliable detections with very low parasite concentrations in the blood, so it looks like a bit of refinement is still needed before getting further into clinical testing.
More technical details can be found in this forthcoming book chapter.