1 #ifndef L2_DIFFERENTIABLE_FUNC
2 #define L2_DIFFERENTIABLE_FUNC
10 template<
typename SCALAR>
20 const LinearTransform& Phi): LT(Phi),
sigma(
sigma)
30 void gradient(Vector &output,
const Vector &image,
const Vector &residual,
31 const LinearTransform &Phi)
override
33 output = Phi.adjoint() * (residual / (sigma * sigma));
36 Real
function(Vector
const &image, Vector
const &y, LinearTransform
const &Phi)
override
39 Real Likelihood = 0.5 * ((Phi*image) - y).squaredNorm() / (sigma * sigma);
typename FB::t_LinearTransform t_LinearTransform
typename FB::t_Gradient t_Gradient
typename FB::t_Vector t_Vector
void log_message() const override
L2DifferentiableFunc(const Real sigma, const LinearTransform &Phi)
void gradient(Vector &output, const Vector &image, const Vector &residual, const LinearTransform &Phi) override
#define SOPT_HIGH_LOG(...)
High priority message.
real_type< T >::type sigma(sopt::LinearTransform< Vector< T >> const &sampling, sopt::Image< T > const &image)