솔직히 지난 번 리뷰 때는 단순 컨볼루션이라는 점에서 약간 실망해서 이 부분을 간과한 나머지 이해하지 못한 채 넘어갔다 (이해하지 못한지도 모른채). 그러나 실험구현을 위해서 다시 리뷰한 지금에서야 제대로 이해하게 되었다 (진짜?).
전에는 본문에 언급된 convolution이 단순한 SAD나 SSD일 것으로 추측했었으나, 다음과 같은 근거로 말 그대로 convolution임을 알 수 있다 (즉 difference가 아닌 multiplication의
절대치 합).
1. 1도에 하나씩이라고 볼 때 360개가 아니라 180개의 마스크만 있는 점. SAD라면 360개가 필요할 것이다.
2. 마스크가 실수(예: -100)인 점. grey level은 -100에서 100으로 normalize하는 것으로 보인다.
이 경우 일반적인 에지의 경우 (예를 들면 grey value -30에서 50으로 변하는) 에지 포인트에서 컨볼루션이 최대값을 가질 것이다.
그러나 +20에서 +80으로 변하는 edge는 detect하지 못할 것이다. 이런 edge들은 포기해도 괜찮은 것일까? → 오해다. 기다려 달라...가 아니고, convolution 계산 시 절대값을 취해서 더하는 것으로 착각했다.
제시된 마스크로 모든 에지를 검출 가능하다.
그렇다면 gradient 방향이 반대인 경우는?
즉 그림 (c)의 마스크를 사용할 때, 위가 어둡고 아래가 밝은 수평 에지는 찾을 수 있을까?
그런 경우 컨볼루션 값은 (-)로 큰 값을 가질 것이다. 즉 convolution의 absolute value를 취하여 maximum이 되는 포인트를 선택하면 된다.