OpenCV - Toán tử Sobel

Sử dụng sobel operation, bạn có thể phát hiện các cạnh của hình ảnh theo cả hướng ngang và dọc. Bạn có thể áp dụng thao tác sobel trên hình ảnh bằng phương phápsobel(). Sau đây là cú pháp của phương thức này:

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

Phương thức này chấp nhận các tham số sau:

  • src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).

  • dst - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).

  • ddepth - Một biến số nguyên đại diện cho độ sâu của hình ảnh (-1)

  • dx- Một biến số nguyên biểu diễn đạo hàm x. (0 hoặc 1)

  • dy- Một biến số nguyên biểu diễn đạo hàm y. (0 hoặc 1)

Thí dụ

Chương trình sau đây trình bày cách thực hiện thao tác Sobel trên một hình ảnh nhất định.

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");
   }
}

Giả sử rằng sau đây là hình ảnh đầu vào sobel_input.jpg được chỉ định trong chương trình trên.

Đầu ra

Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:

Image Processed

Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:

biến thể sobel

Khi chuyển các giá trị khác nhau đến tham số cuối cùng (dx và dy) (trong số 0 và 1), bạn sẽ nhận được các đầu ra khác nhau -

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

Bảng sau liệt kê các giá trị khác nhau cho các biến dxdy của phương pháp Sobel() và kết quả đầu ra tương ứng của chúng.

Dẫn xuất X Dẫn xuất Y Đầu ra
0 1
1 0
1 1