SPHORB: A Fast and Robust Binary Feature on the Sphere
(version 1.0)

Designed and Developed by

Qiang Zhao,  
Liang Wan

 
Introduction

The "SPHORB" package is an OpenCV implementation of the algorithm introduced in SPHORB: A Fast and Robust Binary Feature on the Sphere by Zhao et al. This algorithm is designed to detect and describe the features for spherical panoramic images, which are more and more easily obtained for common users. Based on a nearly regular hexagonal grid parametrization of the sphere - geodesic grid, we can adopt the planar ORB features to the spherical domain and achieve satisfactory performance.

Download
SPHORB.zip [23M]

Conditions of use

SPHORB is distributed under the GNU General Public License. For information on commercial licensing, please contact the authors at the contact address below.

If you use this package in published work, please make reference to the following paper:
Qiang Zhao, Wei Feng, Liang Wan and Jiawan Zhang. SPHORB: A Fast and Robust Binary Feature on the Sphere. International Journal of Computer Vision, Vol. 113, No. 2, pp. 143-159.

What's included in the package?

Before using SPHORB, you need to install the OpenCV library. OpenCV 2.4.2 is used in our implementation.

In SPHORB.rar, there are some folders and files.
  • Data folder
          the data used to accelerate or simplify the algorithm

  • Image folder
          the first image pair is for camera rotation with the source image from SUN360 database[1],       the second pair is for camera movement with the two images from Google Street View (C).

  • pfm.h pfm.cpp
          reader for PFM(Portable Float Map) file

  • utility.h utility.cpp
          the utility functions for ratio matching strategy and drawing matches (different with the       "drawMatches" function of OpenCV)

  • detector.h detector.cpp nonmax.cpp
          spherical FAST detector trained using the scheme of Rosten and Drummond[2], and the
          non-maximal suppression using FAST score

  • SPHORB.h SPHORB.cpp
          the SPHORB algorithm

  • example1.cpp example2.cpp
          two test cases

[1] J. Xiao, K. Ehinger, A. Oliva, and A. Torralba. Recognizing scene viewpoint using panoramic place representation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012.

[2] E. Rosten and T. Drummond. Machine learning for highspeed corner detection. In Proceedings of the European Conference on Computer Vision (ECCV), 2006.

Example usage

Example1 Code Snippet
  1.  
  2. float ratio = 0.75f;
  3. SPHORB sorb;
  4.  
  5. Mat img1 = imread("Image/1_1.jpg");
  6. Mat img2 = imread("Image/1_2.jpg");
  7.  
  8. Mat descriptors1;
  9. Mat descriptors2;
  10.  
  11. vector<KeyPoint> kPoint1;
  12. vector<KeyPoint> kPoint2;
  13.  
  14. sorb(img1, Mat(), kPoint1, descriptors1);
  15. sorb(img2, Mat(), kPoint2, descriptors2);
  16.  
  17. BFMatcher matcher(NORM_HAMMING, false);
  18. Matches matches;
  19.     
  20. vector<Matches> dupMatches;
  21. matcher.knnMatch(descriptors1, descriptors2, dupMatches, 2);
  22. ratioTest(dupMatches, ratio, matches);
  23.     
Contact information

For any questions, comments, bug reports or suggestions, please send email to Qiang Zhao at qiangzhao at tju.edu.cn.