경계 검출
영상에서 경계는 영상의 명암이 급격하게 변화하는 경로를 따라 표시되는 곡선입니다. 경계는 종종 장면 속 객체의 경계선과 연관되어 있습니다. 경계 검출은 영상에서 경계를 식별하는 데 사용됩니다.
경계를 찾으려면 edge
함수를 사용하면 됩니다. 이 함수는 다음 두 기준 중 하나를 사용하여 영상에서 명암이 급격하게 변화하는 위치를 찾습니다.
명암의 1계 도함수가 일부 임계값보다 크기가 큰 위치
명암의 2계 도함수에서 영점교차가 있는 위치
edge
는 여러 도함수 추정기를 제공하며 각 추정기는 위 정의 중 하나를 구현합니다. 일부 추정기의 경우, 연산을 가로 경계, 세로 경계 또는 가로와 세로 경계를 탐지하도록 할지 여부를 지정할 수 있습니다. edge
는 경계가 발견된 위치는 1이고 그 외의 위치는 0인 이진 영상을 반환합니다.
edge
가 제공하는 가장 효과적인 경계 검출 방법은 Canny 방법입니다. Canny 방법은 서로 다른 임계값 두 개를 사용해서 강한 경계와 약한 경계를 검출하고 약한 경계가 강한 경계와 연결되어 있는 경우에만 출력값에 약한 경계를 포함시킨다는 점에서 다른 경계 검출 방법과 다릅니다. 따라서 이 방법은 다른 방법보다 잡음의 영향을 받을 가능성이 낮고 진정한 약한 경계를 검출할 가능성이 높습니다.
영상에서 경계 검출하기
이 예제에서는 Canny 경계 검출기와 Sobel 경계 검출기를 모두 사용하여 영상에서 경계를 검출하는 방법을 보여줍니다.
영상을 작업 공간으로 읽어 들인 후 표시합니다.
I = imread('coins.png');
imshow(I)
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')