에지 검출 (Edge Detection)

이하정·2021년 6월 1일

영상처리

목록 보기
2/5

📝시작하기전에...
이번 포스팅에서는 에지와 에지를 검출하는 방법에 대해 알아보겠습니다.

Edge Detection


Edge란 무엇인가?

Edge정보를 갖고 있으면 적은 양의 데이터로 많은 정보를 알 수 있습니다.

Edge를 추출하기 위해서는 영상에서 급격하게 변화는 부분에 집중을 합니다. 변화에 관한 내용이기 때문에 미분을 사용합니다.

디지털 영상미분

이미지는 연속이 아니므로 미분이 불가능합니다. 따라서 근사치를 사용합니다.

1차 미분의 경우 [11]\left[\begin{array}{rrr} 1&-1\\ \end{array}\right]의 filter를 갖게 됩니다.
filter를 영상과 Convolution 하면 x축으로의 에지 gxg_x를 검출할 수 있고, y축으로도 반복하면 gyg_y를 구할 수 있습니다.

gx,gyg_x,g_y를 이용하면 에지의 크기 m(y,x)m(y,x)와 방향 θ\theta를 구할 수 있습니다.

Noise의 경우 단위거리 당 변화량이 크기 때문에 미분을 이용한 에지 검출에서 에지로 판단이 될 수 있습니다. 따라서 smoothing후 진행하면 noise가 제거된 채 에지검출을 할 수 있습니다.

단, smoothing을 너무 많이 진행할 경우, edge가 모호해질 수 있어 적당값을 사용해야 합니다.

convolution을 2번 진행하기 때문에 시간이 오래걸리며, 근사치를 활용하기 때문에 오류가 누적됩니다. 따라서 먼저 filter를 미분한 후, Image와 convolution연산을 진행하면 근사도 1번으로 줄이고, 연산도 줄일 수 있습니다.


소벨에지검출 (Sobel)


소벨 필터는 정방형으로 만들고 중심값에 더 큰 가중치를 주어 smoothing효과를 줍니다. 또한, 값의 차이를 더 크게 만들어 ramp에서도 edge가 잘 검출되도록 합니다.

[121000121]\left[\begin{array}{rrr} 1&2&1\\ 0&0&0\\ -1&-2&-1 \end{array}\right]

yy filter

[101202101]\left[\begin{array}{rrr} 1&0&-1\\ 2&0&-2\\ 1&0&-1 \end{array}\right]

xx filter

소벨에지검출의 과정

  1. Image를 Gaussian filter와 convolution하여 noise를 제거합니다.
  2. Smoothing된 Image와 Sobel Filter를 convolution연산을 진행합니다.
  3. x filter, y filter의 결과의 크기를 더해주면 edge를 구할 수 있습니다.

Marr-Hidreth 에지검출


1차 미분만을 사용하면, 변화가 빠른 step함수의 경우 edge를 잘 추출해낼 수 있지만 변화가 느린 ramp함수의 경우 edge로 나타내기 애매한 상황이 벌어집니다. 따라서, 2차미분을 이용하여 영교차점을 이용하여 edge를 추출하는 방법을 사용합니다.

LoG (Laplacian of Gaussian)

필터를 미리 미분해놓으면 연산과 오류를 줄일 수 있다고 했습니다. 따라서 Gaussian함수도 미리 2번의 미분을 하여 준비를 합니다. 이것을 LoG라고 합니다.

다음과 같은 filter로 나타낼 수 있습니다.

[010141010]\left[\begin{array}{rrr} 0&1&0\\ 1&-4&1\\ 0&1&0 \end{array}\right]

LoG와 Image를 convolution하면 정확하고 빠르게 edge를 얻을 수 있습니다.

Marr-Hidreth의 과정

  1. 영상과 LoG함수의 Convolution을 계산합니다.
  2. 영교차가 일어난 부분이 에지입니다.

영교차
4방향을 고려했을 때, 2개 이상의 부호가 바뀐 부분이 영교차가 일어난 지점이다. 이때, 값의 차이가 threshold보다 작으면 부호가 바뀌지 않았다고 가정한다.


0개의 댓글