Main Content

경계 검출

영상에서 경계는 영상의 명암이 급격하게 변화하는 경로를 따라 표시되는 곡선입니다. 경계는 종종 장면 속 객체의 경계선과 연관되어 있습니다. 경계 검출은 영상에서 경계를 식별하는 데 사용됩니다.

경계를 찾으려면 edge 함수를 사용하면 됩니다. 이 함수는 다음 두 기준 중 하나를 사용하여 영상에서 명암이 급격하게 변화하는 위치를 찾습니다.

  • 명암의 1계 도함수가 일부 임계값보다 크기가 큰 위치

  • 명암의 2계 도함수에서 영점교차가 있는 위치

edge는 여러 도함수 추정기를 제공하며 각 추정기는 위 정의 중 하나를 구현합니다. 일부 추정기의 경우, 연산을 가로 경계, 세로 경계 또는 가로와 세로 경계를 탐지하도록 할지 여부를 지정할 수 있습니다. edge는 경계가 발견된 위치는 1이고 그 외의 위치는 0인 이진 영상을 반환합니다.

edge가 제공하는 가장 효과적인 경계 검출 방법은 Canny 방법입니다. Canny 방법은 서로 다른 임계값 두 개를 사용해서 강한 경계와 약한 경계를 검출하고 약한 경계가 강한 경계와 연결되어 있는 경우에만 출력값에 약한 경계를 포함시킨다는 점에서 다른 경계 검출 방법과 다릅니다. 따라서 이 방법은 다른 방법보다 잡음의 영향을 받을 가능성이 낮고 진정한 약한 경계를 검출할 가능성이 높습니다.

영상에서 경계 검출하기

이 예제에서는 Canny 경계 검출기와 Sobel 경계 검출기를 모두 사용하여 영상에서 경계를 검출하는 방법을 보여줍니다.

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

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

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

Sobel 경계 검출기를 필터링되지 않은 입력 영상에 적용합니다. 그런 다음 Canny 경계 검출기를 필터링되지 않은 입력 영상에 적용합니다.

BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');

비교를 위해 필터링된 영상을 나란히 표시합니다.

tiledlayout(1,2)

nexttile
imshow(BW1)
title('Sobel Filter')

nexttile
imshow(BW2)
title('Canny Filter')

Figure contains 2 axes objects. Axes object 1 with title Sobel Filter contains an object of type image. Axes object 2 with title Canny Filter contains an object of type image.