View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Trainable COSFIRE filters for vessel delineation with application to retinal images

4.75
4.8 | 14 ratings Rate this file 54 Downloads (last 30 days) File Size: 838 KB File ID: #49172 Version: 1.2
image thumbnail

Trainable COSFIRE filters for vessel delineation with application to retinal images

by

 

26 Jan 2015 (Updated )

B-COSFIRE filters detect line at different orientations by combining the responses of DoG filters.

| Watch this File

File Information
Description

Retinal imaging provides a non-invasive opportunity for the diagnosis of several medical pathologies. The automatic segmentation of the vessel tree is an important pre-processing step which facilitates subsequent automatic processes that contribute to such diagnosis.
V1.2: Visualize B-COSFIRE output response and segmented image when Application() is called without output parameters.
V1.1: Computation of the orientation map added.
We introduce a novel method for the automatic segmentation of vessel trees in retinal fundus images. We propose a filter that selectively responds to vessels and that we call B-COSFIRE with B standing for bar which is an abstraction for a vessel. It is based on the existing COSFIRE (Combination Of Shifted Filter Responses) approach. A B-COSFIRE filter achieves orientation selectivity by computing the weighted geometric mean of the output of a pool of Difference-of-Gaussians filters, whose supports are aligned in a collinear manner. It achieves rotation invariance efficiently by simple shifting operations.
The proposed filter is versatile as its selectivity is determined from any given vessel-like prototype pattern in an automatic configuration process. We configure two B-COSFIRE filters, namely symmetric and asymmetric, that are selective for bars and bar-endings, respectively. We achieve vessel segmentation by summing up the responses of the two rotation-invariant B-COSFIRE filters followed by thresholding.
If you use this script please cite the following papers:
[1] "George Azzopardi, Nicola Strisciuglio, Mario Vento, Nicolai Petkov, Trainable COSFIRE filters for vessel delineation with application to retinal images, Medical Image Analysis, Available online 3 September 2014, ISSN 1361-8415, http://dx.doi.org/10.1016/j.media.2014.08.002"
[2] “N. Strisciuglio, G. Azzopardi, M. Vento, and N. Petkov” - Supervised vessel delineation in retinal fundus images with the automatic selection of B-cosfire filters. Machine Vision and Applications, doi:10.1007/s00138-016-0781-7

Acknowledgements

Trainable Cosfire Filters For Keypoint Detection And Pattern Recognition inspired this file.

Required Products Image Processing Toolbox
Signal Processing Toolbox
Statistics and Machine Learning Toolbox
MATLAB
MATLAB release MATLAB 7.14 (R2012a)
MATLAB Search Path
/
/__MACOSX
/__MACOSX/v1.2
/__MACOSX/v1.2/BCOSFIRE_matlab
/__MACOSX/v1.2/BCOSFIRE_matlab/COSFIRE
/__MACOSX/v1.2/BCOSFIRE_matlab/Gabor
/__MACOSX/v1.2/BCOSFIRE_matlab/Performance
/__MACOSX/v1.2/BCOSFIRE_matlab/Preprocessing
/__MACOSX/v1.2/BCOSFIRE_matlab/data
/__MACOSX/v1.2/BCOSFIRE_matlab/data/DRIVE
/__MACOSX/v1.2/BCOSFIRE_matlab/data/DRIVE/test
/__MACOSX/v1.2/BCOSFIRE_matlab/data/DRIVE/test/images
/v1.2
/v1.2/BCOSFIRE_matlab
/v1.2/BCOSFIRE_matlab/COSFIRE
/v1.2/BCOSFIRE_matlab/Gabor
/v1.2/BCOSFIRE_matlab/Performance
/v1.2/BCOSFIRE_matlab/Preprocessing
/v1.2/BCOSFIRE_matlab/data
/v1.2/BCOSFIRE_matlab/data/DRIVE
/v1.2/BCOSFIRE_matlab/data/DRIVE/test
/v1.2/BCOSFIRE_matlab/data/DRIVE/test/images
Other requirements mex compiler
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (25)
24 Dec 2016 Nicola Strisciuglio

Xingtian dong,
you can find instructions in the README file, where it says that you have to run the script BeforeRunning.m in order to compile a MEX file required by COSFIRE filters.

Comment only
15 Dec 2016 xingtian dong

