샤르 필터 마스크를 이용하여 영상을 미분하려면 Scharr() 함수를 사용합니다. Scharr() 함수 원형은 다음과 같습니다.
void Scharr(InputArray src, OutputArray dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT); |
|
• src |
입력 영상 |
• dst |
출력 영상. src와 같은 크기, 같은 채널 수를 갖습니다. |
• ddepth |
출력 영상의 깊이 |
• dx |
x 방향 미분 차수 |
• dy |
y 방향 미분 차수 |
• scale |
필터링 연산 후 추가적으로 곱할 값 |
• delta |
필터링 연산 후 추가적으로 더할 값 |
• borderType |
가장자리 픽셀 확장 방식 |
샤르 필터를 이용한 영상의 미분은 앞서 설명한 Sobel() 함수를 이용하여 구할 수도 있습니다. Sobel() 함수의 ksize 인자에 FILTER_SCHARR 또는 -1을 지정하면 3×3 샤르 마스크를 사용하여 영상을 미분합니다.
Sobel() 또는 Scharr() 함수를 이용하여 x 방향으로 미분과 y 방향으로 미분을 각각 계산하여 행렬에 저장한 후, 두 미분 행렬을 이용하여 그래디언트 크기를 계산할 수 있습니다. OpenCV는 2차원 벡터의 x 방향 좌표와 y 방향 좌표를 이용하여 벡터의 크기를 계산하는 magnitude() 함수를 제공합니다. magnitude() 함수 원형은 다음과 같습니다.
void magnitude(InputArray x, InputArray y, OutputArray magnitude); |
|
• x |
벡터의 x 좌표를 나타내는 실수 행렬 또는 벡터 |
• y |
벡터의 y 좌표를 나타내는 실수 행렬 또는 벡터. x와 크기와 타입이 같아야 합니다. |
• magnitude |
벡터의 크기를 나타내는 실수 행렬 또는 벡터. x와 같은 크기, 같은 타입을 갖습니다. |