1 /*M/////////////////////////////////////////////////////////////////////////////////////// 2 // 3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 // 5 // By downloading, copying, installing or using the software you agree to this license. 6 // If you do not agree to this license, do not download, install, 7 // copy or use the software. 8 // 9 // 10 // Intel License Agreement 11 // For Open Source Computer Vision Library 12 // 13 // Copyright (C) 2000, Intel Corporation, all rights reserved. 14 // Third party copyrights are property of their respective owners. 15 // 16 // Redistribution and use in source and binary forms, with or without modification, 17 // are permitted provided that the following conditions are met: 18 // 19 // * Redistribution's of source code must retain the above copyright notice, 20 // this list of conditions and the following disclaimer. 21 // 22 // * Redistribution's in binary form must reproduce the above copyright notice, 23 // this list of conditions and the following disclaimer in the documentation 24 // and/or other materials provided with the distribution. 25 // 26 // * The name of Intel Corporation may not be used to endorse or promote products 27 // derived from this software without specific prior written permission. 28 // 29 // This software is provided by the copyright holders and contributors "as is" and 30 // any express or implied warranties, including, but not limited to, the implied 31 // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 // In no event shall the Intel Corporation or contributors be liable for any direct, 33 // indirect, incidental, special, exemplary, or consequential damages 34 // (including, but not limited to, procurement of substitute goods or services; 35 // loss of use, data, or profits; or business interruption) however caused 36 // and on any theory of liability, whether in contract, strict liability, 37 // or tort (including negligence or otherwise) arising in any way out of 38 // the use of this software, even if advised of the possibility of such damage. 39 // 40 //M*/ 41 42 #ifndef _CV_IPP_H_ 43 #define _CV_IPP_H_ 44 45 /****************************************************************************************\ 46 * Creating Borders * 47 \****************************************************************************************/ 48 49 #define IPCV_COPY_BORDER( bordertype, flavor ) \ 50 IPCVAPI_EX( CvStatus, icvCopy##bordertype##Border_##flavor##R, \ 51 "ippiCopy" #bordertype "Border_" #flavor "R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 52 ( const void* pSrc, int srcStep, CvSize srcRoiSize, void* pDst, int dstStep, \ 53 CvSize dstRoiSize, int topBorderHeight, int leftBorderWidth )) \ 54 \ 55 IPCVAPI_EX( CvStatus, icvCopy##bordertype##Border_##flavor##IR, \ 56 "ippiCopy" #bordertype "Border_" #flavor "IR", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 57 ( const void* pSrc, int srcDstStep, CvSize srcRoiSize, \ 58 CvSize dstRoiSize, int topBorderHeight, int leftBorderWidth )) 59 60 IPCV_COPY_BORDER( Replicate, 8u_C1 ) 61 IPCV_COPY_BORDER( Replicate, 16s_C1 ) 62 IPCV_COPY_BORDER( Replicate, 8u_C3 ) 63 IPCV_COPY_BORDER( Replicate, 32s_C1 ) 64 IPCV_COPY_BORDER( Replicate, 16s_C3 ) 65 IPCV_COPY_BORDER( Replicate, 16s_C4 ) 66 IPCV_COPY_BORDER( Replicate, 32s_C3 ) 67 IPCV_COPY_BORDER( Replicate, 32s_C4 ) 68 69 /****************************************************************************************\ 70 * Moments * 71 \****************************************************************************************/ 72 73 #define IPCV_MOMENTS( suffix, ipp_suffix, cn ) \ 74 IPCVAPI_EX( CvStatus, icvMoments##suffix##_C##cn##R, \ 75 "ippiMoments" #ipp_suffix "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI),\ 76 ( const void* img, int step, CvSize size, void* momentstate )) 77 78 IPCV_MOMENTS( _8u, 64f_8u, 1 ) 79 IPCV_MOMENTS( _32f, 64f_32f, 1 ) 80 81 #undef IPCV_MOMENTS 82 83 IPCVAPI_EX( CvStatus, icvMomentInitAlloc_64f, 84 "ippiMomentInitAlloc_64f", CV_PLUGINS1(CV_PLUGIN_IPPI), 85 (void** momentstate, CvHintAlgorithm hint )) 86 87 IPCVAPI_EX( CvStatus, icvMomentFree_64f, 88 "ippiMomentFree_64f", CV_PLUGINS1(CV_PLUGIN_IPPI), 89 (void* momentstate )) 90 91 IPCVAPI_EX( CvStatus, icvGetSpatialMoment_64f, 92 "ippiGetSpatialMoment_64f", CV_PLUGINS1(CV_PLUGIN_IPPI), 93 (const void* momentstate, int mOrd, int nOrd, 94 int nChannel, CvPoint roiOffset, double* value )) 95 96 /****************************************************************************************\ 97 * Background differencing * 98 \****************************************************************************************/ 99 100 /////////////////////////////////// Accumulation ///////////////////////////////////////// 101 102 #define IPCV_ACCUM( flavor, arrtype, acctype ) \ 103 IPCVAPI_EX( CvStatus, icvAdd_##flavor##_C1IR, \ 104 "ippiAdd_" #flavor "_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 105 ( const arrtype* src, int srcstep, acctype* dst, int dststep, CvSize size )) \ 106 IPCVAPI_EX( CvStatus, icvAddSquare_##flavor##_C1IR, \ 107 "ippiAddSquare_" #flavor "_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 108 ( const arrtype* src, int srcstep, acctype* dst, int dststep, CvSize size )) \ 109 IPCVAPI_EX( CvStatus, icvAddProduct_##flavor##_C1IR, \ 110 "ippiAddProduct_" #flavor "_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 111 ( const arrtype* src1, int srcstep1, const arrtype* src2, int srcstep2, \ 112 acctype* dst, int dststep, CvSize size )) \ 113 IPCVAPI_EX( CvStatus, icvAddWeighted_##flavor##_C1IR, \ 114 "ippiAddWeighted_" #flavor "_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 115 ( const arrtype* src, int srcstep, acctype* dst, int dststep, \ 116 CvSize size, acctype alpha )) \ 117 \ 118 IPCVAPI_EX( CvStatus, icvAdd_##flavor##_C1IMR, \ 119 "ippiAdd_" #flavor "_C1IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 120 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 121 acctype* dst, int dststep, CvSize size )) \ 122 IPCVAPI_EX( CvStatus, icvAddSquare_##flavor##_C1IMR, \ 123 "ippiAddSquare_" #flavor "_C1IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 124 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 125 acctype* dst, int dststep, CvSize size )) \ 126 IPCVAPI_EX( CvStatus, icvAddProduct_##flavor##_C1IMR, \ 127 "ippiAddProduct_" #flavor "_C1IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 128 ( const arrtype* src1, int srcstep1, const arrtype* src2, int srcstep2, \ 129 const uchar* mask, int maskstep, acctype* dst, int dststep, CvSize size )) \ 130 IPCVAPI_EX( CvStatus, icvAddWeighted_##flavor##_C1IMR, \ 131 "ippiAddWeighted_" #flavor "_C1IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 132 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 133 acctype* dst, int dststep, CvSize size, acctype alpha )) \ 134 \ 135 IPCVAPI_EX( CvStatus, icvAdd_##flavor##_C3IMR, \ 136 "ippiAdd_" #flavor "_C3IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 137 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 138 acctype* dst, int dststep, CvSize size )) \ 139 IPCVAPI_EX( CvStatus, icvAddSquare_##flavor##_C3IMR, \ 140 "ippiAddSquare_" #flavor "_C3IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 141 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 142 acctype* dst, int dststep, CvSize size )) \ 143 IPCVAPI_EX( CvStatus, icvAddProduct_##flavor##_C3IMR, \ 144 "ippiAddProduct_" #flavor "_C3IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 145 ( const arrtype* src1, int srcstep1, const arrtype* src2, int srcstep2, \ 146 const uchar* mask, int maskstep, acctype* dst, int dststep, CvSize size )) \ 147 IPCVAPI_EX( CvStatus, icvAddWeighted_##flavor##_C3IMR, \ 148 "ippiAddWeighted_" #flavor "_C3IMR", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 149 ( const arrtype* src, int srcstep, const uchar* mask, int maskstep, \ 150 acctype* dst, int dststep, CvSize size, acctype alpha )) 151 152 IPCV_ACCUM( 8u32f, uchar, float ) 153 IPCV_ACCUM( 32f, float, float ) 154 155 #undef IPCV_ACCUM 156 157 /****************************************************************************************\ 158 * Pyramids * 159 \****************************************************************************************/ 160 161 IPCVAPI_EX( CvStatus, icvPyrDownGetBufSize_Gauss5x5, 162 "ippiPyrDownGetBufSize_Gauss5x5", CV_PLUGINS1(CV_PLUGIN_IPPCV), 163 ( int roiWidth, CvDataType dataType, int channels, int* bufSize )) 164 165 IPCVAPI_EX( CvStatus, icvPyrUpGetBufSize_Gauss5x5, 166 "ippiPyrUpGetBufSize_Gauss5x5", CV_PLUGINS1(CV_PLUGIN_IPPCV), 167 ( int roiWidth, CvDataType dataType, int channels, int* bufSize )) 168 169 #define ICV_PYRDOWN( flavor, cn ) \ 170 IPCVAPI_EX( CvStatus, icvPyrDown_Gauss5x5_##flavor##_C##cn##R, \ 171 "ippiPyrDown_Gauss5x5_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 172 ( const void* pSrc, int srcStep, void* pDst, int dstStep, \ 173 CvSize roiSize, void* pBuffer )) 174 175 #define ICV_PYRUP( flavor, cn ) \ 176 IPCVAPI_EX( CvStatus, icvPyrUp_Gauss5x5_##flavor##_C##cn##R, \ 177 "ippiPyrUp_Gauss5x5_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 178 ( const void* pSrc, int srcStep, void* pDst, int dstStep, \ 179 CvSize roiSize, void* pBuffer )) 180 181 ICV_PYRDOWN( 8u, 1 ) 182 ICV_PYRDOWN( 8u, 3 ) 183 ICV_PYRDOWN( 32f, 1 ) 184 ICV_PYRDOWN( 32f, 3 ) 185 186 ICV_PYRUP( 8u, 1 ) 187 ICV_PYRUP( 8u, 3 ) 188 ICV_PYRUP( 32f, 1 ) 189 ICV_PYRUP( 32f, 3 ) 190 191 #undef ICV_PYRDOWN 192 #undef ICV_PYRUP 193 194 /****************************************************************************************\ 195 * Geometric Transformations * 196 \****************************************************************************************/ 197 198 #define IPCV_RESIZE( flavor, cn ) \ 199 IPCVAPI_EX( CvStatus, icvResize_##flavor##_C##cn##R, \ 200 "ippiResize_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI),\ 201 (const void* src, CvSize srcsize, int srcstep, CvRect srcroi, \ 202 void* dst, int dststep, CvSize dstroi, \ 203 double xfactor, double yfactor, int interpolation )) 204 205 IPCV_RESIZE( 8u, 1 ) 206 IPCV_RESIZE( 8u, 3 ) 207 IPCV_RESIZE( 8u, 4 ) 208 209 IPCV_RESIZE( 16u, 1 ) 210 IPCV_RESIZE( 16u, 3 ) 211 IPCV_RESIZE( 16u, 4 ) 212 213 IPCV_RESIZE( 32f, 1 ) 214 IPCV_RESIZE( 32f, 3 ) 215 IPCV_RESIZE( 32f, 4 ) 216 217 #undef IPCV_RESIZE 218 219 #define IPCV_WARPAFFINE_BACK( flavor, cn ) \ 220 IPCVAPI_EX( CvStatus, icvWarpAffineBack_##flavor##_C##cn##R, \ 221 "ippiWarpAffineBack_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI),\ 222 (const void* src, CvSize srcsize, int srcstep, CvRect srcroi, \ 223 void* dst, int dststep, CvRect dstroi, \ 224 const double* coeffs, int interpolate )) 225 226 IPCV_WARPAFFINE_BACK( 8u, 1 ) 227 IPCV_WARPAFFINE_BACK( 8u, 3 ) 228 IPCV_WARPAFFINE_BACK( 8u, 4 ) 229 230 IPCV_WARPAFFINE_BACK( 32f, 1 ) 231 IPCV_WARPAFFINE_BACK( 32f, 3 ) 232 IPCV_WARPAFFINE_BACK( 32f, 4 ) 233 234 #undef IPCV_WARPAFFINE_BACK 235 236 #define IPCV_WARPPERSPECTIVE_BACK( flavor, cn ) \ 237 IPCVAPI_EX( CvStatus, icvWarpPerspectiveBack_##flavor##_C##cn##R, \ 238 "ippiWarpPerspectiveBack_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI),\ 239 (const void* src, CvSize srcsize, int srcstep, CvRect srcroi, \ 240 void* dst, int dststep, CvRect dstroi, \ 241 const double* coeffs, int interpolate )) 242 243 IPCV_WARPPERSPECTIVE_BACK( 8u, 1 ) 244 IPCV_WARPPERSPECTIVE_BACK( 8u, 3 ) 245 IPCV_WARPPERSPECTIVE_BACK( 8u, 4 ) 246 247 IPCV_WARPPERSPECTIVE_BACK( 32f, 1 ) 248 IPCV_WARPPERSPECTIVE_BACK( 32f, 3 ) 249 IPCV_WARPPERSPECTIVE_BACK( 32f, 4 ) 250 251 #undef IPCV_WARPPERSPECTIVE_BACK 252 253 254 #define IPCV_WARPPERSPECTIVE( flavor, cn ) \ 255 IPCVAPI_EX( CvStatus, icvWarpPerspective_##flavor##_C##cn##R, \ 256 "ippiWarpPerspective_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI),\ 257 (const void* src, CvSize srcsize, int srcstep, CvRect srcroi, \ 258 void* dst, int dststep, CvRect dstroi, \ 259 const double* coeffs, int interpolate )) 260 261 IPCV_WARPPERSPECTIVE( 8u, 1 ) 262 IPCV_WARPPERSPECTIVE( 8u, 3 ) 263 IPCV_WARPPERSPECTIVE( 8u, 4 ) 264 265 IPCV_WARPPERSPECTIVE( 32f, 1 ) 266 IPCV_WARPPERSPECTIVE( 32f, 3 ) 267 IPCV_WARPPERSPECTIVE( 32f, 4 ) 268 269 #undef IPCV_WARPPERSPECTIVE 270 271 #define IPCV_REMAP( flavor, cn ) \ 272 IPCVAPI_EX( CvStatus, icvRemap_##flavor##_C##cn##R, \ 273 "ippiRemap_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 274 ( const void* src, CvSize srcsize, int srcstep, CvRect srcroi, \ 275 const float* xmap, int xmapstep, const float* ymap, int ymapstep, \ 276 void* dst, int dststep, CvSize dstsize, int interpolation )) 277 278 IPCV_REMAP( 8u, 1 ) 279 IPCV_REMAP( 8u, 3 ) 280 IPCV_REMAP( 8u, 4 ) 281 282 IPCV_REMAP( 32f, 1 ) 283 IPCV_REMAP( 32f, 3 ) 284 IPCV_REMAP( 32f, 4 ) 285 286 #undef IPCV_REMAP 287 288 /****************************************************************************************\ 289 * Morphology * 290 \****************************************************************************************/ 291 292 #define IPCV_MORPHOLOGY( minmaxtype, morphtype, flavor, cn ) \ 293 IPCVAPI_EX( CvStatus, icv##morphtype##Rect_##flavor##_C##cn##R, \ 294 "ippiFilter" #minmaxtype "BorderReplicate_" #flavor "_C" #cn "R", \ 295 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( const void* src, int srcstep, void* dst, \ 296 int dststep, CvSize roi, CvSize esize, CvPoint anchor, void* buffer )) \ 297 IPCVAPI_EX( CvStatus, icv##morphtype##Rect_GetBufSize_##flavor##_C##cn##R, \ 298 "ippiFilter" #minmaxtype "GetBufferSize_" #flavor "_C" #cn "R", \ 299 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( int width, CvSize esize, int* bufsize )) \ 300 \ 301 IPCVAPI_EX( CvStatus, icv##morphtype##_##flavor##_C##cn##R, \ 302 "ippi" #morphtype "BorderReplicate_" #flavor "_C" #cn "R", \ 303 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( const void* src, int srcstep, \ 304 void* dst, int dststep, CvSize roi, int bordertype, void* morphstate )) 305 306 IPCV_MORPHOLOGY( Min, Erode, 8u, 1 ) 307 IPCV_MORPHOLOGY( Min, Erode, 8u, 3 ) 308 IPCV_MORPHOLOGY( Min, Erode, 8u, 4 ) 309 IPCV_MORPHOLOGY( Min, Erode, 16u, 1 ) 310 IPCV_MORPHOLOGY( Min, Erode, 16u, 3 ) 311 IPCV_MORPHOLOGY( Min, Erode, 16u, 4 ) 312 IPCV_MORPHOLOGY( Min, Erode, 32f, 1 ) 313 IPCV_MORPHOLOGY( Min, Erode, 32f, 3 ) 314 IPCV_MORPHOLOGY( Min, Erode, 32f, 4 ) 315 IPCV_MORPHOLOGY( Max, Dilate, 8u, 1 ) 316 IPCV_MORPHOLOGY( Max, Dilate, 8u, 3 ) 317 IPCV_MORPHOLOGY( Max, Dilate, 8u, 4 ) 318 IPCV_MORPHOLOGY( Max, Dilate, 16u, 1 ) 319 IPCV_MORPHOLOGY( Max, Dilate, 16u, 3 ) 320 IPCV_MORPHOLOGY( Max, Dilate, 16u, 4 ) 321 IPCV_MORPHOLOGY( Max, Dilate, 32f, 1 ) 322 IPCV_MORPHOLOGY( Max, Dilate, 32f, 3 ) 323 IPCV_MORPHOLOGY( Max, Dilate, 32f, 4 ) 324 325 #undef IPCV_MORPHOLOGY 326 327 #define IPCV_MORPHOLOGY_INIT_ALLOC( flavor, cn ) \ 328 IPCVAPI_EX( CvStatus, icvMorphInitAlloc_##flavor##_C##cn##R, \ 329 "ippiMorphologyInitAlloc_" #flavor "_C" #cn "R", \ 330 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( int width, const uchar* element, \ 331 CvSize esize, CvPoint anchor, void** morphstate )) 332 333 IPCV_MORPHOLOGY_INIT_ALLOC( 8u, 1 ) 334 IPCV_MORPHOLOGY_INIT_ALLOC( 8u, 3 ) 335 IPCV_MORPHOLOGY_INIT_ALLOC( 8u, 4 ) 336 IPCV_MORPHOLOGY_INIT_ALLOC( 16u, 1 ) 337 IPCV_MORPHOLOGY_INIT_ALLOC( 16u, 3 ) 338 IPCV_MORPHOLOGY_INIT_ALLOC( 16u, 4 ) 339 IPCV_MORPHOLOGY_INIT_ALLOC( 32f, 1 ) 340 IPCV_MORPHOLOGY_INIT_ALLOC( 32f, 3 ) 341 IPCV_MORPHOLOGY_INIT_ALLOC( 32f, 4 ) 342 343 #undef IPCV_MORPHOLOGY_INIT_ALLOC 344 345 IPCVAPI_EX( CvStatus, icvMorphFree, "ippiMorphologyFree", 346 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( void* morphstate )) 347 348 349 /****************************************************************************************\ 350 * Smoothing Filters * 351 \****************************************************************************************/ 352 353 #define IPCV_FILTER_MEDIAN( flavor, cn ) \ 354 IPCVAPI_EX( CvStatus, icvFilterMedian_##flavor##_C##cn##R, \ 355 "ippiFilterMedian_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 356 ( const void* src, int srcstep, void* dst, int dststep, \ 357 CvSize roi, CvSize ksize, CvPoint anchor )) 358 359 IPCV_FILTER_MEDIAN( 8u, 1 ) 360 IPCV_FILTER_MEDIAN( 8u, 3 ) 361 IPCV_FILTER_MEDIAN( 8u, 4 ) 362 363 #define IPCV_FILTER_BOX( flavor, cn ) \ 364 IPCVAPI_EX( CvStatus, icvFilterBox_##flavor##_C##cn##R, \ 365 "ippiFilterBox_" #flavor "_C" #cn "R", 0/*CV_PLUGINS1(CV_PLUGIN_IPPI)*/,\ 366 ( const void* src, int srcstep, void* dst, int dststep, \ 367 CvSize roi, CvSize ksize, CvPoint anchor )) 368 369 IPCV_FILTER_BOX( 8u, 1 ) 370 IPCV_FILTER_BOX( 8u, 3 ) 371 IPCV_FILTER_BOX( 8u, 4 ) 372 IPCV_FILTER_BOX( 32f, 1 ) 373 IPCV_FILTER_BOX( 32f, 3 ) 374 IPCV_FILTER_BOX( 32f, 4 ) 375 376 #undef IPCV_FILTER_BOX 377 378 /****************************************************************************************\ 379 * Derivative Filters * 380 \****************************************************************************************/ 381 382 #define IPCV_FILTER_SOBEL_BORDER( suffix, flavor, srctype ) \ 383 IPCVAPI_EX( CvStatus, icvFilterSobel##suffix##GetBufSize_##flavor##_C1R, \ 384 "ippiFilterSobel" #suffix "GetBufferSize_" #flavor "_C1R", \ 385 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( CvSize roi, int masksize, int* buffersize )) \ 386 IPCVAPI_EX( CvStatus, icvFilterSobel##suffix##Border_##flavor##_C1R, \ 387 "ippiFilterSobel" #suffix "Border_" #flavor "_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 388 ( const void* src, int srcstep, void* dst, int dststep, CvSize roi, int masksize, \ 389 int bordertype, srctype bordervalue, void* buffer )) 390 391 IPCV_FILTER_SOBEL_BORDER( NegVert, 8u16s, uchar ) 392 IPCV_FILTER_SOBEL_BORDER( Horiz, 8u16s, uchar ) 393 IPCV_FILTER_SOBEL_BORDER( VertSecond, 8u16s, uchar ) 394 IPCV_FILTER_SOBEL_BORDER( HorizSecond, 8u16s, uchar ) 395 IPCV_FILTER_SOBEL_BORDER( Cross, 8u16s, uchar ) 396 397 IPCV_FILTER_SOBEL_BORDER( NegVert, 32f, float ) 398 IPCV_FILTER_SOBEL_BORDER( Horiz, 32f, float ) 399 IPCV_FILTER_SOBEL_BORDER( VertSecond, 32f, float ) 400 IPCV_FILTER_SOBEL_BORDER( HorizSecond, 32f, float ) 401 IPCV_FILTER_SOBEL_BORDER( Cross, 32f, float ) 402 403 #undef IPCV_FILTER_SOBEL_BORDER 404 405 #define IPCV_FILTER_SCHARR_BORDER( suffix, flavor, srctype ) \ 406 IPCVAPI_EX( CvStatus, icvFilterScharr##suffix##GetBufSize_##flavor##_C1R, \ 407 "ippiFilterScharr" #suffix "GetBufferSize_" #flavor "_C1R", \ 408 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( CvSize roi, int* buffersize )) \ 409 IPCVAPI_EX( CvStatus, icvFilterScharr##suffix##Border_##flavor##_C1R, \ 410 "ippiFilterScharr" #suffix "Border_" #flavor "_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 411 ( const void* src, int srcstep, void* dst, int dststep, CvSize roi, \ 412 int bordertype, srctype bordervalue, void* buffer )) 413 414 IPCV_FILTER_SCHARR_BORDER( Vert, 8u16s, uchar ) 415 IPCV_FILTER_SCHARR_BORDER( Horiz, 8u16s, uchar ) 416 417 IPCV_FILTER_SCHARR_BORDER( Vert, 32f, float ) 418 IPCV_FILTER_SCHARR_BORDER( Horiz, 32f, float ) 419 420 #undef IPCV_FILTER_SCHARR_BORDER 421 422 423 #define IPCV_FILTER_LAPLACIAN_BORDER( flavor, srctype ) \ 424 IPCVAPI_EX( CvStatus, icvFilterLaplacianGetBufSize_##flavor##_C1R, \ 425 "ippiFilterLaplacianGetBufferSize_" #flavor "_C1R", \ 426 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( CvSize roi, int masksize, int* buffersize )) \ 427 IPCVAPI_EX( CvStatus, icvFilterLaplacianBorder_##flavor##_C1R, \ 428 "ippiFilterLaplacianBorder_" #flavor "_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 429 ( const void* src, int srcstep, void* dst, int dststep, CvSize roi, int masksize, \ 430 int bordertype, srctype bordervalue, void* buffer )) 431 432 IPCV_FILTER_LAPLACIAN_BORDER( 8u16s, uchar ) 433 IPCV_FILTER_LAPLACIAN_BORDER( 32f, float ) 434 435 #undef IPCV_FILTER_LAPLACIAN_BORDER 436 437 438 ///////////////////////////////////////////////////////////////////////////////////////// 439 440 #define IPCV_FILTER_SOBEL( suffix, ipp_suffix, flavor ) \ 441 IPCVAPI_EX( CvStatus, icvFilterSobel##suffix##_##flavor##_C1R, \ 442 "ippiFilterSobel" #ipp_suffix "_" #flavor "_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 443 ( const void* src, int srcstep, void* dst, int dststep, CvSize roi, int aperture )) 444 445 IPCV_FILTER_SOBEL( Vert, Vert, 8u16s ) 446 IPCV_FILTER_SOBEL( Horiz, Horiz, 8u16s ) 447 IPCV_FILTER_SOBEL( VertSecond, VertSecond, 8u16s ) 448 IPCV_FILTER_SOBEL( HorizSecond, HorizSecond, 8u16s ) 449 IPCV_FILTER_SOBEL( Cross, Cross, 8u16s ) 450 451 IPCV_FILTER_SOBEL( Vert, VertMask, 32f ) 452 IPCV_FILTER_SOBEL( Horiz, HorizMask, 32f ) 453 IPCV_FILTER_SOBEL( VertSecond, VertSecond, 32f ) 454 IPCV_FILTER_SOBEL( HorizSecond, HorizSecond, 32f ) 455 IPCV_FILTER_SOBEL( Cross, Cross, 32f ) 456 457 #undef IPCV_FILTER_SOBEL 458 459 #define IPCV_FILTER_SCHARR( suffix, ipp_suffix, flavor ) \ 460 IPCVAPI_EX( CvStatus, icvFilterScharr##suffix##_##flavor##_C1R, \ 461 "ippiFilterScharr" #ipp_suffix "_" #flavor "_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 462 ( const void* src, int srcstep, void* dst, int dststep, CvSize roi )) 463 464 IPCV_FILTER_SCHARR( Vert, Vert, 8u16s ) 465 IPCV_FILTER_SCHARR( Horiz, Horiz, 8u16s ) 466 IPCV_FILTER_SCHARR( Vert, Vert, 32f ) 467 IPCV_FILTER_SCHARR( Horiz, Horiz, 32f ) 468 469 #undef IPCV_FILTER_SCHARR 470 471 /****************************************************************************************\ 472 * Generic Filters * 473 \****************************************************************************************/ 474 475 #define IPCV_FILTER( suffix, ipp_suffix, cn, ksizetype, anchortype ) \ 476 IPCVAPI_EX( CvStatus, icvFilter##suffix##_C##cn##R, \ 477 "ippiFilter" #ipp_suffix "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPI), \ 478 ( const void* src, int srcstep, void* dst, int dststep, CvSize size, \ 479 const float* kernel, ksizetype ksize, anchortype anchor )) 480 481 IPCV_FILTER( _8u, 32f_8u, 1, CvSize, CvPoint ) 482 IPCV_FILTER( _8u, 32f_8u, 3, CvSize, CvPoint ) 483 IPCV_FILTER( _8u, 32f_8u, 4, CvSize, CvPoint ) 484 485 IPCV_FILTER( _16s, 32f_16s, 1, CvSize, CvPoint ) 486 IPCV_FILTER( _16s, 32f_16s, 3, CvSize, CvPoint ) 487 IPCV_FILTER( _16s, 32f_16s, 4, CvSize, CvPoint ) 488 489 IPCV_FILTER( _32f, _32f, 1, CvSize, CvPoint ) 490 IPCV_FILTER( _32f, _32f, 3, CvSize, CvPoint ) 491 IPCV_FILTER( _32f, _32f, 4, CvSize, CvPoint ) 492 493 IPCV_FILTER( Column_8u, Column32f_8u, 1, int, int ) 494 IPCV_FILTER( Column_8u, Column32f_8u, 3, int, int ) 495 IPCV_FILTER( Column_8u, Column32f_8u, 4, int, int ) 496 497 IPCV_FILTER( Column_16s, Column32f_16s, 1, int, int ) 498 IPCV_FILTER( Column_16s, Column32f_16s, 3, int, int ) 499 IPCV_FILTER( Column_16s, Column32f_16s, 4, int, int ) 500 501 IPCV_FILTER( Column_32f, Column_32f, 1, int, int ) 502 IPCV_FILTER( Column_32f, Column_32f, 3, int, int ) 503 IPCV_FILTER( Column_32f, Column_32f, 4, int, int ) 504 505 IPCV_FILTER( Row_8u, Row32f_8u, 1, int, int ) 506 IPCV_FILTER( Row_8u, Row32f_8u, 3, int, int ) 507 IPCV_FILTER( Row_8u, Row32f_8u, 4, int, int ) 508 509 IPCV_FILTER( Row_16s, Row32f_16s, 1, int, int ) 510 IPCV_FILTER( Row_16s, Row32f_16s, 3, int, int ) 511 IPCV_FILTER( Row_16s, Row32f_16s, 4, int, int ) 512 513 IPCV_FILTER( Row_32f, Row_32f, 1, int, int ) 514 IPCV_FILTER( Row_32f, Row_32f, 3, int, int ) 515 IPCV_FILTER( Row_32f, Row_32f, 4, int, int ) 516 517 #undef IPCV_FILTER 518 519 520 /****************************************************************************************\ 521 * Color Transformations * 522 \****************************************************************************************/ 523 524 #define IPCV_COLOR( funcname, ipp_funcname, flavor ) \ 525 IPCVAPI_EX( CvStatus, icv##funcname##_##flavor##_C3R, \ 526 "ippi" #ipp_funcname "_" #flavor "_C3R," \ 527 "ippi" #ipp_funcname "_" #flavor "_C3R", \ 528 CV_PLUGINS2(CV_PLUGIN_IPPI,CV_PLUGIN_IPPCC), \ 529 ( const void* src, int srcstep, void* dst, int dststep, CvSize size )) 530 531 IPCV_COLOR( RGB2XYZ, RGBToXYZ, 8u ) 532 IPCV_COLOR( RGB2XYZ, RGBToXYZ, 16u ) 533 IPCV_COLOR( RGB2XYZ, RGBToXYZ, 32f ) 534 IPCV_COLOR( XYZ2RGB, XYZToRGB, 8u ) 535 IPCV_COLOR( XYZ2RGB, XYZToRGB, 16u ) 536 IPCV_COLOR( XYZ2RGB, XYZToRGB, 32f ) 537 538 IPCV_COLOR( RGB2HSV, RGBToHSV, 8u ) 539 IPCV_COLOR( HSV2RGB, HSVToRGB, 8u ) 540 541 IPCV_COLOR( RGB2HLS, RGBToHLS, 8u ) 542 IPCV_COLOR( RGB2HLS, RGBToHLS, 32f ) 543 IPCV_COLOR( HLS2RGB, HLSToRGB, 8u ) 544 IPCV_COLOR( HLS2RGB, HLSToRGB, 32f ) 545 546 IPCV_COLOR( BGR2Lab, BGRToLab, 8u ) 547 IPCV_COLOR( Lab2BGR, LabToBGR, 8u ) 548 549 IPCV_COLOR( RGB2Luv, RGBToLUV, 8u ) 550 /*IPCV_COLOR( RGB2Luv, RGBToLUV, 32f )*/ 551 IPCV_COLOR( Luv2RGB, LUVToRGB, 8u ) 552 /*IPCV_COLOR( Luv2RGB, LUVToRGB, 32f )*/ 553 554 /****************************************************************************************\ 555 * Motion Templates * 556 \****************************************************************************************/ 557 558 IPCVAPI_EX( CvStatus, icvUpdateMotionHistory_8u32f_C1IR, 559 "ippiUpdateMotionHistory_8u32f_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), 560 ( const uchar* silIm, int silStep, float* mhiIm, int mhiStep, 561 CvSize size,float timestamp, float mhi_duration )) 562 563 /****************************************************************************************\ 564 * Template Matching * 565 \****************************************************************************************/ 566 567 #define ICV_MATCHTEMPLATE( flavor, arrtype ) \ 568 IPCVAPI_EX( CvStatus, icvCrossCorrValid_Norm_##flavor##_C1R, \ 569 "ippiCrossCorrValid_Norm_" #flavor "_C1R", \ 570 CV_PLUGINS1(CV_PLUGIN_IPPI), \ 571 ( const arrtype* pSrc, int srcStep, CvSize srcRoiSize, \ 572 const arrtype* pTpl, int tplStep, CvSize tplRoiSize, \ 573 float* pDst, int dstStep )) \ 574 IPCVAPI_EX( CvStatus, icvCrossCorrValid_NormLevel_##flavor##_C1R, \ 575 "ippiCrossCorrValid_NormLevel_" #flavor "_C1R", \ 576 CV_PLUGINS1(CV_PLUGIN_IPPI), \ 577 ( const arrtype* pSrc, int srcStep, CvSize srcRoiSize, \ 578 const arrtype* pTpl, int tplStep, CvSize tplRoiSize, \ 579 float* pDst, int dstStep )) \ 580 IPCVAPI_EX( CvStatus, icvSqrDistanceValid_Norm_##flavor##_C1R, \ 581 "ippiSqrDistanceValid_Norm_" #flavor "_C1R", \ 582 CV_PLUGINS1(CV_PLUGIN_IPPI), \ 583 ( const arrtype* pSrc, int srcStep, CvSize srcRoiSize, \ 584 const arrtype* pTpl, int tplStep, CvSize tplRoiSize, \ 585 float* pDst, int dstStep )) 586 587 ICV_MATCHTEMPLATE( 8u32f, uchar ) 588 ICV_MATCHTEMPLATE( 32f, float ) 589 590 /****************************************************************************************/ 591 /* Distance Transform */ 592 /****************************************************************************************/ 593 594 IPCVAPI_EX(CvStatus, icvDistanceTransform_3x3_8u32f_C1R, 595 "ippiDistanceTransform_3x3_8u32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 596 ( const uchar* pSrc, int srcStep, float* pDst, 597 int dstStep, CvSize roiSize, const float* pMetrics )) 598 599 IPCVAPI_EX(CvStatus, icvDistanceTransform_5x5_8u32f_C1R, 600 "ippiDistanceTransform_5x5_8u32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 601 ( const uchar* pSrc, int srcStep, float* pDst, 602 int dstStep, CvSize roiSize, const float* pMetrics )) 603 604 IPCVAPI_EX(CvStatus, icvDistanceTransform_3x3_8u_C1IR, 605 "ippiDistanceTransform_3x3_8u_C1IR", CV_PLUGINS1(CV_PLUGIN_IPPCV), 606 ( uchar* pSrc, int srcStep, CvSize roiSize, const int* pMetrics )) 607 608 IPCVAPI_EX(CvStatus, icvDistanceTransform_3x3_8u_C1R, 609 "ippiDistanceTransform_3x3_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 610 ( const uchar* pSrc, int srcStep, uchar* pDst, 611 int dstStep, CvSize roiSize, const int* pMetrics )) 612 613 /****************************************************************************************\ 614 * Thresholding functions * 615 \****************************************************************************************/ 616 617 IPCVAPI_EX( CvStatus, icvCompareC_8u_C1R_cv, 618 "ippiCompareC_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 619 ( const uchar* src1, int srcstep1, uchar scalar, 620 uchar* dst, int dststep, CvSize size, int cmp_op )) 621 IPCVAPI_EX( CvStatus, icvAndC_8u_C1R, 622 "ippiAndC_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 623 ( const uchar* src1, int srcstep1, uchar scalar, 624 uchar* dst, int dststep, CvSize size )) 625 IPCVAPI_EX( CvStatus, icvThreshold_GTVal_8u_C1R, 626 "ippiThreshold_GTVal_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 627 ( const uchar* pSrc, int srcstep, uchar* pDst, int dststep, 628 CvSize size, uchar threshold, uchar value )) 629 IPCVAPI_EX( CvStatus, icvThreshold_GTVal_32f_C1R, 630 "ippiThreshold_GTVal_32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 631 ( const float* pSrc, int srcstep, float* pDst, int dststep, 632 CvSize size, float threshold, float value )) 633 IPCVAPI_EX( CvStatus, icvThreshold_LTVal_8u_C1R, 634 "ippiThreshold_LTVal_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 635 ( const uchar* pSrc, int srcstep, uchar* pDst, int dststep, 636 CvSize size, uchar threshold, uchar value )) 637 IPCVAPI_EX( CvStatus, icvThreshold_LTVal_32f_C1R, 638 "ippiThreshold_LTVal_32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPI), 639 ( const float* pSrc, int srcstep, float* pDst, int dststep, 640 CvSize size, float threshold, float value )) 641 642 /****************************************************************************************\ 643 * Canny Edge Detector * 644 \****************************************************************************************/ 645 646 IPCVAPI_EX( CvStatus, icvCannyGetSize, "ippiCannyGetSize", 0/*CV_PLUGINS1(CV_PLUGIN_IPPCV)*/, 647 ( CvSize roiSize, int* bufferSize )) 648 649 IPCVAPI_EX( CvStatus, icvCanny_16s8u_C1R, "ippiCanny_16s8u_C1R", 0/*CV_PLUGINS1(CV_PLUGIN_IPPCV)*/, 650 ( const short* pSrcDx, int srcDxStep, const short* pSrcDy, int srcDyStep, 651 uchar* pDstEdges, int dstEdgeStep, CvSize roiSize, float lowThresh, 652 float highThresh, void* pBuffer )) 653 654 655 /****************************************************************************************\ 656 * Radial Distortion Removal * 657 \****************************************************************************************/ 658 659 IPCVAPI_EX( CvStatus, icvUndistortGetSize, "ippiUndistortGetSize", 660 CV_PLUGINS1(CV_PLUGIN_IPPCV), ( CvSize roiSize, int *pBufsize )) 661 662 IPCVAPI_EX( CvStatus, icvCreateMapCameraUndistort_32f_C1R, 663 "ippiCreateMapCameraUndistort_32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 664 (float *pxMap, int xStep, float *pyMap, int yStep, CvSize roiSize, 665 float fx, float fy, float cx, float cy, float k1, float k2, 666 float p1, float p2, uchar *pBuffer )) 667 668 #define ICV_UNDISTORT_RADIAL( flavor, cn, arrtype ) \ 669 IPCVAPI_EX( CvStatus, icvUndistortRadial_##flavor##_C##cn##R, \ 670 "ippiUndistortRadial_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 671 ( const arrtype* pSrc, int srcStep, uchar* pDst, int dstStep, CvSize roiSize, \ 672 float fx, float fy, float cx, float cy, float k1, float k2, uchar *pBuffer )) 673 674 ICV_UNDISTORT_RADIAL( 8u, 1, uchar ) 675 ICV_UNDISTORT_RADIAL( 8u, 3, uchar ) 676 677 #undef ICV_UNDISTORT_RADIAL 678 679 /****************************************************************************************\ 680 * Subpixel-accurate rectangle extraction * 681 \****************************************************************************************/ 682 683 #define ICV_COPY_SUBPIX( flavor, cn, srctype, dsttype ) \ 684 IPCVAPI_EX( CvStatus, icvCopySubpix_##flavor##_C##cn##R, \ 685 "ippiCopySubpix_" #flavor "_C" #cn "R", CV_PLUGINS1(CV_PLUGIN_IPPCV), \ 686 ( const srctype* pSrc, int srcStep, dsttype* pDst, int dstStep, \ 687 CvSize size, float dx, float dy )) 688 689 ICV_COPY_SUBPIX( 8u, 1, uchar, uchar ) 690 ICV_COPY_SUBPIX( 8u32f, 1, uchar, float ) 691 //ICV_COPY_SUBPIX( 32f, 1, float, float ) 692 693 IPCVAPI_EX( CvStatus, icvCopySubpix_32f_C1R, 694 "ippiCopySubpix_32f_C1R", 0, 695 ( const float* pSrc, int srcStep, float* pDst, int dstStep, 696 CvSize size, float dx, float dy )) 697 698 #undef ICV_COPY_SUBPIX 699 700 /****************************************************************************************\ 701 * Lucas-Kanade Optical Flow * 702 \****************************************************************************************/ 703 704 IPCVAPI_EX( CvStatus, icvOpticalFlowPyrLKInitAlloc_8u_C1R, 705 "ippiOpticalFlowPyrLKInitAlloc_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 706 ( void** ppState, CvSize roiSize, int winSize, int hint )) 707 708 IPCVAPI_EX( CvStatus, icvOpticalFlowPyrLKFree_8u_C1R, 709 "ippiOpticalFlowPyrLKFree_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 710 ( void* pState )) 711 712 IPCVAPI_EX( CvStatus, icvOpticalFlowPyrLK_8u_C1R, 713 "ippiOpticalFlowPyrLK_8u_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 714 ( CvPyramid *pPyr1, CvPyramid *pPyr2, 715 const float *pPrev, float* pNext, char *pStatus, 716 float *pError, int numFeat, int winSize, 717 int maxLev, int maxIter, float threshold, void* state )) 718 719 720 /****************************************************************************************\ 721 * Haar Object Detector * 722 \****************************************************************************************/ 723 724 IPCVAPI_EX( CvStatus, icvIntegral_8u32s_C1R, 725 "ippiIntegral_8u32s_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 726 ( const uchar* pSrc, int srcStep, int* pDst, int dstStep, 727 CvSize roiSize, int val )) 728 729 IPCVAPI_EX( CvStatus, icvSqrIntegral_8u32s64f_C1R, 730 "ippiSqrIntegral_8u32s64f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 731 ( const uchar* pSrc, int srcStep, 732 int* pDst, int dstStep, double* pSqr, int sqrStep, 733 CvSize roiSize, int val, double valSqr )) 734 735 IPCVAPI_EX( CvStatus, icvRectStdDev_32f_C1R, 736 "ippiRectStdDev_32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 737 ( const float* pSrc, int srcStep, 738 const double* pSqr, int sqrStep, float* pDst, int dstStep, 739 CvSize roiSize, CvRect rect )) 740 741 IPCVAPI_EX( CvStatus, icvHaarClassifierInitAlloc_32f, 742 "ippiHaarClassifierInitAlloc_32f", CV_PLUGINS1(CV_PLUGIN_IPPCV), 743 ( void **pState, const CvRect* pFeature, const float* pWeight, 744 const float* pThreshold, const float* pVal1, 745 const float* pVal2, const int* pNum, int length )) 746 747 IPCVAPI_EX( CvStatus, icvHaarClassifierFree_32f, 748 "ippiHaarClassifierFree_32f", CV_PLUGINS1(CV_PLUGIN_IPPCV), 749 ( void *pState )) 750 751 IPCVAPI_EX( CvStatus, icvApplyHaarClassifier_32f_C1R, 752 "ippiApplyHaarClassifier_32f_C1R", CV_PLUGINS1(CV_PLUGIN_IPPCV), 753 ( const float* pSrc, int srcStep, const float* pNorm, 754 int normStep, uchar* pMask, int maskStep, 755 CvSize roi, int *pPositive, float threshold, 756 void *pState )) 757 758 #endif /*_CV_IPP_H_*/ 759 760