title: How does the SiftDescriptorExtractor from OpenCV convert descriptor values?
body: <p>I have a question about the last part of the SiftDescriptorExtractor job,</p>
  
  <p>I'm doing the following:</p>
  
  <pre><code>    SiftDescriptorExtractor extractor;
      Mat descriptors_object;
      extractor.compute( img_object, keypoints_object, descriptors_object );
  </code></pre>
  
  <p>Now I want to check the elements of a descriptors_object Mat object:</p>
  
  <pre><code>std::cout&lt;&lt; descriptors_object.row(1) &lt;&lt; std::endl;
  </code></pre>
  
  <p>output looks like:</p>
  
  <pre><code>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 32, 15, 0, 0, 0, 0, 0, 0, 73, 33, 11, 0, 0, 0, 0, 0, 0, 5, 114, 1, 0, 0, 0, 0, 51, 154, 20, 0, 0, 0, 0, 0, 154, 154, 1, 2, 1, 0, 0, 0, 154, 148, 18, 1, 0, 0, 0, 0, 0, 2, 154, 61, 0, 0, 0, 0, 5, 60, 154, 30, 0, 0, 0, 0, 34, 70, 6, 15, 3, 2, 1, 0, 14, 16, 2, 0, 0, 0, 0, 0, 0, 0, 154, 84, 0, 0, 0, 0, 0, 0, 154, 64, 0, 0, 0, 0, 0, 0, 6, 6, 1, 0, 1, 0, 0, 0]
  </code></pre>
  
  <p>But in <a href="http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf" rel="noreferrer">Lowe paper</a> it is stated that:</p>
  
  <blockquote>
    <p>Therefore, we reduce the influence of
    large gradient magnitudes by
    thresholding the values in the unit
    feature vector to each be no larger
    than 0.2, and then renormalizing to
    unit length. This means that matching
    the magnitudes for large gradients is
    no longer as important, and that the
    distribution of orientations has
    greater emphasis. The value of 0.2 was
    determined experimentally using images
    containing differing illuminations for
    the same 3D objects.</p>
  </blockquote>
  
  <p>So the numbers from the feature vector should be no larger than 0.2 value.</p>
  
  <p>The question is, how these values have been converted in a Mat object?</p>