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);
다음 표는 변수에 대한 다양한 값을 나열합니다. dx 과 dy 방법의 Sobel() 및 각각의 출력.
X 파생 | Y 파생 | 산출 |
---|---|---|
0 | 1 |
|
1 | 0 |
|
1 | 1 |
|