/Retinal-Blood-Vessel-Segmentation-by-Active-Contour

Active contour is a strong method for edge extraction. However, it cannot extract thin vessels and ridges very well. In this project, I implement an enhanced active contour method that uses discrete wavelet transform for energy minimization to solve this problem.

Primary LanguageMATLABMIT LicenseMIT

Retinal-Blood-Vessel-Segmentation-by-Active-Contour

Medical image analysis, especially of the retina, plays an important role in diagnostic decision support tools. The properties of retinal blood vessels are used for disease diagnoses such as diabetes, glaucoma, and hypertension. There are some challenges in the utilization of retinal blood vessel patterns such as low contrast and intensity inhomogeneities. Thus, an automatic algorithm for vessel extraction is required. Active contour is a strong method for edge extraction. However, it cannot extract thin vessels and ridges very well. We propose an enhanced active contour for retinal blood vessel extraction. this repository is an implementation of the paper below:

"An active contour model using matched filter and Hessian matrix for retinal vessels segmentation. Shabani etc"

https://journals.tubitak.gov.tr/elektrik/vol30/iss1/20/

For more additional information read the master dissertation:

https://www.researchgate.net/publication/362887703_Master_thesis_Retinal_Blood_Vessel_Extraction_Based_on_a_Combination_of_Matched_Filter_and_Level_Set_Algorithm

STEPS

1. Original image:

image

2. Green Channel:

image

3. CLAHE (Constrast-limited adaptive histogram equalization):

image

4. Vessel Enhansment:

image

5. Enhanced Active Contour:

image

The result of the active contour:

image

6. Vessel Tree Generation:

image

7. Performance evaluation

We carry out the algorithm in MATLAB version R2014a on a personal computer running Windows 10 with an Intel(R) Core i5-7200U, the processor 2.5GHz and 8 GB of memory. The proposed algorithm is experimented on five public available dataset. The values achieved are 94.3%, 73.36%, and 97.41% for accuracy, sensitivity, and specificity, respectively, on the DRIVE dataset, and the proposed algorithm is comparable to the state-of-the-art approaches.

image

Performance metrics on the DRIVE, STARE, HRF, CHASE DB1, and ARIA databases:

image

8. performance in the absence of main vessels

There are main vessel pixels extremely more than thin vessel pixels, so sensitivity is not useful to indicate performance alone and accuracy measure typically will be high while challenge of retinal vessel segmentation is related about thin vessel! Therefore, we remove wide vessels pixels from images, and then to show performance of the proposed algorithm, are calculated evaluation metrics on the images without wide vessels. For this work, we need a new benchmark of DRIVE database in the absence of wide vessels. To removing wide vessels, used Canny detector. In the figure below is illustrated a randomly chosen benchmark of DRIVE and the corresponding new benchmark image. Afterward, we calculated the measures for all the 20 images of test set of the DRIVE dataset with new benchmark.

The average TPR is achieved 0.4544 that means our algorithm can detect 45.44 percent of the thin vessels pixels. The average accuracy, FPR, and informedness are achieved 0.9616, 0.0164 and 0.4387 respectively. In this section we use a new measure called J index (or informedness) that is obtained as J = sensitivity + specificity – 1. F-score only considers two positive classes (precision and sensitivity) but the J index, considers information from both positive and negative classes (sensitivity and specificity). The ability of the algorithms with the informedness shows better than TPR alone.

(a) image (b) image

(a) Expert's annotation. (b) the corresponding new benchmark that made by us.

Now RUN Demo_ActiveContoure.m and Enjoy it!