kwan's note

컴퓨터 비전 - edge detection 본문

computer vision/Computer vsion -Korea Univ Graduate

컴퓨터 비전 - edge detection

kwan's note 2022. 4. 22. 11:19
반응형

이 노트는 고려대학교 김현우교수님의 대학원 강의인 컴퓨터 비전을 수강하고 작성하였습니다.

 

이전 수업

https://reminder-by-kwan.tistory.com/156

 

컴퓨터 비전 - denoising image with linear filter (평균값 필터, 가우시안 필터)

이 노트는 고려대학교 김현우교수님의 대학원 강의인 컴퓨터 비전을 수강하고 작성하였습니다. 컴퓨터 비전의 가장 오래된 task중 하나는 바로 이미지의 denoise 입니다. 요즘에는 딥러닝을 이용

reminder-by-kwan.tistory.com

edge detection에 앞서

edge detection 또한 컴퓨터 비전의 오래되고 유명한 문제중하나로 모서리를 탐지하여 선등으로 표현하는 작업이다. 익숙하고 간단한 프로세스이지만 컴퓨터 비전을 배우는 입장에서 바로 deep learning approach로 뛰어들어 적용하는것 보다 이런 고전적인 computer vision methods를 배우는것이 insight를 키우는데 더 효과적이라고 생각이 들었다.

 

먼저 edge는 무엇으로 인해 발생할까?

먼저 물체의 텍스쳐 변경이 있을 것이다. 다음으로는 깊이의 불연속으로 인한 물체 경계(하늘과 나뭇잎) 또는 물체의 돌출부로 인한 reflection change, 또는 그림자 등이 있다.

 

이미지의 edge를 detect하는 가장 강력하면서 간단한 방법은 이미지 intensity의 급격한 변화를 보는 것이므로 gradient를 이용해 검출이 가능하다.  x축 방향,y축 방향 gradient를 계산하면 되는데

위와 같이 이를 이용해 edge의 각도와 strength를 계산할 수 있다.

 

 

지금까지 gradient를 이용해 edge를 검출하는 기본적인 방법을 알아봤는데 다음으로 위와 같은 naiive한 방식의 edge detection에서 발생할 수 있는 문제나 해결방법등을 보자.

위와같은 이미지가 있다면 우리는 1000 부근에서 이미지의 edge가 있다고 생각하지만 실제로 미분을 하면 아래와같은 결과가 나오게 된다. noise로 인해 edge를 알기 어려운 현상이 발생하게 된다.

이를 해결하기 위해서 smoothing을 먼저 진행하고 그 다음으로 미분을 진행하면 된다.

 

가우시안으로 스무딩을 하고 미분을 하면 DOG filter 가 되는데 D와 G 모두 linear이므로 하나의 linear filter가 된다.

 

DOG filter 에서 G filter의 사이즈를 크게 하면 더 큰 범위의 edge가 detect된다. 반대로 작은 filter의 경우 finer feature가 detect 됨을 알 수 있다.

 

 

이를 응용해서 laplacian of gaussian filter도 만들 수 있다. (변곡점을 찾기 위해)

 

이러한 filter의 특성을 요약하면 다음과 같다.

canny-edge detector

 

하지만 이렇게 추출한 결과물은 edge가 하나의 선으로 연결되지 않고 흰색의 두꺼운 경계가 생기며 단순히 흐린 부분도 생겨난다. 이런 흐린 부분을 없애기 위한 방법은 threshold를 결정해 경계만 표현하게 된다.

 

그럼에도 여전히 흰색 두꺼운 경계가 생기는것을 방지하지는 못하며 threshold를 너무 크게 주면 edge까지 일부 삭제하게 된다.

 

이러한 문제를 해결하기 위한 강력하면서 간단한 edge detector가 canny-edge detector이다.

 

canny는 DOG filter의 결과물에서 각각의 문제를 해결하기 위해 단계를 추가했다.

 

가우시안 필터를 적용한 이미지에 먼저 gradient를 적용할 때 크기와 방향을 구한 다음 이를 이용해 edge의 크기와 방향성을 찾았다.

 

gradient의 크기와 방향을 이용해 NMS (non maximum surpression)을 통해 edge라고 여겨지는 것 중 가장 높은 value를 제외한 나머지를 없애 하나의 선으로 만들었다.

 

그 다음으로 먼저 높은 threshold를 적용해 edge의 시작점들을 찾아내고 이어지는 edge는 낮은 threshold값만 넘기면 edge로 처리하는 방식으로 값은 낮지만 연결된 edge들을 이어주면서 마무리 했다.

 

각각의 process 와 결과는 아래와 같다.

더 자세한 내용은

https://en.wikipedia.org/wiki/Canny_edge_detector

 

Canny edge detector - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search The Canny edge detector applied to a color photograph of a steam engine. The Canny edge detector is an edge detection operator that uses a multi-stage algorithm to detect a wide range

en.wikipedia.org

 

반응형