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.
3.) Run >>region_seg_demo
See this site for experiments, videos, and more information on segmentation, active contours, and level sets:
thank you. this is very useful for me .
When we add other image it isnt implementing
Thank you for this contribution.
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
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..
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!
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!
very help ful code...thnx
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
thank you, really helps a lot with my project.. been to your web site, also really usefull.. :)
hi,profess,when I run it,it says:"Error in ==> region_seg at 70
I don't know how to deal it.Could you tell me how should I do next please.
Thank you very much!!
Great self-contained demo. It runs right out of the box, and is very fast.
Adding BSD Licence
Fixed mlint errors, streamlined code, added more help, corrected typos.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.