[알고리즘]

영역처리 : 1차 미분(First Order Derivative)

Neo Park 2012. 11. 8. 17:30

 

1. First order derivative

엣지를 찾아내기 위해서 우리는 엣지 검출용 마스크를 돌려서 엣지를 얻어 냈던 것을 기억하실 수 있을 겁니다.

그렇다면 오늘은 그걸 한번 좀더 심도있게 알아보는 시간을 갖도록 하죠. 먼저 1차 미분 입니다.

1차 미분은 행 검출기(Hr)과 열 검출기(Hc)로 구성되어 있습니다.

마스크 계수의 합은 0이 됩니다.

종류:

- Roberts: 마스크의 크기가 작고 잡음에 민감

- Prewitt: 널리 사용되는 것으로 대각 방향의 엣지보다 수평수직 엣지를 찾는데 사용

- Sobel: 수평수직보다 대각선 방향에 놓여진 엣지를 찾는데 사용

이것의 특징이라면 마스크의 크기가 클수록 상세한 엣지들을 검출할 수가 없으며 작으면 또 잡음에 민감해 집니다.

헐, 복잡 하네요.

 

2. Roberts Operator

로버트 연산은 2차원 배열을 사용합니다.

그 이야기는 무엇일까요? 가장 빠르다는 사실이겠죠? 하지만 빠를 뿐 입니다. 오래전에 만들어진 연산이고, 또 잡음에 약하기 때문에 잘 사용되지 않고 있습니다. 결과물이 안좋은데 사용할 이유가 없는거죠. 지금은...

[그림2-1. Roberts Operator]

 

3. Prewitt Operator

프리윗 연산은 로버트 연산의 한계를 극복하기 위해서 나온 것 입니다.

마스크가 2x2에서 3x3으로 늘어났습니다.

프리윗 마스크를 사용하면 수직, 수평의 엣지를 찾아내는데 매우 효과적인 결과를 얻을 수 있습니다. 하지만 역시 잘 사용하지 않습니다. 이 다음에 나올 소벨 알고리즘이 있는데요, 이유는 아래서 설명하죠.

[그림3-1. Prewitt Operator]

 

4. Sobel Operator

소벨 연산은 프리윗 연산의 단점을 극복하기 위해 나온 것 입니다.

프리윗은 수직, 수평의 엣지에 강하지만 대각선 엣지를 잘 찾아내지 못하는 치명적인 단점이 있습니다.

그래서 나온 것이 소벨 연산이죠. 대부분의 영상에는 다양한 곡선도 존재하고 있기 때문 입니다. 그래서 프리윗 연산은 많이 사용하지 않는다는 것 입니다.

또 재미있는 것은 프리윗 연산과 소벨 연산의 마스크가 거의 흡사하게 생겼으나 행렬의 가운데 마스크 값만 2, -2를 사용했다는 사실 입니다. 별 것 아닌 것 같지만 소벨 박사님은 이거 하나로 이름을 널리 알리셨습니다.

[그림4-1. Sobel Operator]

 

5. 결과를 통한 비교

이렇게 1차 미분을 사용하는 엣지 디텍터 3가지의 효과는 결과물을 보면 확연히 보실 수 있습니다.

로버트 연산을 사용하면 뭔가 정보가 많이 소실된 것이 보이죠. 이것은 매우 난감해 지는 상황을 연출할 수 있습니다.

그래서 로버트 연산은 이제 사용하지 않는 것 입니다. 소벨과 프리윗 연산을 많이 사용하고 아주 종종 프리윗 연산을 사용하는 경우는 있지만 일반적으로는 소벨 연산을 더 많이 사용 합니다.

[그림5-1. Roberts vs Prewitt vs Sobel]

 

[그림5-2. Hr, Hc Mask of Roberts and Sobel operator]

 

 

참조 : http://forum.falinux.com/zbxe/?document_srl=549723&mid=lecture_tip