sobel 연산자가 3* 3만 존재하는 것은 아니나 대표적으로 많이 사용됩니다. 5* 5, 7* 7과 같이 홀수 크기는 모두 사용됩니다.
픽셀의 gradient를 계산할 때에는 sobel연산자와 픽셀값의 내적으로 gradient가 계산이 됩니다. 간단히
x sobel 연산자를 사용하여 픽셀의 gradient를 계산할 경우 x축(가로)을 기준으로 하는 gradient가 나오게 됩니다. y sobel 연산자를 사용할 경우는 y축(세로)을 기준으로 하는 gradient가 나오게 됩니다.
x sobel 연산자를 사용 할 경우는 x축 gradient가 나오고, y sobel 연산자를 사용 할 경우는 y축 gradient가 나오므로 각 수치의 제곱 합의 제곱근을 구하면 해당 픽셀의 gradient값을 구할 수 있습니다.
\[\begin{aligned} gradient = \sqrt{gradient^2_{x}+gradient^2_{y}} \end{aligned}\]픽셀의 gradient 값을 구한 후는 gradient의 임계치를 구하여 가장자리를 검출 할 수 있습니다.
앞서 말한 것과 같이 차선은 흰색만 있는 것이 아닙니다. 또한 날씨에 따라 차선의 RGB값은 일정하지 않습니다. 이를 보안하기 위해 HSV(색상, 채도, 명도)나 HSL(색상, 채도, 밝기)를 사용하여 색상을 추출할 수도 있습니다. udacity에서는 주로 HSL을 사용하여 색상을 처리 하고 있습니다.
HSL은 색상(Hue), 채도(Saturation), 밝기(Lightness)라고 하였습니다. 채도가 낮을수록 무채색이 되며, 밝기가 낮을수록 검은색, 높을수록 흰색에 가까워 집니다. HSV의 경우는 밝기(Lightness)를 명도(value)로 바꾼 것 입니다.다음 그림과 같이 HSL과 HSV를 표현할 수 있습니다.
이러한 기능들을 이용하는 궁극적인 목적은 다양한 상황에서의 차선을 잘 인식하기 위함입니다. sobel을 통한 가장자리 검출과 HSL을 이용한 차선 검출을 적절히 섞어서 사용하면 차선이 인식되기 힘든 상황에서도 적절히 검출할 수 있게 됩니다. 물론 적절히 검출하기위한 임계치를 얻기 위해선 적절한 튜닝을 통해 값을 얻어야 합니다.