OpenCV는 소벨 마스크를 이용하여 영상을 미분하는 Sobel() 함수를 제공합니다. Sobel() 함수는 3×3 소벨 마스크 또는 확장된 형태의 큰 마스크를 이용하여 영상을 미분합니다. Sobel() 함수 원형은 다음과 같습니다.
void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT); |
|
• src |
입력 영상 |
• dst |
출력 영상. src와 같은 크기, 같은 채널 수를 갖습니다. |
• ddepth |
출력 영상의 깊이 |
• dx |
x 방향 미분 차수 |
• dy |
y 방향 미분 차수 |
• ksize |
소벨 커널의 크기 |
• scale |
필터링 연산 후 추가적으로 곱할 값 |
• delta |
필터링 연산 후 추가적으로 더할 값 |
• borderType |
가장자리 픽셀 확장 방식 |
Sobel() 함수는 입력 영상 src를 편미분한 결과를 dst에 저장합니다. 결과 영상의 자료형은 ddepth 인자를 통해 명시적으로 지정해야 하고, ddepth에 -1을 지정하면 src와 같은 타입을 사용하는 dst 영상을 생성합니다. dx와 dy 인자는 각각 x 방향과 y 방향으로의 편미분 차수를 의미하며, Sobel() 함수에 의해 계산되는 결과 행렬 dst는 다음 수식과 같은 의미를 갖습니다.