Example of image denoising using FISTA.
#include <string>
#include <Eigen/Core>
#include <Eigen/SparseCore>
#include "image_denoising_common.h"
auto main(int argc, char** argv) -> int {
int sample_image_index = 1;
if (!initialize(argc, argv, sample_image_index)) {
return 1;
}
Eigen::MatrixXd origin;
if (!generate_sample_image(sample_image_index, origin)) {
return 1;
}
Eigen::MatrixXd data = origin;
const Eigen::VectorXd data_vec = data.reshaped<Eigen::ColMajor>();
using coeff_type = Eigen::SparseMatrix<double>;
coeff_type coeff;
coeff.resize(size, size);
coeff.setIdentity();
using solver_type =
solver_type solver;
const auto& initial_solution = data_vec;
solver, data_vec, initial_solution};
Eigen::VectorXd solution_vec = initial_solution;
const Eigen::MatrixXd solution =
solution_vec.reshaped<Eigen::ColMajor>(rows, cols);
visualize_result(origin, data, solution, "FISTA", "fista");
return 0;
}
Definition of add_noise function.
Class for fast iterative shrinkage-thresholding algorithm (FISTA) beck2009 for L1-regularization of l...
void compute(const Coeff &coeff, const Data &data)
Compute internal parameters.
Class to search optimal regularization parameter using GCV.
void solve(data_type &solution) const
Solver with the optimal regularization parameter.
void search()
Search the optimal regularization parameter.
Definition of fista class.
Definition of implicit_gcv class.
Definition of index_type type.
std::ptrdiff_t index_type
Type of indices in this library.
void add_noise(Eigen::MatrixXd &data, double rate)
Add noise to data.