edge 함수에서 에지를 검출하는 규칙
Mostra commenti meno recenti
안녕하세요.
이진 이미지에서 edge 함수의 "canny" 옵션을 사용하여 에지를 검출하면, 대부분의 경계점은 객체 내부가 아닌 외부에 검출이 되는데, 이 원리가 정확히 궁금합니다.
예를 들어서, 이미지에서 검출된 이진화된 균열 영상에서 canny edge detection을 사용한 경우, 업로드 한 이미지처럼 edge pixel이 외부에만 생기는 경향이 있더라구요.
다양한 이유가 복합적으로 작용한 결과이겠지만, 제 생각에는 NMS 역할을 하는
cannyFindLocalMaxima(dx,dy,magGrad,lowThresh)
함수의 역할로 인한 결과라고 생각하는데, 이 규칙이 궁금합니다. 이 규칙을 알아야 제 프로젝트에 적용할 수 있거든요.
답변을 주시는 모든 분들에게 감사합니다.

Risposte (1)
Angelo Yeo
il 31 Mar 2026 alle 0:42
edge 함수의 첫 번째 예제인
openExample('images/CompareEdgeDetectionUsingCannyAndPrewittMethodsExample')
를 기준으로 설명해보겠습니다.
시작하면 아래와 같은 그림이 나옵니다.

우선, Canny Edge Detection의 시작 단계는 Gaussian 스무딩 후 미분 계수를 검출하는 것입니다. 미분계수의 magnitude를 계산해 그려보면 아래와 같이 윤곽이 검출되는 것을 알 수 있습니다.

그러나 확대해보면 Gaussian 스무딩한 결과로부터 얻은 것이므로 꽤 흐릿한 것을 알 수 있습니다. cannyFindLocalMaxima은 미분 계수의 방향과 edge의 방향을 고려해 edge에 수직인 방향으로 edge의 능선을 스캔하여 가장 큰 값 하나만 남겨서 edge를 1 pixel로 줄입니다. 아래 그림에서 왼쪽이 cannyFindLocalMaxima 전, 오른쪽이 cannyFindLocalMaxima 후입니다.

이후에 strong edge 및 이와 연결된 edge들을 찾고 그 외 edge들은 제거합니다. 아래는 전후 비교입니다.

결론적으로 말씀하신 cannyFindLocalMaxima는 스무딩으로 뭉뚱그려진 edge에서 로컬 최댓값을 찾아 1로 만들고 나머지는 0으로 suppression 하는 기법입니다. 다만 cannyFindLocalMaxima 함수는 빌트인 함수이며 내부 코드가 공개되어 있지는 않는 것으로 보입니다.
도움 되었으면 좋겠습니다.
Categorie
Scopri di più su 객체 분석 in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!