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 // License Agreement 11 // For Open Source Computer Vision Library 12 // 13 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14 // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15 // Third party copyrights are property of their respective owners. 16 // 17 // Redistribution and use in source and binary forms, with or without modification, 18 // are permitted provided that the following conditions are met: 19 // 20 // * Redistribution's of source code must retain the above copyright notice, 21 // this list of conditions and the following disclaimer. 22 // 23 // * Redistribution's in binary form must reproduce the above copyright notice, 24 // this list of conditions and the following disclaimer in the documentation 25 // and/or other materials provided with the distribution. 26 // 27 // * The name of the copyright holders may not be used to endorse or promote products 28 // derived from this software without specific prior written permission. 29 // 30 // This software is provided by the copyright holders and contributors "as is" and 31 // any express or implied warranties, including, but not limited to, the implied 32 // warranties of merchantability and fitness for a particular purpose are disclaimed. 33 // In no event shall the Intel Corporation or contributors be liable for any direct, 34 // indirect, incidental, special, exemplary, or consequential damages 35 // (including, but not limited to, procurement of substitute goods or services; 36 // loss of use, data, or profits; or business interruption) however caused 37 // and on any theory of liability, whether in contract, strict liability, 38 // or tort (including negligence or otherwise) arising in any way out of 39 // the use of this software, even if advised of the possibility of such damage. 40 // 41 //M*/ 42 43 //////////////////////////////////////////////////////////////////////////////// 44 // 45 // NVIDIA CUDA implementation of Brox et al Optical Flow algorithm 46 // 47 // Algorithm is explained in the original paper: 48 // T. Brox, A. Bruhn, N. Papenberg, J. Weickert: 49 // High accuracy optical flow estimation based on a theory for warping. 50 // ECCV 2004. 51 // 52 // Implementation by Mikhail Smirnov 53 // email: msmirnov (at) nvidia.com, devsupport (at) nvidia.com 54 // 55 // Credits for help with the code to: 56 // Alexey Mendelenko, Anton Obukhov, and Alexander Kharlamov. 57 // 58 //////////////////////////////////////////////////////////////////////////////// 59 60 #ifndef _ncv_optical_flow_h_ 61 #define _ncv_optical_flow_h_ 62 63 #include "opencv2/cudalegacy/NCV.hpp" 64 65 //! @addtogroup cudalegacy 66 //! @{ 67 68 /// \brief Model and solver parameters 69 struct NCVBroxOpticalFlowDescriptor 70 { 71 /// flow smoothness 72 Ncv32f alpha; 73 /// gradient constancy importance 74 Ncv32f gamma; 75 /// pyramid scale factor 76 Ncv32f scale_factor; 77 /// number of lagged non-linearity iterations (inner loop) 78 Ncv32u number_of_inner_iterations; 79 /// number of warping iterations (number of pyramid levels) 80 Ncv32u number_of_outer_iterations; 81 /// number of linear system solver iterations 82 Ncv32u number_of_solver_iterations; 83 }; 84 85 ///////////////////////////////////////////////////////////////////////////////////////// 86 /// \brief Compute optical flow 87 /// 88 /// Based on method by Brox et al [2004] 89 /// \param [in] desc model and solver parameters 90 /// \param [in] gpu_mem_allocator GPU memory allocator 91 /// \param [in] frame0 source frame 92 /// \param [in] frame1 frame to track 93 /// \param [out] u flow horizontal component (along \b x axis) 94 /// \param [out] v flow vertical component (along \b y axis) 95 /// \param stream 96 /// \return computation status 97 ///////////////////////////////////////////////////////////////////////////////////////// 98 99 CV_EXPORTS 100 NCVStatus NCVBroxOpticalFlow(const NCVBroxOpticalFlowDescriptor desc, 101 INCVMemAllocator &gpu_mem_allocator, 102 const NCVMatrix<Ncv32f> &frame0, 103 const NCVMatrix<Ncv32f> &frame1, 104 NCVMatrix<Ncv32f> &u, 105 NCVMatrix<Ncv32f> &v, 106 cudaStream_t stream); 107 108 //! @} 109 110 #endif 111