Ask Your Question

Revision history [back]

The SIFT descriptors are computed on the gaussian image (see createInitialImage in modules/nonfree/src/sift.cpp, where GaussianBlur function is applied). What I understand from the original paper is:

  • a 16x16 pixel region is evaluated around each descriptors;
  • this region is summed by block: 16 blocks of size 4x4 block around the pixel are aggregated in a single histogram. Therefore four histograms are computed around each candidate descriptors.

I think this is the implementation used in OpenCV (see SIFT_DESCR_WIDTH in the source file above), each of size 8 (8 directions for each gradient orientation). This is a constant in the source code, so you can not change it (or you have to recompile OpenCV).