I can't run it. It says you haven't define 'dilate'.
blurshift>maxgaussianfilter (line 44)
Z = dilate(dilate(Z1,gauss1D,f1(1)-1,f1(end),f2(1)-1,f2(end)),gauss1D',f1(1)-1,f1(end),f2(1)-1,f2(end));

Comment only
06 Nov 2016 Nicola Strisciuglio

Dear Haolin,
the problem was that you tried to call Application() without an output parameter.
If you wanted the B-COSFIRE response only, you could call
resp = Application();

If you wanted also the orientation map you could type
[resp, oriensmap] = Application();

Anyway, I corrected this bug and if you download the actual code, MATLAB will visualize the B-COSFIRE response image and the binary vessel map in two different windows when Application() is called without output parameters.

Comment only
05 Nov 2016 haolin

haolin (view profile)

Dear Muhammad, ‘Reference to non-existent field 'respimage'.

Error in Application (line 56)
output.segmented = (output.respimage > 37);’,i don't know what cuase that, please tell me , thank you

05 Nov 2016 haolin

haolin (view profile)

Dear Muhammad, ‘Reference to non-existent field 'respimage'.

Error in Application (line 56)
output.segmented = (output.respimage > 37);’,i don't know what cuase that, please tell me , thank you

05 Nov 2016 haolin

haolin (view profile)

Thanks for your research, it's extremely promote my work!!!

19 Aug 2016 Pavel Vostatek

30 Jun 2016 lei ru

lei ru (view profile)

good jop!

09 Mar 2016 Ciro Mascolo

22 Dec 2015 Nicola Strisciuglio

Dear Muhammad,
L is a parameter whose value has to be chosen by you. It should be the average width (in terms of pixels) of the vessels you want to detect in your images.

Comment only
12 Dec 2015 Muhammad Usman khan

Hello Nicola,
can you please provide details that how to estimate a reasonable value of sigma. I have funds images having size of 2 MB. I got a lot of noise. I found an equation in section 3.6 to estimate sigma automatically but I don't understand that how to compute the value of "L" in that equation.

22 Oct 2015 ting su

18 Sep 2015 Philipp

Thanks for the submission, works great!
One comment/tip: the quality of the result improves significantly when applying illumination correction, i.e. subtracting from the grayscale image the median filtered image with large region size (I use 25 pixels).

Comment only
25 Jun 2015 Nicola Strisciuglio

Dear Michal,
The parameters of the filter, especially the sigma and the rho, are specific for the characteristics of the vessel-like structures that you want to detect. For high-resolution images, I would expect thicker vessels, so I would use lager values for "sigma". It is the same (more or less) if you reduce the resolution of the images: in this case the vessels become thinner and you can use lower values of sigma. By the way, in Section 3.4 of the paper "Trainable COSFIRE filters for vessel delineation with application to retinal images" there is a suggestion about how to estimate a reasonable value of sigma. Hope it was helpful.

Comment only
18 Jun 2015 Michal

Michal (view profile)

quick follow up on my previous comment. high resolution of picture causes the algorithm to break and pick up a lot of noise, upon re sizing <1000px works like charm and is super fast

18 Jun 2015 Michal

Michal (view profile)

How should I select the symmfilter and asymmfilter parameters ? when i try to use the same as in demo for my fundus image the segmentation pick up a lot of noise. Or I'm missing some pre-processing step ? Any advice on how to segment this image will be appreciatted.
https://goo.gl/0A4pSe

Thank you
Michal

Comment only
18 Jun 2015 peppeweb dalessio

Very fast algorithm!

22 May 2015 Astone

Astone (view profile)

15 May 2015 ESTEFANÍA

07 May 2015 Ugo Moschini

07 May 2015 Shahab Aslani

27 Mar 2015 Nicola Strisciuglio

Hi zoaia asif, in the zip package you find a README file with the instructions.

Comment only
27 Mar 2015 zoaia asif

how to run these codes? and which m file to run initially?

Comment only
16 Mar 2015 Nicola Strisciuglio

We use a vector of the type 0:255 (so 256 values) in Matlab. It indicates the interval for the scaling of the response image and the set of thresholds to use for the evaluation of the algorithm.

Comment only
13 Mar 2015 Sana Alam

What is the value of span in getStatsData function?

Comment only
Updates
15 May 2015 1.0

this is not a toolbox

05 Sep 2016 1.1

Changelog
v1.1
    1) Feature for the computation of the orientation map added.
    2) B-COSFIRE filter configuration performed on a vertical-oriented
        prototype pattern as described in [1]

06 Nov 2016 1.2

V1.2: Visualize B-COSFIRE output response and segmented image when Application() is called without output parameters.

Contact us