주요 콘텐츠

bwtraceboundary

이진 영상에서 객체 추적

설명

B = bwtraceboundary(BW,P,fstep)은 이진 영상 BW에서 객체의 윤곽선을 추적합니다. 값이 0이 아닌 픽셀은 객체에 속하고 0인 픽셀은 배경을 구성합니다. P는 추적을 시작하려는 객체 경계선에 있는 점의 행과 열 좌표를 지정합니다. fstepP에 연결된 객체의 다음 픽셀에 대한 초기 탐색 방향을 지정합니다. B는 영역의 경계선 픽셀의 행과 열 좌표를 저장합니다.

B = bwtraceboundary(BW,P,fstep,conn)은 경계선을 추적합니다. 여기서 conn은 원하는 연결성을 지정합니다.

B = bwtraceboundary(BW,P,fstep,conn,m,dir)은 추출할 최대 경계선 픽셀 수 m과 경계선을 추적할 방향인 dir을 지정합니다. bwtraceboundary는 기본적으로 경계선의 모든 픽셀을 식별합니다.

예제

예제

모두 축소

영상을 읽어 들인 후 표시합니다.

BW = imread('blobs.png');
imshow(BW)

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

영상에서 객체를 선택하고 경계선을 추적합니다. 객체를 선택하려면 객체의 경계선에 있는 픽셀을 지정하십시오. 이 예제에서는 두꺼운 흰색 원의 경계선에 있는 픽셀 좌표를 사용합니다. 픽셀 좌표는 impixelinfo를 사용하는 외관 검사를 통해 얻을 수 있습니다. bwtraceboundary는 기본적으로 경계선에 있는 모든 픽셀을 식별합니다.

r1 = 163;
c1 = 37;
contour = bwtraceboundary(BW,[r1 c1],'W');

영상에 윤곽선을 플로팅합니다.

hold on
plot(contour(:,2),contour(:,1),'g','LineWidth',2)

Figure contains an axes object. The hidden axes object contains 2 objects of type image, line.

두 번째 객체의 경계선에 있는 점을 선택합니다. 이 예제에서는 가장 큰 사각형의 왼쪽 상단 코너 근처의 픽셀 좌표를 사용합니다. 시계 방향으로 첫 50개의 경계선 픽셀을 추적합니다.

r2 = 68;
c2 = 95;
contourCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'clockwise');

두 번째 객체의 경계선에 있는 동일한 점에서 시작하여 시계 반대 방향으로 첫 50개의 경계선 픽셀을 추적합니다.

contourCCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'counterclockwise');

영상에 빨간색으로 시계 방향 윤곽선을 플로팅합니다. 영상에 파란색으로 시계 반대 방향 윤곽선을 플로팅합니다.

plot(contourCW(:,2),contourCW(:,1),'r','LineWidth',2)
plot(contourCCW(:,2),contourCCW(:,1),'b','LineWidth',2)

Figure contains an axes object. The hidden axes object contains 4 objects of type image, line.

입력 인수

모두 축소

이진 영상으로, 2차원 숫자형 또는 논리형 행렬로 지정됩니다.

추적을 시작할 객체 경계선의 시작점 좌표로, 요소를 2개 가진 [row column] 형식의 벡터로 지정됩니다.

데이터형: double

P에 연결된 다음 객체 픽셀의 초기 탐색 방향으로, 다이어그램에 묘사된 대로 문자형 벡터 또는 string형 스칼라로 지정됩니다.

참고

연결성 conn4일 때 fstep은 값 "N", "E", "S", "W"로 제한됩니다.

데이터형: char | string

픽셀 연결성으로, 8 또는 4로 지정됩니다.

의미

2차원 연결성

4

경계가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로 또는 세로 방향으로 인접한 픽셀입니다.

3-by-3 pixel neighborhood with four pixels connected to the center pixel

현재 픽셀은 회색으로 표시됩니다.

8

경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로, 세로 또는 대각선 방향으로 인접한 픽셀입니다.

3-by-3 pixel neighborhood with 8 pixels connected to the center pixel

현재 픽셀은 회색으로 표시됩니다.

데이터형: double

추출할 최대 경계선 픽셀 수로, 양의 정수로 지정됩니다. 기본적으로 mInf이고 bwtraceboundary는 경계선에 있는 모든 픽셀을 식별합니다.

데이터형: double

경계선을 추적할 방향으로, "clockwise" 또는 "counterclockwise"로 지정됩니다.

데이터형: char | string

출력 인수

모두 축소

영역에 대한 경계선 픽셀의 행과 열 좌표로, q×2 행렬로 반환됩니다. B의 각 행은 [row column]의 형태를 갖습니다.

알고리즘

bwtraceboundary 함수는 제이콥(Jacob)의 중지 조건에 의해 수정된 무어-이웃(Moore-Neighbor) 추적 알고리즘을 구현합니다. 이 함수는 Digital Image Processing Using MATLAB(저자: Gonzalez, R. C., R. E. Woods, S. L. Eddins)의 초판(New Jersey, Pearson Prentice Hall, 2004)에 나와 있는 boundaries 함수를 기반으로 합니다.

참고 문헌

[1] Gonzalez, R. C., R. E. Woods, and S. L. Eddins. Digital Image Processing Using MATLAB, New Jersey, Pearson Prentice Hall, 2004.

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

|