SOPT
Sparse OPTimisation
Functions
gradient_operator.cc File Reference
#include <catch2/catch_all.hpp>
#include <memory>
#include <random>
#include "sopt/config.h"
#include "sopt/gradient_operator.h"
#include "sopt/types.h"
#include "sopt/utilities.h"
#include "tools_for_tests/directories.h"
#include "tools_for_tests/tiffwrappers.h"
+ Include dependency graph for gradient_operator.cc:

Go to the source code of this file.

Functions

 TEST_CASE ("Gradient Operator")
 

Function Documentation

◆ TEST_CASE()

TEST_CASE ( "Gradient Operator"  )

Definition at line 15 of file gradient_operator.cc.

15  {
16  using namespace sopt;
17  // Some type aliases for simplicity
18  using Scalar = double;
19 
21 
23 
24  using Image = sopt::Image<Scalar>;
25 
26  Image const image = sopt::tools::read_standard_tiff("cameraman256");
27  auto const psi = sopt::gradient_operator::gradient_operator<Scalar>(image.rows(), image.cols());
28  Matrix input = Matrix::Ones(image.rows(), image.cols());
29  for (Eigen::Index i(0); i < image.rows(); i++) input.row(i) *= static_cast<Scalar>(i);
30  Vector output = psi.adjoint() * Vector::Map(input.data(), input.size());
31  CAPTURE(output.segment(0, 5));
32  CAPTURE(output.segment(image.size(), 5));
33  CHECK(output.size() == 2 * input.size());
34  CHECK(output.segment(0, input.size()).isApprox(Vector::Zero(input.size())));
35  CHECK(output.segment(input.size(), input.size() - 1)
36  .isApprox(Vector::Constant((Eigen::Index)0.5, input.size() - 1)));
37  input = Matrix::Ones(image.rows(), image.cols());
38  for (Eigen::Index i(0); i < image.cols(); i++) input.col(i) *= static_cast<Scalar>(i);
39  output = psi.adjoint() * Vector::Map(input.data(), input.size());
40  CAPTURE(output.segment(0, 5));
41  CAPTURE(output.segment(image.size(), 5));
42  CHECK(output.size() == 2 * input.size());
43  CHECK(output.segment(0, input.size() - 1).isApprox(Vector::Constant((Eigen::Index)0.5, input.size() - 1)));
44  CHECK(output.segment(input.size(), input.size()).isApprox(Vector::Zero(input.size())));
45 }
sopt::t_real Scalar
Image read_standard_tiff(std::string const &name)
Reads tiff image from sopt data directory if it exists.
Definition: tiffwrappers.cc:9
Eigen::Array< T, Eigen::Dynamic, Eigen::Dynamic > Image
A 2-dimensional list of elements of given type.
Definition: types.h:39
Eigen::Matrix< T, Eigen::Dynamic, 1 > Vector
A vector of a given type.
Definition: types.h:24
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > Matrix
A matrix of a given type.
Definition: types.h:29

References sopt::tools::read_standard_tiff().