X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fgraphcut.h;fp=lib%2Fgraphcut.h;h=ca6d82a8fd5f2a15236e16988bd966fddfd5c978;hb=818ac2906f7eb845c097ef8362a9c1f231978f44;hp=0000000000000000000000000000000000000000;hpb=7f7a24c64b3fff28b9230b018ef035e96595d7f5;p=swftools.git diff --git a/lib/graphcut.h b/lib/graphcut.h new file mode 100644 index 0000000..ca6d82a --- /dev/null +++ b/lib/graphcut.h @@ -0,0 +1,56 @@ +/* + graphcut- a graphcut implementation based on the Boykov Kolmogorov algorithm + + Part of the swftools package. + + Copyright (c) 2007,2008,2009 Matthias Kramm + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#ifndef __graphcut_h__ +#define __graphcut_h__ + +#include "image.h" + +typedef signed int weight_t; +#define MAX_WEIGHT 0x07ffffff + +typedef struct _halfedge halfedge_t; +typedef struct _node node_t; +typedef struct _graph graph_t; + +struct _halfedge { + node_t*node; + struct _halfedge*fwd; + weight_t weight; + char used; + halfedge_t*next; +}; + +struct _node { + halfedge_t*edges; + int nr; +}; + +struct _graph { + node_t* nodes; + int num_nodes; +}; + +graph_t* graph_new(int num_nodes); +halfedge_t*edge_new(node_t*from, node_t*to, weight_t forward_weight, weight_t backward_weight); +weight_t graph_maxflow(graph_t*graph, node_t*pos1, node_t*pos2); +void graph_delete(graph_t*); + +#endif