Need help or advice ? Come to the Icy club ! - Every other Thursday morning from 9h30 to 12h30 - Francois Jacob Building - Main hall - Pasteur

Associated publications

Don't forget the authors !
If you use this plugin, please cite it in your publication !

User reviews

5 star
4 star
3 star
2 star
1 star
average rating: 5

Please log-in to post a review
Fabrice de Chaumont
14 Oct 2013 17:30
Very simple and intuitive. The Youtube example is a good idea to better understand how to use the plugin. Still, the nyan cat background is very ugly :)
26 Apr 2013 10:46

Active Cells 3D

by Biomedical Imaging Group

This plug-in implements fast active surfaces for 3D image segmentation. Their representation in terms of spline surfaces allows for a natural and intiutive manipulation of the surface.

Publication Id
See technical details
View complete changelog


This software implements a fast active-contour model (a.k.a. snake) for image segmentation in 3D microscopy. The proposed 3D snake can approximate blob-like objects with good accuracy and can perfectly reproduce spheres and ellipsoids, irrespective of their position and orientation. The modification of one control point affects a limited region of the snake surface, which favors intuitive interactions with the user. Since our shape model is fully characterized by few control points, the design of customized shapes becomes possible by simple manipulation of these points in the same way that control points are used in the NURBS meshes typical of computer-aided industrial designs.

Written by Ricard Delgado-Gonzalo at the Biomedical Image Group (BIG), EPFL, Switzerland.

Technical Details

Among all different possible curve representations, we use a B-spline representation characterized by control points. These points (red/green crosses) define a control surface that controls the continuous representation of the snake (reddish wireframe). The evolution of the curve is formulated as a minimization problem. The associated cost function is called snake energy. In our case we add up a combination of contour and region energies (i.e., α Econtour + (1-α) Eregion) and a combination of internal energies (i.e.Eboundary + γ Estiffness).

  • The contour energy corresponds to the integral of the projection of the image gradient onto the curve. This energy uses a smoothed version of the input image with a Gaussian kernel of standard deviation σ.
  • The region energy maximizes the difference of intensity between the region enclosed by the curve, and the intensity of a region within and an extended shell.
  • The boundary energy keeps the snake away from the borders of the image.
  • The stiffness energy prevents the surface from twisting and self-intersecting.

For a formal definition of the different energy terms as well as the B-spline representation, refer to the publications on the reference section.



The plug-in requires no image at launch. All types of 3D images (i.e., z-stacks) are accepted. For 2D images and 2D sequences consider using our Active Cells plug-in instead. In the case of multi-channel images, the processing is performed on the channel selected on the main plug-in interface.

Main Panel

The main interface window is divided in four differentiated panels: the image panel, the snake options panel, the display options panel, and the interaction panel. When the plug-in is initiated, each panel is set to basic mode. In this mode, only the most important options are shown. Each panel switches to advanced mode when the user clicks on any empty region of the panel (see Fig. 1 and Fig. 2).

Figure 1. Main panel in basic mode. Figure 2. Main panel in advanced mode.

Image panel

This panel contains the options and parameters related to the active image; that is, the image that is being analyzed. When a new image is selected, the parameters in the panel update accordingly.

  • Image: This non-editable text field contains the name of the active image.
  • Channel: This option determines the channel in which the processing is performed. The combo box updates automatically when a different image is selected.
  • Smoothing: Standard deviation σ of the 3D Gaussian kernel that is used to smooth the image when computing the contour energy. The filtering is applied isotropically.

Snake options panel

This panel contains the options and parameters related to the active snake; that is, the snake that the user can interact with. When a new snake is selected or created, the parameters in the panel update accordingly.

  • Target brightness: This option determines if the snake will be attracted to Dark or Bright targets.
  • Control points: The parameter determines the number of control points, it is not the number itself. I we denote this parameter M, the total number of control points displayed on the image is M*(M-1)+6.
  • Energy type: This option determines if the snake evolves following the Contour energy, the Region energy, or a Mixture of both.
  • Alpha: Trade-off parameter that balances the contribution of the contour energy and the region energy when the mixture is used. The values of α are inside the interval [0,1].
  • Gamma: Trade-off parameter that balances the contribution of the stiffness energy. The values of γ must be greater or equal than zero.
  • Max iterations: Number of iterations of the optimizer when evolving the snake.
  • Immortal: If checked, the optimizer will stop when the snake has totally converged; that is, when the snake has reached the minimum of the energy functional.

