Interface GradientCornerIntensity<T extends ImageGray<T>>

All Superinterfaces:
FeatureIntensity<T>
All Known Implementing Classes:
ImplSsdCorner_F32, ImplSsdCorner_F32_MT, ImplSsdCorner_S16, ImplSsdCorner_S16_MT, ImplSsdCornerBase, ImplSsdCornerBox, ImplSsdCornerNaive, ImplSsdCornerWeighted_F32, ImplSsdCornerWeighted_F32_MT, ImplSsdCornerWeighted_S16, ImplSsdCornerWeighted_S16_MT

public interface GradientCornerIntensity<T extends ImageGray<T>> 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

  • Method Details

    • process

      void process(T derivX, T derivY, GrayF32 intensity)
      Computes feature intensity image.
      Parameters:
      derivX - Image derivative along the x-axis.
      derivY - Image derivative along the y-axis.
      intensity - Output intensity image
    • getInputType

      Class<T> getInputType()
      Type of input image.