ovusculeSnake2D
Interface OvusculeSnake2D


public interface OvusculeSnake2D

This interface encapsulates the number-crunching aspect of snakes.

See Also:
OvusculeSnake2DKeeper, OvusculeSnake2DNode

Method Summary
 double energy()
          The purpose of this method is to compute the energy of the snake.
 java.awt.geom.Point2D.Double[] getEnergyGradient()
          The purpose of this method is to compute the gradient of the snake energy with respect to the snake-defining nodes.
 OvusculeSnake2DNode[] getNodes()
          This method provides an accessor to the snake-defining nodes.
 OvusculeSnake2DScale[] getScales()
          The purpose of this method is to detemine what to draw on screen, given the current configuration of nodes.
 void setNodes(OvusculeSnake2DNode[] node)
          This method provides a mutator to the snake-defining nodes.
 

Method Detail

energy

double energy()
The purpose of this method is to compute the energy of the snake. This energy is usually made of three additive terms: 1) the image energy, which gives the driving force associated to the data; 2) the internal energy, which favors smoothness of the snake; and 3) the constraint energy, which incorporates a priori knowledge. This method is called repeatedly during the optimization of the snake. It is imperative that this function be everywhere differentiable with respect to the snake-defining nodes.

Returns:
Return a number that should attain a minimal value when the snake is optimal. Negative values are admissible.

getEnergyGradient

java.awt.geom.Point2D.Double[] getEnergyGradient()
The purpose of this method is to compute the gradient of the snake energy with respect to the snake-defining nodes. This method is called repeatedly during the optimization of the snake. The optimization takes place under the control of the method OvusculeSnake2DKeeper.interactAndOtimize().

Returns:
Return an array that contains the gradient values associated to each node. They predict the variation of the energy for a horizontal or vertical displacement of one pixel. The ordering of the nodes must follow that of getNodes(). If null is returned, the optimizer within the class OvusculeSnake2DKeeper will attempt to estimate the gradient by a finite-difference approach.
See Also:
getNodes()

getNodes

OvusculeSnake2DNode[] getNodes()
This method provides an accessor to the snake-defining nodes.

Returns:
Return an array of subpixel node locations. It is expected that the ordering of the nodes and the number of nodes does not change during the lifetime of the snake.
See Also:
setNodes(ovusculeSnake2D.OvusculeSnake2DNode[])

getScales

OvusculeSnake2DScale[] getScales()
The purpose of this method is to detemine what to draw on screen, given the current configuration of nodes. This method is called repeatedly during the user interaction provided by the method OvusculeSnake2DKeeper.interactAndOptimize(). The origin of coordinates lies at the top-left corner of the display parameter. Collectively, the array of scales forms the skin of the snake.

Returns:
Return an array of OvusculeSnake2DScale objects. Straight lines will be drawn between the apices of each polygon, in the specified color. It is not necessary to maintain a constant number of polygons in the array, or a constant number of apices in a given polygon.
See Also:
OvusculeSnake2DScale

setNodes

void setNodes(OvusculeSnake2DNode[] node)
This method provides a mutator to the snake-defining nodes. It will be called repeatedly by the method OvusculeSnake2DKeeper.interactAndOptimize().

Parameters:
node - Array of subpixel node locations.
See Also:
getNodes()