#include <MumfordShahEnergy.hpp>
Public Member Functions | |
template<class const_accessor_t> | |
MumfordShahEnergy (const const_accessor_t &image, const shape_t &initial_shape, float_t beta, std::size_t n_integration_points) | |
ublas::vector< float_t > & | current_argument () |
float_t | current_energy () const |
std::size_t | dimension () const |
const shape_t & | current_shape () const |
const ublas::vector< float_t > & | current_gradient () const |
void | set_argument () |
void | set_argument_with_gradient () |
This class template implements the simplified version of the Mumford-Shah functional for shapes of the type shape_t. The template parameter shape_t must implement ShapeInterface.
The simplified Mumford-Shah functional reads as follows:
where
Upon construction a MumfordShah object is initialized to an Image and an initial shape .
Then, the MumfordShah objects maps a vector to the corresponding energy as follows:
imaging::MumfordShahEnergy< shape_t >::MumfordShahEnergy | ( | const const_accessor_t & | image, | |
const shape_t & | initial_shape, | |||
float_t | beta, | |||
std::size_t | n_integration_points | |||
) | [inline] |
Constructs a MumfordShahEnergy energy object from an image accessor and shape statistics.
References imaging::compute_divergence_field(), imaging::increment_index(), imaging::MumfordShahEnergy< shape_t >::set_argument_with_gradient(), and imaging::square().
ublas::vector<float_t>& imaging::MumfordShahEnergy< shape_t >::current_argument | ( | ) | [inline, virtual] |
Access the current argument of the energy. In general the user should not resize the current argument!
Implements imaging::EnergyInterface.
float_t imaging::MumfordShahEnergy< shape_t >::current_energy | ( | ) | const [inline, virtual] |
Returns the current energy. This function should not actually compute the current energy but return the cached result of the last call to set_argument()!
Implements imaging::EnergyInterface.
std::size_t imaging::MumfordShahEnergy< shape_t >::dimension | ( | ) | const [inline, virtual] |
Returns the dimension the class expects as input data. The function current_argument() will return a vector of this dimension and the user should not change the size of this vector!
Implements imaging::EnergyInterface.
Referenced by imaging::MumfordShahEnergy< shape_t >::set_argument_with_gradient().
const shape_t& imaging::MumfordShahEnergy< shape_t >::current_shape | ( | ) | const [inline, virtual] |
Returns the current shape. This function should not actually compute the current shape but return the cached result of the last call to set_argument()!
Implements imaging::ShapeEnergyInterface< shape_t >.
const ublas::vector<float_t>& imaging::MumfordShahEnergy< shape_t >::current_gradient | ( | ) | const [inline, virtual] |
Returns the current gradient. This function should not actually compute the current energy but return the cached result of the last call to set_argument()!
Implements imaging::DifferentiableEnergyInterface.
void imaging::MumfordShahEnergy< shape_t >::set_argument | ( | ) | [inline, virtual] |
Compute the energy value corresponding to the current argument. This is where the main work of the energy evaluation should be done.
Implements imaging::EnergyInterface.
void imaging::MumfordShahEnergy< shape_t >::set_argument_with_gradient | ( | ) | [inline, virtual] |
Compute the energy value and the gradient corresponding to the current argument. This is where the main work of the energy evaluation should be done. In contrast to set_argument() this function also computes the gradient. I.e. in general it is more expensive than set_argument().
Implements imaging::DifferentiableEnergyInterface.
References imaging::MumfordShahEnergy< shape_t >::dimension(), and imaging::square().
Referenced by imaging::MumfordShahEnergy< shape_t >::MumfordShahEnergy().