Alpha Expansion Library
C++ library for the Alpha-Expansion graph-cut algorithm with Python bindings
Loading...
Searching...
No Matches
BKSolver.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "bk_maxflow_impl/energy.h"
5
15template <typename T>
16class BKSolver : public MaxFlowSolver<T> {
17 typedef Energy<T, T, T> EnergyT;
18 EnergyT* e;
19
20public:
24 BKSolver(int var_num_max, int edge_num_max) {
25 e = new EnergyT(var_num_max, edge_num_max);
26 }
27
28 ~BKSolver() override {
29 delete e;
30 }
31
32 typename MaxFlowSolver<T>::Var add_variable() override { return e->add_variable(); }
33 void add_constant(T E) override { e->add_constant(E); }
34 void add_term1(typename MaxFlowSolver<T>::Var x, T E0, T E1) override { e->add_term1(x, E0, E1); }
36 T E00, T E01, T E10, T E11) override { e->add_term2(x, y, E00, E01, E10, E11); }
37 T minimize() override { return e->minimize(); }
38 int get_var(typename MaxFlowSolver<T>::Var x) override { return e->get_var(x); }
39};
MaxFlowSolver backed by the Boykov–Kolmogorov max-flow algorithm.
Definition BKSolver.hpp:16
int get_var(typename MaxFlowSolver< T >::Var x) override
Definition BKSolver.hpp:38
void add_term2(typename MaxFlowSolver< T >::Var x, typename MaxFlowSolver< T >::Var y, T E00, T E01, T E10, T E11) override
Definition BKSolver.hpp:35
void add_term1(typename MaxFlowSolver< T >::Var x, T E0, T E1) override
Definition BKSolver.hpp:34
T minimize() override
Minimizes the energy and returns the minimum value.
Definition BKSolver.hpp:37
~BKSolver() override
Definition BKSolver.hpp:28
BKSolver(int var_num_max, int edge_num_max)
Constructs the solver with pre-allocated capacity.
Definition BKSolver.hpp:24
MaxFlowSolver< T >::Var add_variable() override
Introduces a new binary variable and returns its handle.
Definition BKSolver.hpp:32
void add_constant(T E) override
Adds a constant term to the energy function.
Definition BKSolver.hpp:33
Abstract interface for a binary max-flow / QPBO solver.
Definition MaxFlowSolver.hpp:15
int Var
Integer handle identifying a binary variable.
Definition MaxFlowSolver.hpp:20