imgradientxy
2차원 영상의 방향 기울기 찾기
설명
예제
Prewitt 방법을 사용하여 방향 기울기 계산하기
영상을 작업 공간으로 읽어 들입니다.
I = imread("coins.png");
Prewitt 기울기 연산자를 사용하여 x 방향 기울기와 y 방향 기울기를 계산합니다.
[Gx,Gy] = imgradientxy(I,"prewitt");
방향 기울기를 표시합니다.
imshowpair(Gx,Gy,"montage"); title("Directional Gradients Gx and Gy, Using Prewitt Method")
방향 기울기를 사용하여 기울기 크기와 방향 계산하기
영상을 작업 공간으로 읽어 들입니다.
I = imread('coins.png');
x 방향 기울기와 y 방향 기울기를 계산합니다. 기본적으로, imgradientxy
는 Sobel 기울기 연산자를 사용합니다.
[Gx,Gy] = imgradientxy(I);
방향 기울기를 표시합니다.
imshowpair(Gx,Gy,'montage') title('Directional Gradients Gx and Gy, Using Sobel Method')
방향 기울기를 사용하여 기울기 크기와 방향을 계산합니다.
[Gmag,Gdir] = imgradient(Gx,Gy);
기울기 크기와 방향을 표시합니다.
imshowpair(Gmag,Gdir,'montage') title('Gradient Magnitude (Left) and Gradient Direction (Right)')
입력 인수
I
— 입력 영상
2차원 회색조 영상 | 2차원 이진 영상
입력 영상으로, 2차원 회색조 영상 또는 2차원 이진 영상으로 지정됩니다.
데이터형: single
| double
| int8
| int32
| uint8
| uint16
| uint32
| logical
method
— 기울기 연산자
"sobel"
(디폴트 값) | "prewitt"
| "central"
| "intermediate"
기울기 연산자로, 다음 값 중 하나로 지정됩니다.
방법 | 설명 |
---|---|
"sobel" | Sobel 기울기 연산자. 픽셀의 기울기는 3×3 이웃에 있는 픽셀들의 가중치를 적용한 합입니다. 세로(y) 방향의 가중치는 다음과 같습니다. [ 1 2 1 0 0 0 -1 -2 -1 ] |
"prewitt" | Prewitt 기울기 연산자. 픽셀의 기울기는 3×3 이웃에 있는 픽셀들의 가중치를 적용한 합입니다. 세로(y) 방향의 가중치는 다음과 같습니다. [ 1 1 1 0 0 0 -1 -1 -1 ] |
"central" | 중심 차분 기울기. 픽셀의 기울기는 이웃 픽셀들의 가중치를 적용한 차입니다. y 방향에서는 |
"intermediate" | 중간 차분 기울기. 픽셀의 기울기는 인접 픽셀과 현재 픽셀의 차입니다. y 방향에서는 |
데이터형: char
| string
출력 인수
Gx
— 가로 방향 기울기
숫자형 행렬
가로 방향 기울기로, 영상 I
와 같은 크기의 숫자형 행렬로 반환됩니다. 가로(x) 축은 열 첨자가 증가하는 방향을 가리킵니다. Gx
는 데이터형이 double
형입니다. 하지만 입력 영상 I
의 데이터형이 single
형이면 Gx
도 데이터형이 single
형이 됩니다.
데이터형: single
| double
Gy
— 세로 방향 기울기
숫자형 행렬
세로 방향 기울기로, 영상 I
와 같은 크기의 숫자형 행렬로 반환됩니다. 세로(y) 축은 행 첨자가 증가하는 방향을 가리킵니다. Gy
는 데이터형이 double
형입니다. 하지만 입력 영상 I
의 데이터형이 single
형이면 Gy
도 데이터형이 single
형이 됩니다.
데이터형: single
| double
팁
영상의 경계선에 기울기 연산자를 적용할 때, 영상의 경계 밖에 있는 값은 가장 가까운 영상 테두리 값과 같은 것으로 간주됩니다.
알고리즘
알고리즘적 접근 방식에서는 x축과 y축을 기준으로 방향 기울기를 계산합니다. x축은 오른쪽을 향하는 열을 따라 정의되고, y축은 아래를 향하는 행을 따라 정의됩니다.
imgradientxy
는 기울기 출력값을 정규화하지 않습니다. 기울기 출력 영상의 범위를 입력 영상의 범위와 일치시켜야 한다면, 사용된 method
인수에 따라 기울기 영상을 정규화하는 것이 좋습니다. 예를 들어, Sobel 커널의 경우 정규화 인자는 1/8이고, Prewitt 커널의 경우 1/6입니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
imgradientxy
함수는 C 코드 생성을 지원합니다(MATLAB® Coder™가 필요함). 일반적인MATLAB Host Computer
대상 플랫폼을 선택할 경우imgradientxy
함수는 미리 컴파일된 플랫폼별 공유 라이브러리를 사용하는 코드를 생성합니다. 공유 라이브러리를 사용하면 성능 최적화가 유지되지만 코드를 생성할 수 있는 대상 플랫폼이 제한됩니다. 자세한 내용은 Types of Code Generation Support in Image Processing Toolbox 항목을 참조하십시오.method
의 값은 컴파일타임 상수여야 합니다.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU를 사용한 영상 처리 항목을 참조하십시오.
버전 내역
R2012b에 개발됨R2021b: MATLAB Coder를 사용하여 C 코드 생성하기
이제 imgradientxy
함수는 C 코드 생성을 지원합니다(MATLAB Coder가 필요함).
참고 항목
edge
| fspecial
| imgradient
| imgradient3
| imgradientxyz
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)