Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

edge

2차원 회색조 영상에서 경계 찾기

설명

BW = edge(I)는 이진 영상 BW를 반환하는데, 회색조 또는 이진 영상 I에서 경계를 찾은 경우에는 이진 영상에서 이에 대응하는 위치에 1을, 찾지 못한 경우에는 대응 위치에 0을 담아 반환합니다. 기본적으로 edge는 Sobel 경계 검출 방법을 사용합니다.

3차원 회색조 영상 또는 이진 영상에서 경계를 찾으려면 edge3 함수를 사용합니다.

예제

BW = edge(I,method)method로 지정된 경계 검출 알고리즘을 사용하여 영상 I에서 경계를 검출합니다.

BW = edge(I,method,threshold)threshold보다 더 강한 경계를 모두 반환합니다.

BW = edge(I,method,threshold,direction)은 검출할 경계 방향을 지정합니다. Sobel 방법과 Prewitt 방법은 세로 방향이나 가로 방향 또는 두 방향 모두에서 경계를 검출할 수 있습니다. Roberts 방법은 가로 방향 45°나 가로 방향 135° 또는 두 각도 모두에서 경계를 검출할 수 있습니다. 이 구문은 method"Sobel", "Prewitt" 또는 "Roberts"일 때만 유효합니다.

BW = edge(___,"nothinning")은 경계 세선화 단계를 건너뛰는데 이는 성능을 향상시킬 수 있습니다. 이 구문은 method"Sobel", "Prewitt" 또는 "Roberts"일 때만 유효합니다.

BW = edge(I,method,threshold,sigma)는 필터의 표준편차인 sigma를 지정합니다. 이 구문은 method"log" 또는 "Canny"일 때만 유효합니다.

BW = edge(I,method,threshold,h)는 사용자가 지정한 필터 h를 사용하여 "zerocross" 방법으로 경계를 검출합니다. 이 구문은 method"zerocross"일 때만 유효합니다.

[BW,threshOut] = edge(___)는 임계값도 반환합니다.

[BW,threshOut,Gx,Gy] = edge(___)는 방향 기울기도 반환합니다. Sobel 방법과 Prewitt 방법에서 GxGy는 각각 가로 방향 기울기와 세로 방향 기울기에 해당합니다. Roberts 방법에서 GxGy는 각각 가로 방향에서 135°와 45°도에서의 기울기에 해당합니다. 이 구문은 method"Sobel", "Prewitt" 또는 "Roberts"일 때만 유효합니다.

예제

모두 축소

회색조 영상을 작업 공간으로 읽어 들인 후 이를 표시합니다.

I = imread('circuit.tif');
imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

Canny 방법을 사용하여 경계를 찾습니다.

BW1 = edge(I,'Canny');

Prewitt 방법을 사용하여 경계를 찾습니다.

BW2 = edge(I,'Prewitt');

두 결과를 나란히 표시합니다.

imshowpair(BW1,BW2,'montage')

Figure contains an axes object. The axes object contains an object of type image.

입력 인수

모두 축소

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

"approxcanny" 방법에서는 데이터형이 single이거나 double인 영상은 [0 1] 범위로 정규화되어야 합니다. I에 [0, 1] 범위 밖에 있는 값이 있는 경우 rescale 함수를 사용하여 값을 예상 범위로 다시 스케일링할 수 있습니다.

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

경계 검출 방법으로, 다음 값 중 하나로 지정됩니다.

방법설명
"Sobel"

도함수에 대한 Sobel 근삿값을 사용하여, 영상 I의 기울기가 최대인 지점의 경계를 찾습니다.

"Prewitt"

도함수에 대한 Prewitt 근삿값을 사용하여, I의 기울기가 최대인 지점의 경계를 찾습니다.

"Roberts"도함수에 대한 Roberts 근삿값을 사용하여, I의 기울기가 최대인 지점의 경계를 찾습니다.
"log"LoG(가우스-라플라시안) 필터를 사용하여 I를 필터링한 후 영점교차를 찾아서 경계를 찾습니다.
"zerocross"사용자가 지정한 필터 h를 사용하여 I를 필터링한 후 영점교차를 찾아서 경계를 찾습니다.
"Canny"

I의 기울기의 국소 최댓값을 찾아서 경계를 찾습니다. edge 함수는 가우스 필터의 도함수를 사용하여 기울기를 계산합니다. 이 방법은 두 개의 임계값을 사용하여 강한 경계와 약한 경계를 검출하고, 약한 경계가 강한 경계에 연결된 경우 출력값에 약한 경계를 포함시킵니다. 두 개의 임계값을 사용하는 Canny 방법은 다른 방법보다 잡음에 의한 오검출 가능성이 낮으며, 실제 약한 경계를 검출할 가능성이 더 높습니다.

"approxcanny"

검출의 정확도가 떨어지는 대신 실행 속도는 더 빠른 Canny 경계 검출 알고리즘의 근사 버전을 사용하여 경계를 찾습니다. 부동소수점 영상은 [0, 1] 범위로 정규화되어야 합니다.

