Several ways to calculate the gradient value of pixels in an image

Several ways to calculate the gradient value of pixels in an image

  • The general formula of the image gradient
    The image gradient can regard the image as a two-dimensional discrete function, and the image gradient is actually the derivative of this two-dimensional discrete function:

Image Gradient:

            G(x,y) = dx(i,j) + dy(i,j)
            dx(i,j) = I(i+1,j) - I(i,j)
            dy(i,j) = I(i,j+1) - I(i,j)

Among them, I is the value of the image pixel (such as: RGB value), and (i, j) is the coordinate of the pixel.

  • Median difference formula for image gradient
    Image gradient:

              G(x,y) = dx(i,j) + dy(i,j)
              dx(i,j) = [I(i+1,j) - I(i-1,j)]/2
              dy(i,j) = [I(i,j+1) - I(i,j-1)]/2
    

Among them, I is the value of the image pixel (such as: RGB value), and (i, j) is the coordinate of the pixel.

  • Introduction to common gradient concepts
  • basic gradient

The dilated image is subtracted from the eroded image to obtain a difference image, which is called the basic gradient image.

The basic gradient image is a method of calculating the morphological gradient supported in OpenCV, and the gradient obtained by this method is called the basic gradient.

  • The internal gradient
    subtracts the corroded image from the original image to obtain a difference image, which is called the internal gradient of the image.

  • External gradient
    After the image is expanded, the difference image obtained by subtracting the original image is called the external gradient of the image.

  • Directional Gradient
    Directional Gradient is an image gradient obtained by using straight lines in the X direction and Y direction as structural elements.

Use the structural elements of the straight line in the X direction to perform expansion and erosion operations respectively, and after the image is obtained, the difference is obtained to obtain the gradient in the X direction.

Use the structural elements of the straight line in the Y direction to perform expansion and erosion operations respectively, and after the image is obtained, the difference is called the Y direction gradient.

  • To calculate the gradient value of each pixel in the image, you can use the Sobel operator or other convolution kernels.

The Sobel operator is a commonly used convolution kernel that can be used to calculate the gradient value of each pixel in a picture. It performs convolution operations on the image in the horizontal and vertical directions, and then combines the gradient values ​​​​in the two directions to obtain the comprehensive gradient value of each pixel. Specifically, the steps to calculate the pixel gradient value using the Sobel operator are as follows:

  1. Convert the image to a grayscale image for single-channel convolution.

  2. Define the Sobel operator as follows:

    Sobel_x = np.array([[-1, 0, 1],
                        [-2, 0, 2],
                        [-1, 0, 1]])
    
    Sobel_y = np.array([[-1, -2, -1],
                        [ 0,  0,  0],
                        [ 1,  2,  1]])
    

    Sobel_x is the convolution kernel in the horizontal direction, and Sobel_y is the convolution kernel in the vertical direction.

  3. Perform horizontal and vertical convolution operations on grayscale images:

    G_x = cv2.filter2D(gray_img, -1, Sobel_x)
    G_y = cv2.filter2D(gray_img, -1, Sobel_y)
    
  4. Combine the gradient values ​​of the two directions to get the comprehensive gradient value of each pixel:

    G = np.sqrt(G_x**2 + G_y**2)
    

    Among them, G_x and G_y are the gradient values ​​in the horizontal and vertical directions, respectively, and G is the comprehensive gradient value.

    Note that the NumPy and OpenCV libraries are used here and need to be imported first:

    import cv2
    import numpy as np
    

The calculated pixel gradient value G can be used for tasks such as image edge detection and feature extraction.

Guess you like

Origin blog.csdn.net/weixin_43763292/article/details/131256720