더북(TheBook)

샤르 필터 마스크를 이용하여 영상을 미분하려면 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와 같은 크기, 같은 타입을 갖습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.