LNCS, vol. Ke, Y. In: CVPR, vol. Tuytelaars, T. In: BMVC, pp. Matas, J. Harris, C. In: Proceedings of the Alvey Vision Conference, pp. In: ICCV, vol. Kadir, T. Jurie, F. II, pp. Florack, L. Mindru, F. Baumberg, A. This detector works well with integral images because only the sum over a rectangle is needed.
Taken from the original SURF paper. Figure 4. Surf feature values at 4 different detector sizes. Having found features in the previous section we must now find some aspect of those features that can be compared among the features. This is the descriptor. We were assigned to implement a basic window descriptor which is the values of the 5x5 window of gray scale values centered on the feature we are describing.
This description is invariant to planar motion but fails if there are changes in lighting or rotation. The SURF descriptor is designed to be scale invariant and rotationally invariant. To ignore scale the descriptor is sampled over a window that is proportional to the window size with which it was detected, that way if a scaled version of the feature is in another image the descriptor for that feature will be sampled over the same relative area.
Rotation is handled by finding the dominant direction of the feature and rotating the sampling window to align with that angle. Derivatives in the x and y directions are taken in these final squares.
This vector is normalized to length 1 and is the feature descriptor. The process is summarized in Figure 5. Figure 5. A graphical representation of the SURF descriptor.
This figure taken from the original SURF paper. There are a few aspects of the SURF detector and descriptor that we have not yet had time to implement. First creating the features is a very slow process, no optimization has been done yet on this step. The SURF authors include a Gaussian weighting over the descriptor and a more efficient matching system we have not implemented these yet.
Currently our best performance is with the sum-squared-distance matching system but it ignores a lot of information that is available.
This leads to ignoring potential features near the edges of the image. Figure 6. Matched features of Guggenheim Hall in a rotated image. Clearly there is room for improvement.
This function accepts an 8-bit RGB or an 8-bit grayscale image as the input. The output returned is an array of extracted interest points. This function is composed of the following function calls, which contain computations suitable for GPU parallelization:.
The Convert32bitFPGray. If the input provided is already in the 8-bit grayscale format, skip this step. After this step, the 8-bit grayscale image is converted to a bit floating-point representation for enabling fast computations on the GPU.
The MyIntegralImage. The integral image is useful for simplifying finding the sum of pixels enclosed within any rectangular region of the image. Finding the sum of pixels helps in improving the speed of convolutions performed in the next step. The FastHessian.
For this example, use these parameters:. To generate a kernel that uses the atomicAdd operation, use the coder. The OrientationCalc. The final result is an array of interest points where an interest point is a structure that consists of these fields:.
0コメント