주요 콘텐츠

영상의 경계 추적하기

영상에서 객체의 경계 추적하기

이 예제에서는 이진 영상에서 하나의 객체 또는 모든 객체의 경계를 추적하는 방법을 보여줍니다.

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

I = imread("coins.png");
imshow(I)

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

영상을 이진 영상으로 변환합니다. bwtraceboundary 함수와 bwboundaries 함수는 이진 영상에만 사용할 수 있습니다.

BW = imbinarize(I);
imshow(BW)

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

단일 객체의 경계

이진 영상에서 단일 객체의 경계를 추적하려면, 먼저 객체의 테두리에 있는 한 픽셀의 행과 열 좌표를 결정해야 합니다. 이 예제에서는 열 좌표를 선택합니다. 그러면 이 예제는 해당 열에서 맨 위에 있는 객체의 행 좌표를 계산합니다.

numCols = size(BW,2);
col = 60;
row = find(BW(:,col),1)
row = 
27

지정된 점에서부터 경계를 추적하려면 bwtraceboundary 함수를 사용합니다. 이진 영상, 시작점의 행 좌표와 열 좌표, 첫 번째 스텝의 방향을 필수 인수로 지정해야 합니다. 이 예제에서는 북쪽("N")을 지정합니다.

boundary = bwtraceboundary(BW,[row, col],"N");

원본 회색조 영상 위에 테두리를 플로팅합니다.

imshow(I)
hold on
plot(boundary(:,2),boundary(:,1),"g",LineWidth=3);

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

모든 객체의 경계

이 예제에서 사용된 이진 영상에서 몇몇 동전에 검은 영역이 포함되어 있는데, bwboundaries 함수는 이러한 검은 영역을 별도의 객체로 해석합니다. bwboundaries가 동전의 외부만 추적하도록 하기 위해, imfill 함수를 사용하여 각 동전 내부의 영역을 채웁니다.

BW_filled = imfill(BW,"holes");

bwboundaries 함수를 사용하여 영상에 있는 모든 동전의 경계를 추적합니다. bwboundaries는 셀형 배열을 반환하며, 각 셀에는 영상에 있는 객체에 대한 행과 열 좌표가 포함되어 있습니다.

boundaries = bwboundaries(BW_filled);

원본 회색조 영상 위에 모든 동전의 테두리를 플로팅합니다.

for k=1:10
   b = boundaries{k};
   plot(b(:,2),b(:,1),"g",LineWidth=3);
end

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

추적을 위한 첫 번째 스텝 방향 선택하기

특정 객체의 경우 시작점으로 사용할 테두리 픽셀과 첫 번째 스텝의 방향(예: 북쪽 또는 남쪽)을 선택할 때 주의가 필요할 수 있습니다.

예를 들어, 어떤 객체에 구멍이 포함되어 있는데 객체에서 얇은 부분에 있는 픽셀을 시작 픽셀로 선택한 경우 첫 스텝의 방향을 어떻게 선택하는가에 따라 객체의 바깥쪽 테두리를 추적할 수도 있고 구멍의 안쪽 테두리를 추적할 수도 있습니다. 채워진 객체의 경우에는 첫 스텝 파라미터로 선택하는 방향이 비교적 덜 중요합니다.

설명을 돕기 위해 다음 그림에서는 시작 픽셀이 픽셀 한 개 너비의 경계선에 놓여 있을 때 첫 번째 스텝의 방향이 추적되는 경계선에 어떠한 영향을 주는지 표시했습니다. 여기서 연결성은 디폴트 값인 8입니다. 첫 번째 스텝의 방향이 북쪽으로 설정되면 경계선이 객체의 바깥쪽 테두리를 따라 시계 방향으로 추적되는 반면, 첫 번째 스텝의 방향이 남쪽으로 설정되면 경계선이 객체의 안쪽 테두리를 따라 반시계 방향으로 추적됩니다.

첫 번째 스텝 방향이 경계 추적에 미치는 영향

참고 항목

| | |

도움말 항목