00001 // 00002 // Software License Agreement (BSD License) 00003 // 00004 // Copyright (c) 2011, Shulei Zhu <schuleichu@gmail.com> 00005 // All rights reserved. 00006 // 00007 // Redistribution and use in source and binary forms, with or without 00008 // modification, are permitted provided that the following conditions 00009 // are met: 00010 // 00011 // * Redistributions of source code must retain the above copyright 00012 // notice, this list of conditions and the following disclaimer. 00013 // * Redistributions in binary form must reproduce the above 00014 // copyright notice, this list of conditions and the following 00015 // disclaimer in the documentation and/or other materials provided 00016 // with the distribution. 00017 // * Neither the name of Shulei Zhu nor the names of its 00018 // contributors may be used to endorse or promote products derived 00019 // from this software without specific prior written permission. 00020 // 00021 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00022 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00023 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00024 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00025 // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00026 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00027 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00028 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00029 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00030 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00031 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00032 // POSSIBILITY OF SUCH DAMAGE. 00033 // 00034 // 00035 // auto_init.h --- 00036 // File : auto_init.h 00037 // Created: Sa Jun 18 14:23:25 2011 (+0200) 00038 // Author: Shulei Zhu 00039 00040 // Code: 00041 00042 #define DP_EXTRACT_SIFT 0 00043 #define DP_EXTRACT_SURF 1 00044 #define DP_MATCH_FLANN 0 00045 #define DP_MATCH_BRUTE 1 00046 00047 class AutoInit 00048 { 00049 public: 00050 cv::Mat control_points; 00051 std::vector<cv::DMatch> matches; 00052 AutoInit(); 00053 AutoInit(int dpem, int dpmm, int itv); 00054 cv::Mat compute_homography(cv::Mat &tpl, cv::Mat &training_img); 00055 void init(cv::Mat &tpl, cv::Mat &training_img); 00056 private: 00057 int dp_extract_method; 00058 int dp_match_method; 00059 int inteval; 00060 std::vector<cv::KeyPoint> keypoints1; 00061 std::vector<cv::KeyPoint> keypoints2; 00062 cv::Mat descriptors1; 00063 std::vector<cv::Mat> descriptors2; 00064 void extract_descriptors(cv::Mat &tpl, cv::Mat &training_img); 00065 void match_descriptors(); 00066 void set_control_points(cv::Mat &tpl); 00067 };