Class GradientSobel

java.lang.Object
boofcv.alg.filter.derivative.GradientSobel

public class GradientSobel extends Object

Computes the image's first derivative along the x and y axises using the Sobel operator.

The Sobel kernel weights the inner most pixels more than ones farther away. This tends to produce better results, but not as good as a gaussian kernel with larger kernel. However, it can be optimized so that it is much faster than a Gaussian.

For integer images, the derivatives in the x and y direction are computed by convolving the following kernels:

y-axis

</table} x-axis
-0.25 -0.5 -0.25
0 0 0
0.25 0.5 0.25
</table} Floating point images use a kernel which is similar to the ones above, but divided by 4.0. As a side note, the sobel operator is equivalent to convolving the image with the following 1D kernels: conv2( [0.25 0.5 0.25], [-1 0 1] )

  • Field Details

    • kernelDerivX_I32

      public static Kernel2D_S32 kernelDerivX_I32
    • kernelDerivY_I32

      public static Kernel2D_S32 kernelDerivY_I32
    • kernelDerivX_F32

      public static Kernel2D_F32 kernelDerivX_F32
    • kernelDerivY_F32

      public static Kernel2D_F32 kernelDerivY_F32
  • Constructor Details

    • GradientSobel

      public GradientSobel()
  • Method Details

    • getKernelX

      public static Kernel2D getKernelX(boolean isInteger)
      Returns the kernel for computing the derivative along the x-axis.
    • process

      public static <I extends ImageGray<I>, D extends ImageGray<D>> void process(I input, D derivX, D derivY, @Nullable @Nullable ImageBorder border)
    • process

      public static void process(GrayU8 orig, GrayS16 derivX, GrayS16 derivY, @Nullable @Nullable ImageBorder_S32<GrayU8> border)
      Computes the derivative in the X and Y direction using an integer Sobel edge detector.
      Parameters:
      orig - Input image. Not modified.
      derivX - Storage for image derivative along the x-axis. Modified.
      derivY - Storage for image derivative along the y-axis. Modified.
      border - Specifies how the image border is handled. If null the border is not processed.
    • process

      public static void process(GrayS16 orig, GrayS16 derivX, GrayS16 derivY, @Nullable @Nullable ImageBorder_S32<GrayS16> border)
      Computes the derivative in the X and Y direction using an integer Sobel edge detector.
      Parameters:
      orig - Input image. Not modified.
      derivX - Storage for image derivative along the x-axis. Modified.
      derivY - Storage for image derivative along the y-axis. Modified.
      border - Specifies how the image border is handled. If null the border is not processed.
    • process

      public static void process(GrayF32 orig, GrayF32 derivX, GrayF32 derivY, @Nullable @Nullable ImageBorder_F32 border)
      Computes the derivative in the X and Y direction using an integer Sobel edge detector.
      Parameters:
      orig - Input image. Not modified.
      derivX - Storage for image derivative along the x-axis. Modified.
      derivY - Storage for image derivative along the y-axis. Modified.
      border - Specifies how the image border is handled. If null the border is not processed.

-1 0 1
-2 0 2
-1 0 1