Line data Source code
1 : #pragma once 2 : 3 : #include "Functional.h" 4 : 5 : namespace elsa 6 : { 7 : template <typename data_t = real_t> 8 : class IsotropicTV : public Functional<data_t> 9 : { 10 : public: 11 : explicit IsotropicTV(const DataDescriptor& domainDescriptor); 12 : 13 : IsotropicTV(const IsotropicTV<data_t>&) = delete; 14 : 15 48 : ~IsotropicTV() override = default; 16 : 17 : protected: 18 : data_t evaluateImpl(const DataContainer<data_t>& Rx) const override; 19 : 20 : void getGradientImpl(const DataContainer<data_t>& Rx, 21 : DataContainer<data_t>& out) const override; 22 : 23 : LinearOperator<data_t> getHessianImpl(const DataContainer<data_t>& Rx) const override; 24 : 25 : IsotropicTV<data_t>* cloneImpl() const override; 26 : 27 : bool isEqual(const Functional<data_t>& other) const override; 28 : }; 29 : 30 : } // namespace elsa