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
'[알고리즘]' 카테고리의 다른 글
영역처리 : 외곽선 검출(Edge Detecting) (0) | 2012.11.08 |
---|---|
영역처리 : 2차 미분(Second Order Derivative) (0) | 2012.11.08 |
Convolution, Cross-Correlation 그리고 Template Matching (0) | 2012.10.25 |
Matlab expression : 2D Convolution ==> conv( ) (0) | 2012.10.25 |
harris corner detector code (0) | 2012.10.25 |