public interface GradientCornerIntensity<T extends boofcv.struct.image.ImageGray> extends FeatureIntensity<T>
Several different types of corner detectors [1,2] all share the same initial processing steps. First a 2 by 2 deformation matrix D = [ Ixx , Ixy ; Iyx , Iyy] is computed around each pixel. D is computed by summing up the product of each pixel's gradient inside of a window. Next how corner like each pixel is computed using the information in the deformation matrix. In the final step where each of these techniques differ.
Ixx = Sum dX*dX
Ixy = Iyx = Sum dX*dY
Iyy = Sum dY*dY
where the Sum is the sum across all the pixels within a rectangular window, and [dX,dY] is a pixel's gradient.
Alternative implementations can consider a weighted window around the pixel. By considering only a uniform set of weights several optimizations are possible. The runtime is independent of the window size and can be very efficiently computed.
[1] Jianbo Shi and Carlo Tomasi. Good Features to Track. IEEE Conference on Computer Vision and Pattern Recognition,
pages 593-600, 1994
[2] E.R. Davies, "Machine Vision Theory Algorithms Practicalities," 3rd ed. 2005
| Modifier and Type | Method and Description |
|---|---|
void |
process(T derivX,
T derivY,
boofcv.struct.image.GrayF32 intensity)
Computes feature intensity image.
|
getIgnoreBorder, getRadius