10 #include <aliceVision/feature/Descriptor.hpp>
11 #include <aliceVision/feature/ImageDescriber.hpp>
12 #include <aliceVision/feature/regionsFactory.hpp>
13 #include <aliceVision/config.hpp>
14 #include <aliceVision/system/Logger.hpp>
16 #include <aliceVision/feature/imageStats.hpp>
20 #include "nonFree/sift/vl/sift.h"
47 EFeatureConstrastFiltering _contrastFiltering = EFeatureConstrastFiltering::GridSort;
49 std::size_t _gridSize = 4;
50 std::size_t _maxTotalKeypoints = 10000;
56 int getImageFirstOctave(
int w,
int h)
const
66 static void initialize();
68 static void destroy();
71 static int nbInstances;
76 template<
typename TOut>
80 inline void convertSIFT<float>(
const vl_sift_pix* descr,
Descriptor<float, 128>& descriptor,
bool rootSift)
84 const float sum = std::accumulate(descr, descr + 128, 0.0f);
85 for (
int k = 0; k < 128; ++k)
86 descriptor[k] = std::floor(512.f * sqrt(descr[k] / sum));
90 for (
int k = 0; k < 128; ++k)
91 descriptor[k] = std::floor(512.f * descr[k]);
96 inline void convertSIFT<unsigned char>(
const vl_sift_pix* descr, Descriptor<unsigned char, 128>& descriptor,
bool rootSift)
101 const float sum = std::accumulate(descr, descr + 128, 0.0f);
102 for (
int k = 0; k < 128; ++k)
103 descriptor[k] =
static_cast<unsigned char>(512.f * sqrt(descr[k] / sum));
107 for (
int k = 0; k < 128; ++k)
108 descriptor[k] =
static_cast<unsigned char>(512.f * descr[k]);
119 std::size_t getMemoryConsumptionVLFeat(std::size_t width, std::size_t height,
const SiftParams& params);
132 bool extractSIFT(
const image::Image<float>& image,
133 std::unique_ptr<Regions>& regions,
134 const SiftParams& params,
136 const image::Image<unsigned char>* mask);