감도 임계값으로, 숫자형 스칼라(모든 method의 경우) 또는 요소를 2개 가진 벡터("Canny" 방법과 "approxcanny" 방법의 경우)로 지정됩니다. edgethreshold보다 강하지 않은 모든 경계를 무시합니다. 이 파라미터에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.

  • threshold를 지정하지 않거나 빈 배열([])을 지정할 경우 edge는 값을 자동으로 선택합니다.

  • "log" 방법과 "zerocross" 방법의 경우, 임계값으로 0을 지정하면 출력 영상이 입력 영상의 모든 영점교차를 포함하기 때문에 닫힌 경로를 갖게 됩니다.

  • "Canny" 방법과 "approxcanny" 방법은 임계값을 두 개 사용합니다. edge는 경계 강도가 하한 임계값보다 낮은 경계는 모두 버리고, 경계 강도가 상한 임계값보다 높은 경계는 모두 택합니다. threshold[low high] 형식(low, high 값이 [0 1] 범위에 있음)의, 요소를 2개 가진 벡터로 지정할 수 있습니다. threshold를 숫자형 스칼라로 지정할 수도 있으며, edge는 이 값을 상한 임계값에 할당합니다. 이 경우 edgethreshold*0.4를 하한 임계값으로 사용합니다.

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

경계 검출 방향으로, "horizontal", "vertical" 또는 "both"로 지정됩니다. direction 인수는 method"Sobel", "Prewitt", 또는 "Roberts"일 때만 유효합니다.

참고

Roberts method를 선택할 경우 "horizontal" 방향은 가로 방향에서 135°도에서 경계를 검출하고, "vertical" 방향은 가로 방향에서 45°에서 경계를 검출합니다.

데이터형: char | string

필터로, 숫자형 행렬로 지정됩니다. h 인수는 "zerocross" 방법에서만 지원됩니다.

데이터형: double

필터의 표준편차로, 숫자형 스칼라로 지정됩니다. sigma 인수는 "Canny" 방법과 "log" 방법에서만 지원됩니다.

방법설명
"Canny"

가우스 필터의 표준편차를 지정하는 스칼라 값입니다. 디폴트 값은 sqrt(2)입니다. edgesigma를 기반으로 필터 크기를 자동으로 선택합니다.

"log"(가우스-라플라시안)

LoG(가우스-라플라시안) 필터의 표준편차를 지정하는 스칼라 값입니다. 디폴트 값은 2입니다. 필터 크기는 n×n입니다. 여기서 n=ceil(sigma*3)*2+1입니다.

데이터형: double

출력 인수

모두 축소

출력 이진 영상으로, I와 같은 크기의 논리형 배열로 반환되며 입력 영상 I에서 경계를 찾은 경우에는 이에 대응하는 위치에 1을, 찾지 못한 경우에는 대응 위치에 0을 포함합니다.

연산에 사용된 계산된 임계값으로, "Canny" method에서는 요소를 2개 가진 벡터로, "approxcanny" 방법에서는 빈 벡터([])로, 그 외 다른 모든 경계 검출 방법에서는 숫자형 스칼라로 반환됩니다.

가로 방향 기울기로, I와 같은 크기의 숫자형 배열로 반환됩니다. 가로 기울기 크기가 크면 세로 경계가 강하다는 의미입니다.

참고

Roberts method를 선택할 경우 edge는 가로 방향에서 135°에서 계산된 기울기를 반환합니다.

세로 방향 기울기로, I와 같은 크기의 숫자형 배열로 반환됩니다. 세로 기울기 크기가 크면 가로 경계가 강하다는 의미입니다.

참고

Roberts method를 선택할 경우 edge는 가로 방향에서 45°에서 계산된 기울기를 반환합니다.

알고리즘

  • 기울기-크기 경계 검출 방법(Sobel, Prewitt 및 Roberts)의 경우 edgethreshold를 사용하여, 계산된 기울기 크기를 이진화합니다.

  • LoG(가우스-라플라시안)를 포함한 영점교차 방법에서 edgethreshold를 영점교차에 대한 임계값으로 사용합니다. 즉, 0을 넘나드는 값의 변화가 크면 경계이고, 값의 변화가 적으면 경계가 아닙니다.

  • Canny 방법은 기울기에 두 개의 임계값(낮은 경계 감도에는 높은 임계값, 높은 경계 감도에는 낮은 임계값)을 적용합니다. edge는 낮은 감도 결과로 시작한 다음 감도를 증가시켜, 높은 감도 결과의 연결된 경계 픽셀을 포함시킵니다. 이렇게 하면 검출된 경계 간의 간격을 메우는 데 도움이 됩니다.

  • 어떤 경우든 edge는 입력 데이터에 따라 발견적 방식으로 디폴트 임계값을 선택합니다. 임계값을 다르게 하는 가장 좋은 방법은 edge를 한 번 실행하여, 계산된 임계값을 두 번째 출력 인수로 캡처하는 것입니다. 그런 다음, edge에서 계산된 값부터 시작하여, 경계 픽셀을 더 적게 검출하도록 임계값을 더 높게 조정하거나 경계 픽셀을 더 많이 검출하도록 임계값을 더 낮게 조정합니다.

참고 문헌

[1] Canny, John, "A Computational Approach to Edge Detection," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, 1986, pp. 679-698.

[2] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 478-488.

[3] Parker, James R., Algorithms for Image Processing and Computer Vision, New York, John Wiley & Sons, Inc., 1997, pp. 23-29.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장