File Exchange

image thumbnail

Active Contour Segmentation

version 1.0 (10.5 KB) by

Finds foreground and background regions using level sets and active contours.

140 Downloads

Updated

View License

This code implements the well-known Chan-Vese segmentation algorithm from the paper "Active Contours Without Edges."
This technique deforms an initial curve so that it separates foreground from background based on the means of the two regions. The technique is very robust to initialization and gives very nice results when there is a difference between the foreground and background means.

This code uses active contours and level sets in the implementation. It could also serve as a good framework for implementing all kinds of region-based active contour energies.

1.) Download
2.) Unzip
3.) Run >>region_seg_demo

See this site for experiments, videos, and more information on segmentation, active contours, and level sets:

[ http://www.shawnlankton.com/2007/05/active-contours/ ]

Comments and Ratings (31)

Sapna S

Jimmy

Jimmy (view profile)

Anu

Anu (view profile)

thank you. this is very useful for me .

When we add other image it isnt implementing

diw sun

thank you

Shashank S

V RAJINIKANTH

Thank you for this contribution.

Dhivya

Dhivya (view profile)

Dhivya

Dhivya (view profile)

Very helpful code..
How initialization of mask is done in active contours?
I tried the file with a different image and not getting proper output.. Should initialization of mask be done separately for different images?

ELI

ELI (view profile)

Thanks for your tool, works grate.
one important bug - it's needed to add "abs" in line 60:

dt = .45/(max(abs(dphidt))+eps);

ELI

ELI (view profile)

send to me

vaishali

vaishali

how to specify re-initialization in this code?

Nam

Nam (view profile)

Irina

Irina (view profile)

hello, may be do you know algorithm that find edges of region by given one point inside the region in ultrosound image? and may be do you have the matlab code for it? thank you

Sir it is easy to segment images with clear background, but when i am trying for MRI images of Prostate or brain, then the segmentation is not upto the mark, i have tried changing certain parameters of your code, but failed to achieve perfection. please advise me how can i segment the MRI images using this technique..

sahil dhawan

I have taken a snapshot using my laptop camera which is a 3D image but this code works only with 2D image.
How to proceed plz help!
reply asap!

It is a useful and fast program. I'm studying the coding of the version of region_seg.m modified on 14th Apr 2008 and hope to develop upon the code e.g. (incorporate termination criterion, use for other variation of snakes). Could you provide some insight regarding several questions listed here?

1. Problem anticipated: the program will have trouble when original image is double RGB. => all pixels become zero because of uint8(img).
Lines 140 to 143 seems not necessary.

2. Line 99, why change the level to 0.5 higher at interior of the contour, 0.5 lower at exterior of the contour?

3. Why +eps at line 51 when the values are the same without eps?

4. Line 124, for central difference of first derivative, is there a missing factor of 0.5 for the whole term? Won't this cause inconsistency in the spatial steps?

5. Line 134, why is there an additional factor (phi_x2 + phi_y2).^(1/2) for curvature (curvature formula I obtained is without this factor)?

6. How is line 60 obtained, which uses different time step each iteration?

7. Time step 0.5 for re-initialization (line 66) seems to be arbitrarily chosen. What is the bound this value can be varied within stable condition?

Thank you for your attention. Your insight is greatly appreciated!

waqar ahmed

very help ful code...thnx

Nitin

Nitin (view profile)

Nitin

Nitin (view profile)

Ben

Ben (view profile)

Jun.C ù

Mona Elshinawy

Mona Elshinawy

I tried the code on mammograms and it was working but the 250 iterations were not enough at all to get the breast contour, I was trying to figure out what to change in your code to have larger steps for each iteration. I use very large images(ex.4069x2084).Your cooperation is greatly appreciated

Puteri Sulaiman

thank you, really helps a lot with my project.. been to your web site, also really usefull.. :)

wang mian

hi,profess,when I run it,it says:"Error in ==> region_seg at 70
showCurveAndPhi(I,phi,its); ",
I don't know how to deal it.Could you tell me how should I do next please.
Thank you very much!!

James Malcolm

Great self-contained demo. It runs right out of the box, and is very fast.

Updates

1.0

Adding BSD Licence

Fixed mlint errors, streamlined code, added more help, corrected typos.

MATLAB Release
MATLAB 7.4 (R2007a)

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

» Watch video