440 likes | 570 Views
Ridge-Based Vessel Segmentation in Color images of the Retina Staal et al, IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. 23, NO. 4, APRIL 2004. Final Presentation Amir Tamrakar May 19, 2005. Overview. Goal + Clinical Relevance Review of Methodology
E N D
Ridge-Based Vessel Segmentation in Color images of the RetinaStaal et al, IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. 23, NO. 4, APRIL 2004 Final Presentation Amir Tamrakar May 19, 2005
Overview • Goal + Clinical Relevance • Review of Methodology • Brief Recap of the Feature Computation Stage • Training a classifier on the features • Applying the classifier on test data • Present Results • Discuss limitations + Possible Improvements
Goal • Auto-segment vessels in color retinal images for the purpose of screening for diabetic retinopathy. • 5.5% of the population worldwide are diabetic • 10% of all diabetic patients develop diabetic retinopathy • Diabetic retinopathy is the primary cause of blindness in the west. • It can be prevented with treatment at early stages. Hence the need for screening.
Related Work/ Other Methods for Vessel Extraction • Matched Filters • Grouping edge pixels • Locally adaptive thresholding • Topology Adaptive Snakes • Vessel tracking • Matched Kalman Filters • Fuzzy clustering and tracking • Morphology based Techniques (forming trees) • Supervised learning methods • Neural Networks References for these works can be found in the Staal etal paper.
Methodology Extract ridges Form line element primitives Retinal image (Green channel only) Extract Features Classifiers (vessel / no vessel) Form patches around primitives Vessels segmented
Overall Insight • GOAL: To Learn to Classify every pixel (independently) as vessel or non-vessel within the FOV. • A pixel representation is not optimal for vessel structure. • Knowing that vessels are elongated structures, one can represent vessels with elongated vessel primitives. • Height ridges coincide approximately with vessel centerlines so form these primitives along ridge curves (convex sets of connected ridge points)
Overall Insight contd.. • Divide the Classification Task into 2 parts: • Train Classifier #1 to compute the probability that a given Convex set (CS) is part of a vessel using local features around the primitive. • Divide the image into patches around the CSs (i.e., assign each pixel in the image to its nearest primitive.) • Within each patch, a local coordinate system can be defined and local features can be extracted for every pixel. • Train Classifier #2 to classify every pixel using the local patch features into vessel or non-vessel. • The output of Classifier #1 is one of the features for Classifier #2 (Needless to say, the most important)
Details: Computing Ridge points v1 is the eigenvector corresponding to the largest eigenvalue Numerically: R(x) = -1 : ridges, +1 : valleys
Details: Linking Ridge points Algorithm: Region growing from random seeds vug1 r1 vg Tg Rules: ec r2 vug2
New implementation: Curve growing (εp = 0.95) Original implementation: (region growing using spiral search) εp = 0.8 But curves were still doubling back. Added rule:
Details: Forming Convex set regions • Compute Chamfer Distance Transform from ridge points in convex sets • Propagate distance + set label + closest point information Distance Transform
Details: Forming Convex set regions • Compute Chamfer Distance Transform from ridge points in convex sets • Propagate distance + set label + closest point information Closest Point Map
Details: Forming Convex set regions • Compute Chamfer Distance Transform from ridge points in convex sets • Propagate distance + set label + closest point information Labeled CSR
Details: Convex set features (at ridge points) • 18 features • 8 are extracted from average profile (Ψ)(-15..15) • Height: h = Ψ(0) • Width: w = (nre-nle) • h/w • Edge strength: se = Ψ’(nle) + Ψ’(nre) • se/w • Edge height: he = (Ψ(nle) + Ψ(nre))/2 • h-he • h/he • 3 from convex set curves • Distance between first and last point (d) • The length of the curve (l) • The curvature of the curve (k) • Rest from image features • Mean internsity (μg) • Standard deviation (σg) • Μg/ /μr • Ridge Strength at σ =0.5 ( average λ) • Ridge Strength at σ =1 ( average λ) • Ridge Strength at σ =2 ( average λ) • Ridge Strength at σ =3 ( average λ)
Details: Convex Set Region features (at every pixel) • r(x) • g(x) • g(x)/r(x) • p(c=vessel) • dcl = || x- xcl || • r(x) – r(xcl) • r(x)/r(cl) • g(x)-g(xcl) • g(x)/g(xcl) • x’ • y’ • Ix’ (at σ =0.5, 1, 2, 4 ) • Iy’ (at σ =0.5, 1, 2, 4 ) • Ix’x’ (at σ =0.5, 1, 2, 4 ) • Iy’y’ (at σ =0.5, 1, 2, 4) Fit a line through the CS points & Define a local coordinate system (x’, y’)
8. Train a classifier of some kind 17 CS features Ground Truth 27 CSR features Supervised Learning Algorithm Feature set
8. (Revised) Train a couple of classifiers [of some kind] 17 CS features Ground Truth (Hand segmented Images) Train Classifier #1 Learned Parameters Train Classifier #2 27 CSR features
Learned Parameters 9. Applying the Classifiers on Test data Classifier #1 Test Image 17 CS features Classifier #2 27 CSR features Segmented image
Various Statistics • Database: Utrecht DRIVE database(http://www.isi.uu.nl/Research/Databases/DRIVE/) • 40 images + Manual segmentations • 20 images used to train and 20 to test • Pathologies • Training set: 3 images • Test set: 4 images • Image: 584x565 JPEG color images • # of pixels: 329960 • FOV mask: Circular (diameter = 460 pixels) • # of pixels within the FOV: 209010 • # of pixels marked as Vessel (GT): 24265 (11.6%)
Classifier • Authors used k-NN classifier (k=101) • I used AdaBoost instead • Data volume was easier to manage • Feature selection not required • Fast inference process
Non-negative weights sum to 1 Binary label Feature vector (x1,y1,w1),(x2,y2,w2) … (xn,yn,wn) Weighted training set instances labels x1,x2,x3,…,xn y1,y2,y3,…,yn The weak requirement: A weak learner A weak rule weak learner h h
weak learner h1 (x1,y1,w1), … (xn,yn,wn) (x1,y1,1/n), … (xn,yn,1/n) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) (x1,y1,w1), … (xn,yn,wn) weak learner h2 h8 hT h9 h7 h5 h3 h4 h6 The boosting process Sign[] + + + Final rule: a1 h1 a2 h2 aT hT
Adaboost (Adaptive Boosting) • Binary labels y = -1,+1 • margin(x,y) = y [St atht(x)] • P(x,y) = (1/Z) exp (-margin(x,y)) • Given ht, we choose at to minimize S(x,y) exp (-margin(x,y))
Results Accuracy: 94.4% wrt Manual Segmentation Original Image Vessels segmented
Manual Segmentation Automatic Segmentation
Original Image Vessels segmented
Accuracy: 96% wrt Manual Segmentation Original Image Vessels segmented
Images with Pathologies Accuracy: 92.4% wrt Manual Segmentation Original Image Vessels segmented
Images with Pathologies Accuracy: 92.5% wrt Manual Segmentation Original Image Vessels segmented
Results Summary • Overall Accuracy = 93.9% • Best segmentation = 96% • Worst segmentation = 92.4%
Limitations • Needs a lot of Training data (Tremendous: manual effort). • Especially images with pathologies if it is to correctly segment pathologies (Aneurysms) • Pathologies are not recognized and sometimes misclassified as vessels • Over and under segmentation (a concern if objective vessel width measurements are required) • A lot of small vessels are missed • Some vessels appear thickened • Edges of the optical disc often have vessel like features and so are segmented as vessels.
Future Work • Some of the errors are due to randomization during ridge point linking process • Arbitrarily partitions the ridge curves into convex sets. • More rigorous partitioning will avoid small patches which get thrown out and create gaps in the segmentation • Use other classifiers e.g., k-NN classifiers with Feature selection in the AdaBoost Framework. • Add features?
References • Staal et al, Ridge-Based Vessel Segmentation in Color images of the Retina, IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. 23, NO. 4, APRIL 2004