이 글은 Edge Detection에 대한 개요이다.
일반적으로 Edge를 검출하는 방법은 크게 기하학적인 방법과 이미지 공간 방법으로 나눌 수 있다.
그런데 현재 가장 많이 사용하는 방법은 이미지 공간 방법이다. 왜냐하면 기하학적인 방법은 장면의 기하학적 복잡도에 따라서 Edge 검출 시간이 증가하기 때문이다. 그에 반해 이미지 공간 Edge 검출은 기하학적 복잡도와 상관없이 상수 시간의 처리 속도를 가진다.
이미지 공간 Edge 검출은 Sobel filter와 같이 불연속점을 검출하는 필터라면 어떤 필터라도 상관이 없다.
불연속성을 검출하기 위해서 사용될 수 있는 이미지 소스 중에 대표적인 것들은 깊이 버퍼, - 깊이 버퍼의 경우 Z-buffer의 값은 비선형성때문에 좋은 결과를 얻을 수 없으므로, 노멀라이즈를 하는 것이 좋다 - 노멀 버퍼, 색상 버퍼가 있다.
깊이 버퍼는 뷰 공간 깊이값을 사용하는데, 문제는 깊이 값이 8bit 정밀도를 가지므로, 근경의 Edge 검출은 정확하지만, 원경의 경우 Edge가 검출되지 않고 두 물체가 너무 가까이 있어도 Edge가 검출되지 않는다.
노멀 버퍼의 경우는 깊이 버퍼와 다르게 근경, 원경 모두 Edge 검출이 잘되고, 두 물체가 가까이 붙어있어도 Edge 검출이 잘되지만, 문제는 두 물체가 같은 노멀을 가지고 있다면 Edge가 검출되지 않는다. 예를 들자면 책상 위에 종이 한장이 놓여있는 것처럼 말이다.
마지막으로 색상 버퍼를 사용하는 방법이다. 각 물체마다 고유의 ID를 색상으로 표현하여, 색상 버퍼를 그리고 그 색상 버퍼의 불연속성을 이용하여 Edge를 검출하는 방법인데, 위의 두 가지 방법의 장점만 가지고 있다고 할 수 있지만, 같은 물체의 내부 Edge를 검출하지 못한다. 예를 들자면, 종이를 접어놓았을 때 안쪽으로 접힌 부분의 Edge를 검출하지 못한다. 왜냐하면 같은 색상 ID이기 때문에 불연속성이 검출되지 않기 때문이다.
그래서 정확한 Edge를 검출하기 위해서는 여러 방법을 혼용해서 사용해야만 한다.
댓글 없음:
댓글 쓰기