Main Content

imgradient

2차원 영상에서 기울기의 크기와 방향 구하기

설명

[Gmag,Gdir] = imgradient(I)는 2차원 회색조 영상 또는 이진 영상 I의 기울기 크기 Gmag와 기울기 방향 Gdir을 반환합니다.

예제

[Gmag,Gdir] = imgradient(I,method)는 지정된 method를 사용하여 기울기 크기와 방향을 반환합니다.

예제

[Gmag,Gdir] = imgradient(Gx,Gy)는 방향 기울기 GxGy에서 각각 x 방향과 y 방향의 기울기의 크기와 방향을 반환합니다.

예제

모두 축소

영상을 작업 공간으로 읽어 들입니다.

I = imread('coins.png');

프루이트(Prewitt) 기울기 연산자를 지정하여 기울기 크기와 방향을 계산합니다.

[Gmag, Gdir] = imgradient(I,'prewitt');

기울기 크기와 방향을 표시합니다.

figure
imshowpair(Gmag, Gdir, 'montage');
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method')

Figure contains an axes. The axes with title Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method contains an object of type image.

영상을 작업 공간으로 읽어 들입니다.

I = imread('coins.png');

x 방향 기울기와 y 방향 기울기를 계산합니다. 기본적으로, imgradientxy는 소벨 기울기 연산자를 사용합니다.

[Gx,Gy] = imgradientxy(I);

방향 기울기를 표시합니다.

imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')

Figure contains an axes. The axes with title Directional Gradients Gx and Gy, Using Sobel Method contains an object of type image.

방향 기울기를 사용하여 기울기 크기와 방향을 계산합니다.

[Gmag,Gdir] = imgradient(Gx,Gy);

기울기 크기와 방향을 표시합니다.

imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')

Figure contains an axes. The axes with title Gradient Magnitude (Left) and Gradient Direction (Right) contains an object of type image.

입력 인수

모두 축소

입력 영상으로, 2차원 회색조 영상 또는 2차원 이진 영상으로 지정됩니다.

데이터형: single | double | int8 | int32 | uint8 | uint16 | uint32 | logical

기울기 연산자로, 다음 값 중 하나로 지정됩니다.

방법설명
'sobel'

소벨 기울기 연산자. 픽셀의 기울기는 3×3 이웃에 있는 픽셀들의 가중치를 적용한 합입니다. 세로(y) 방향 기울기의 가중치는 다음과 같습니다.

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]
x 방향에서는 가중치가 전치됩니다.

'prewitt'

프루이트(Prewitt) 기울기 연산자. 픽셀의 기울기는 3×3 이웃에 있는 픽셀들의 가중치를 적용한 합입니다. 세로(y) 방향 기울기의 가중치는 다음과 같습니다.

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]
x 방향에서는 가중치가 전치됩니다.

'central'

중심 차분 기울기. 픽셀의 기울기는 이웃 픽셀들의 가중치를 적용한 차입니다. y 방향에서는 dI/dy = (I(y+1) - I(y-1))/2입니다.

'intermediate'

중간 차분 기울기. 픽셀의 기울기는 인접 픽셀과 현재 픽셀의 차입니다. y 방향에서는 dI/dy = I(y+1) - I(y)입니다.

'roberts'

로버츠(Roberts) 기울기 연산자. 픽셀의 기울기는 대각으로 인접한 픽셀 간의 차입니다. 한쪽 방향 기울기의 가중치는 다음과 같습니다.

[ 1  0 
  0 -1 ]
직교 방향에서는 기울기가 세로 축을 기준으로 뒤집어집니다.

데이터형: char | string

가로 방향 기울기로, 숫자형 행렬로 지정됩니다. 가로(x) 축은 열 첨자가 증가하는 방향을 가리킵니다. imgradientxy 함수를 사용하여 Gx를 계산할 수 있습니다.

데이터형: single | double | int8 | int32 | uint8 | uint16 | uint32

세로 방향 기울기로, Gx와 크기가 같은 숫자형 행렬로 지정됩니다. 세로(y) 축은 행 첨자가 증가하는 방향을 가리킵니다. imgradientxy 함수를 사용하여 Gy를 계산할 수 있습니다.

데이터형: single | double | int8 | int32 | uint8 | uint16 | uint32

출력 인수

모두 축소

기울기 크기로, 영상 I, 또는 방향 기울기 GxGy와 크기가 같은 숫자형 행렬로 반환됩니다. Gmagdouble형 클래스입니다. 하지만 입력 영상 또는 방향 기울기가 single형이면 Gmag도 single형 클래스가 됩니다.

데이터형: double | single

기울기 방향으로, 기울기 크기 Gmag와 크기가 같은 숫자형 행렬로 반환됩니다. Gdir은 양의 x축에서 반시계 방향으로 측정된 [-180, 180] 범위 내의 각도(단위: 도)를 포함합니다. (x축은 열 첨자가 증가하는 방향을 가리킵니다.) Gdirdouble형 클래스입니다. 하지만 입력 영상 I 또는 방향 기울기가 single형이면 Gdir도 single형 클래스가 됩니다.

데이터형: double | single

  • 영상의 경계선에 기울기 연산자를 적용할 때, 영상의 경계 밖에 있는 값은 가장 가까운 영상 테두리 값과 같은 것으로 간주됩니다. 이는 imfilter'replicate' 경계 옵션과 유사합니다.

알고리즘

여기서 다룬 각 기울기 방법에 대한 imgradient의 알고리즘적 접근 방식은 먼저 x 방향과 y 방향에서 각각 방향 기울기 GxGy를 계산합니다. 가로(x) 축은 열 첨자가 증가하는 방향을 가리킵니다. 세로(y) 축은 행 첨자가 증가하는 방향을 가리킵니다. 그런 다음, 기울기 크기와 방향이 직교 구성요소 GxGy에서 계산됩니다.

imgradient는 기울기 출력값을 정규화하지 않습니다. 기울기 출력 영상의 범위를 입력 영상의 범위와 일치시켜야 한다면, 사용된 method 인수에 따라 기울기 영상을 정규화하는 것이 좋습니다. 예를 들어, 소벨(Sobel) 커널의 경우 정규화 인자는 1/8이고, 프루이트(Prewitt) 커널의 경우 1/6, 로버츠(Roberts) 커널의 경우 1/2입니다.

확장 기능

R2012b에 개발됨