Display options panel

This panel contains the options and parameters related to the visualization of the active snake; the snake that the user can interact with. When a new snake is selected or created, the parameters in the panel update accordingly.

  • Mesh resolution: This option determines the density of the wireframe overlaid onto the active image. Three options are available: Low, Normal, High.
  • Mesh thickness: This parameter determines the thickness of the lines composing the wireframe of the snake as well as the control points. The values of are inside the interval [1,10].
  • Mesh transparency: In a 2D viewer, this parameter controls which lines of the snake wireframe are rendered in the overlay. The lines crossing the current z-slice are always displayed and they become transparent the further they are from the current z-slice. The minimum value of this parameter is 1, where the complete wireframe is rendered.
  • Show evolution: If checked, when the snake is being optimized, the intermediate steps will be rendered onto the screen.

Interaction panel

This panel contains a set of buttons for creating, interacting, and deleting snakes.

The 'plus' button creates a new snake in the active image with the parameters of the Snake Options Panel. The snake is initialized in the center of the image.
When this tool is selected, the mouse interaction switches to move mode. When the cursor is on top of a control point, it will become green (selected) informing that it is draggable. If all control points appear as selected, the curve itself will be draggable.
When this tool is selected, the mouse interaction switches to 2D resizing mode. To resize the snake, drag it. All control points will appear as selected and the surface will be scaled with respect to the center of gravity of the snake within the selected interaction plane (XY, YZ, or XZ). 
When this tool is selected, the mouse interaction switches to rotation mode. To rotate a snake, drag it. All control points will appear as selected and the surface will be rotated perpendicular to the selected interaction plane (XY, YZ, or XZ). 
The 'play' button (a right-pointing black triangle) is used to start optimizing the active snake.
The 'ff' button (a double right-pointing black triangle) is used to start optimizing in parallel all snakes within the active image.
The "trash bin" button erases the active snake from the image.

User Interaction

Any snake can be manipulated thanks to the combination of mouse actions and the set of tools present in the Interaction Panel. The image canvas provides real-time feedback of how the actions are being performed.

Activate snake

A snake within an image is said to be active when it can be manipulated by mouse actions. To activate a snake, click anywhere within the region enclosed by the snake. Then, the associated control points will appear, and the previous active snake are set to inactive.

Move a control point

To move a control point, simply drag it. The point closest to where you clicked will change color and be moved to the position where you release the mouse.

Move a snake

To move a snake, drag it within the image. All the control points of the selected snake will change color and be moved to the position where you release the mouse. Alternatively, you can use the keyboard arrow keys to get a finer control over the position of the snake.

Copy/paste a snake

To copy the shape and attributes of the active snake, press Ctrl+C. Press Ctrl+V to paste it in the active image. Note: the copied snake can be pasted in a different image from where it was originally copied.

Menu bar


  • Generate mask: Creates a binary image of the same size than the active image with a reasterization of the volume enclosed by the surface of the snake.


  • Documentation (online): This is a link to this manual in the official Icy repository.
  • About: Opens a window with the logo of the plug-in.


R. Delgado-Gonzalo, V. Uhlmann, D. Schmitter, M. Unser, "Snakes on a Plane: A Perfect Snap for Bioimage Analysis," IEEE Signal Processing Magazine, vol. 32, no. 1, pp. 41-48, January 2015.

R. Delgado-Gonzalo, N. Chenouard, M. Unser, "Spline-Based Deforming Ellipsoids for Interactive 3D Bioimage Segmentation," IEEE Transactions on Image Processing, vol. 22, no. 10, pp. 3926-3940, October 2013.

R. Delgado Gonzalo, "Segmentation and Tracking in High-Throughput Bioimaging," Swiss Federal Institute of Technology Lausanne, EPFL Thesis no. 5657 (2013), 186 p., March 15, 2013.

R. Delgado-Gonzalo, N. Chenouard, M. Unser, "Fast Parametric Snakes for 3D Microscopy," Proceedings of the Ninth IEEE International Symposium on Biomedical Imaging: From Nano to Macro (ISBI'12), Barcelona, Spain, May 2-5, 2012.


This work would not have been possible without the contribution of

  • Nicolas Chenouard (
  • Philippe Thévenaz (
  • Emrah Bostan (
  • Ulugbek S. Kamilov (
  • Ramtin Madani (
  • Masih Nilchian (
  • Cédric Vonesch (
  • Virginie Uhlmann (
  • Michael Unser (