18 #ifndef PIC_GL_ALGORITHMS_GROW_CUT_HPP 19 #define PIC_GL_ALGORITHMS_GROW_CUT_HPP 21 #include "../../base.hpp" 23 #include "../../util/std_util.hpp" 25 #include "../../gl/image.hpp" 26 #include "../../gl/image_vec.hpp" 28 #include "../../gl/filtering/filter_op.hpp" 29 #include "../../gl/filtering/filter_max.hpp" 30 #include "../../gl/filtering/filter_grow_cut.hpp" 31 #include "../../gl/filtering/filter_channel.hpp" 89 float red[] = {1.0f, 0.0f, 0.0f, 1.0f};
90 float blue[] = {0.0f, 0.0f, 1.0f, 1.0f};
91 fltSeeds =
new FilterGLOp(
"vec4(vec3(dot(I0.xyz, C0.xyz) - dot(I0.xyz, C1.xyz)), 1.0)",
111 auto seeds = imgIn[1];
114 imgOut =
new ImageGL(1, img->width, img->height, 3,
IMG_GPU, GL_TEXTURE_2D);
125 auto state_cur = imgOut;
135 fltAssign =
new FilterGLOp(
"vec4(I0.x, abs(I0.x) > 0.0 ? 1.0 : 0.0, 0.0, 1.0)",
false, NULL, NULL);
141 int iterations = int(img->getDiagonalSize());
143 if((iterations % 2) == 1) {
150 for(
int i = 0; i < iterations; i++) {
int channels
Definition: filter_radial_basis_function.hpp:80
ImageGL * img_max
Definition: grow_cut.hpp:42
T * delete_s(T *data)
delete_s
Definition: std_util.hpp:123
Definition: grow_cut.hpp:35
GrowCutGL()
GrowCutGL.
Definition: grow_cut.hpp:49
~GrowCutGL()
Definition: grow_cut.hpp:59
bool isValid()
isValid checks if the current image is valid, which means if they have an allocated buffer or not...
Definition: filter_radial_basis_function.hpp:1148
PIC_INLINE ImageGLVec SingleGL(ImageGL *img)
SingleGL creates a single for filters input.
Definition: image_vec.hpp:39
Definition: filter_op.hpp:28
FilterGLOp * fltAssign
Definition: grow_cut.hpp:41
The FilterGLGrowCut class.
Definition: filter_grow_cut.hpp:28
ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut)
Process.
Definition: filter_npasses.hpp:323
FilterGLGrowCut * flt
Definition: grow_cut.hpp:38
ImageGL * fromStrokeImageToSeeds(ImageGL *strokes, ImageGL *imgOut)
fromStrokeImageToSeeds
Definition: grow_cut.hpp:75
The ImageGL class.
Definition: image.hpp:42
ImageGL * allocateSimilarOneGL()
allocateSimilarOneGL
virtual ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut)
Process.
Definition: display.hpp:258
ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut=NULL)
Process.
Definition: grow_cut.hpp:104
FilterGLOp * fltSeeds
Definition: grow_cut.hpp:40
The FilterGLMax class.
Definition: filter_max.hpp:31
PIC_INLINE ImageGLVec TripleGL(ImageGL *img1, ImageGL *img2, ImageGL *img3)
TripleGL creates a triple for filters input.
Definition: image_vec.hpp:67
FilterGLMax * fltMax
Definition: grow_cut.hpp:39
Definition: bilateral_separation.hpp:25
ImageGL * state_next
Definition: grow_cut.hpp:42
PIC_INLINE bool ImageGLVecCheck(ImageGLVec &imgIn, int minInputImages)
ImageGLVecCheck.
Definition: image_vec.hpp:82
std::vector< ImageGL * > ImageGLVec
ImageGLVec an std::vector of pic::ImageGL.
Definition: image_vec.hpp:32