OpenCV-Sobel 연산자

사용 sobel operation, 수평 및 수직 방향으로 이미지의 가장자리를 감지 할 수 있습니다. 방법을 사용하여 이미지에 소벨 연산을 적용 할 수 있습니다.sobel(). 다음은이 방법의 구문입니다-

Sobel(src, dst, ddepth, dx, dy)

이 방법은 다음 매개 변수를 허용합니다.

  • src − 클래스의 대상 Mat 소스 (입력) 이미지를 나타냅니다.

  • dst − 클래스의 대상 Mat 대상 (출력) 이미지를 나타냅니다.

  • ddepth − 이미지의 깊이를 나타내는 정수 변수 (-1)

  • dx− x 미분을 나타내는 정수 변수. (0 또는 1)

  • dy− y 미분을 나타내는 정수 변수. (0 또는 1)

다음 프로그램은 주어진 이미지에서 Sobel 연산을 수행하는 방법을 보여줍니다.

import org.opencv.core.Core;
import org.opencv.core.Mat;

import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class SobelTest {
   public static void main(String args[]) {
      // Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap16/sobel_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying sobel on the Image
      Imgproc.Sobel(src, dst, -1, 1, 1);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap16/sobel_output.jpg", dst);

      System.out.println("Image processed");
   }
}

다음이 입력 이미지라고 가정합니다. sobel_input.jpg 위의 프로그램에서 지정합니다.

산출

프로그램을 실행하면 다음과 같은 출력이 표시됩니다.

Image Processed

지정된 경로를 열면 다음과 같이 출력 이미지를 관찰 할 수 있습니다.

소벨 변형

마지막에 다른 값을 매개 변수 (dx 및 dy) (0 및 1)에 전달하면 다른 출력을 얻을 수 있습니다.

// Applying sobel on the Image
Imgproc.Sobel(src, dst, -1, 1, 1);

다음 표는 변수에 대한 다양한 값을 나열합니다. dxdy 방법의 Sobel() 및 각각의 출력.

X 파생 Y 파생 산출
0 1
1 0
1 1