File Exchange

image thumbnail

Active Contour Segmentation

version (10.5 KB) by Shawn Lankton
Finds foreground and background regions using level sets and active contours.


Updated 31 Mar 2016

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:

[ ]

Cite As

Shawn Lankton (2021). Active Contour Segmentation (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (43)

Shiva Moghtaderi

Really useful thank you so much for this!!

Omer Sapir

Bar Cohen

Refaat Gabr

zink chen

This self-contained program is very helpful and useful.

mariena aloor

Respected Sir
I want to segment WBC from blood smear image can you help me to segment this WBC from the image.Can you work out this algorithm for me my mail id is

IB Teguh Teja M

this run in octave ...


this code is not worked properly for other images, that why?

Johny Bravo

While running it is showing not enough input arguments

Md Monirul Islam

While running it is showing not enough input arguments

Sapna S



thank you. this is very useful for me .


When we add other image it isnt implementing

diw sun

thank you

Shashank S


Thank you for this contribution.

Harika Basamgari

afshin shoeibi



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?


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

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



send to me



how to specify re-initialization in this code?



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

Chaitanya Kumar

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!

Tong Kuan Chuah

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




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.

MATLAB Release Compatibility
Created with R2007a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!