55 #define CV_ISOLATED_ROI 8
65 CvBaseImageFilter(
int _max_width,
int _src_type,
int _dst_type,
66 bool _is_separable,
CvSize _ksize,
70 virtual ~CvBaseImageFilter();
82 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
83 bool _is_separable,
CvSize _ksize,
105 virtual int process(
const CvMat* _src,
CvMat* _dst,
109 int get_src_type()
const {
return src_type; }
110 int get_dst_type()
const {
return dst_type; }
111 int get_work_type()
const {
return work_type; }
114 int get_width()
const {
return prev_x_range.end_index - prev_x_range.start_index; }
115 CvRowFilterFunc get_x_filter_func()
const {
return x_func; }
116 CvColumnFilterFunc get_y_filter_func()
const {
return y_func; }
120 virtual void get_work_params();
124 virtual void start_process(
CvSlice x_range,
int width );
127 virtual void make_y_border(
int row_count,
int top_rows,
int bottom_rows );
129 virtual int fill_cyclic_buffer(
const uchar*
src,
int src_step,
130 int y,
int y1,
int y2 );
136 int min_depth, src_type, dst_type, work_type;
140 CvRowFilterFunc x_func;
141 CvColumnFilterFunc y_func;
145 int top_rows, bottom_rows, max_rows;
146 uchar *buf_start, *buf_end, *buf_head, *buf_tail;
147 int buf_size, buf_step, buf_count, buf_max_count;
152 int max_ky, border_mode;
156 int border_tab_sz1, border_tab_sz;
164 class CV_EXPORTS CvSepFilter :
public CvBaseImageFilter
168 CvSepFilter(
int _max_width,
int _src_type,
int _dst_type,
173 virtual ~CvSepFilter();
175 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
180 virtual void init_deriv(
int _max_width,
int _src_type,
int _dst_type,
181 int dx,
int dy,
int aperture_size,
int flags=0 );
182 virtual void init_gaussian(
int _max_width,
int _src_type,
int _dst_type,
183 int gaussian_size,
double sigma );
186 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
187 bool _is_separable,
CvSize _ksize,
192 virtual void clear();
193 const CvMat* get_x_kernel()
const {
return kx; }
194 const CvMat* get_y_kernel()
const {
return ky; }
195 int get_x_kernel_flags()
const {
return kx_flags; }
196 int get_y_kernel_flags()
const {
return ky_flags; }
198 enum { GENERIC=0, ASYMMETRICAL=1, SYMMETRICAL=2, POSITIVE=4, SUM_TO_1=8, INTEGER=16 };
199 enum { NORMALIZE_KERNEL=1, FLIP_KERNEL=2 };
201 static void init_gaussian_kernel(
CvMat*
kernel,
double sigma=-1 );
202 static void init_sobel_kernel(
CvMat* _kx,
CvMat* _ky,
int dx,
int dy,
int flags=0 );
203 static void init_scharr_kernel(
CvMat* _kx,
CvMat* _ky,
int dx,
int dy,
int flags=0 );
207 int kx_flags, ky_flags;
212 class CV_EXPORTS CvLinearFilter :
public CvBaseImageFilter
216 CvLinearFilter(
int _max_width,
int _src_type,
int _dst_type,
217 const CvMat* _kernel,
221 virtual ~CvLinearFilter();
223 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
224 const CvMat* _kernel,
230 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
231 bool _is_separable,
CvSize _ksize,
236 virtual void clear();
238 uchar* get_kernel_sparse_buf() {
return k_sparse; }
239 int get_kernel_sparse_count()
const {
return k_sparse_count; }
249 class CV_EXPORTS CvBoxFilter :
public CvBaseImageFilter
253 CvBoxFilter(
int _max_width,
int _src_type,
int _dst_type,
254 bool _normalized,
CvSize _ksize,
258 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
259 bool _normalized,
CvSize _ksize,
264 virtual ~CvBoxFilter();
265 bool is_normalized()
const {
return normalized; }
266 double get_scale()
const {
return scale; }
267 uchar* get_sum_buf() {
return sum; }
268 int* get_sum_count_ptr() {
return &sum_count; }
271 virtual void start_process(
CvSlice x_range,
int width );
281 class CV_EXPORTS CvLaplaceFilter :
public CvSepFilter
285 CvLaplaceFilter(
int _max_width,
int _src_type,
int _dst_type,
286 bool _normalized,
int _ksize,
289 virtual ~CvLaplaceFilter();
290 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
291 bool _normalized,
int _ksize,
296 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
297 bool _is_separable,
CvSize _ksize,
302 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
308 bool is_normalized()
const {
return normalized; }
309 bool is_basic_laplacian()
const {
return basic_laplacian; }
311 void get_work_params();
313 bool basic_laplacian;
319 class CV_EXPORTS CvMorphology :
public CvBaseImageFilter
323 CvMorphology(
int _operation,
int _max_width,
int _src_dst_type,
324 int _element_shape,
CvMat* _element,
328 virtual ~CvMorphology();
329 virtual void init(
int _operation,
int _max_width,
int _src_dst_type,
330 int _element_shape,
CvMat* _element,
336 virtual void init(
int _max_width,
int _src_type,
int _dst_type,
337 bool _is_separable,
CvSize _ksize,
342 virtual void clear();
344 int get_element_shape()
const {
return el_shape; }
345 int get_operation()
const {
return operation; }
346 uchar* get_element_sparse_buf() {
return el_sparse; }
347 int get_element_sparse_count()
const {
return el_sparse_count; }
349 enum { RECT=0, CROSS=1, ELLIPSE=2, CUSTOM=100, BINARY = 0, GRAYSCALE=256 };
350 enum { ERODE=0, DILATE=1 };
352 static void init_binary_element(
CvMat* _element,
int _element_shape,
357 int fill_cyclic_buffer(
const uchar*
src,
int src_step,
358 int y0,
int y1,
int y2 );
375 bool completeSymmFlag=
false );
379 bool completeSymmFlag=
false );
385 enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 };
397 double prevErrNorm, errNorm;
402 bool completeSymmFlag;