ADAS
: Advanced Driving Assistance System
LDWS
: Lane Departure Warning System ➡️ 소리 경고LKAS
: Lane Keeping Assistant System Road
, lane
, lane line
There are many ways
to detect lane lines
using vision systems.
Canny Edge Detection
Hough Transform Algorithm
FSC(Forward Sensing Camera)
Vanishing Poing
: There is a horizontal line...
차분
하여 Zero Crossing Point
를 찾을 수 있기 때문에정규분포
: Gaussian Distribution. (mu=?, sigma=?)
표준정규분포
: Normalized Gaussian Distribution. (mu=0, sigma=1)
Image에 Gaussian Filter를 왜 씌우는가?
➡️ filter를 통해 주변에 있는 8개의 information을 축소, 가운데 있는 대표값을 최대화하기 위해서
g1
➡️ symmetric matrix가 만들어짐을 확인할 수 있다.g1
을 input image와 convolution 연산하여Gaussian Filter Test
Calculating the gradients and
Sobel Mask X == 수직 방향 Edge 검출
Sobel Mask Y == 수평 방향 Edge 검출
Example
%% 2_1. Calculating gradient with sobel mask
sobelMaskX = [-1, 0, 1; -2, 0, 2; -1, 0, 1]; % 수평 방향(x) 미분 filter -> 수직 방향 edge 검출
sobelMaskY = [1, 2, 1; 0, 0, 0; -1, -2, -1]; % 수직 방향(y) 미분 filter -> 수평 방향 edge 검출
% Convolution with horizontal and vertical filter
G_X = conv2(img1, sobelMaskX, 'same');
G_Y = conv2(img1, sobelMaskY, 'same');
arctan
: range[- ~ +],
range[ ~ ],
range[- ~ -],
...
arctan2
: range[- ~ +]
➡️ arctan2는 arctan이 의 범위에 따라 있는 그래프를
- ~ 의 범위로 그려준다.
따라서 값을 정확하게 준다.
따라서 공간 상의 움직임을 구현하기 위해서는 arctan2를 사용해야 한다.
arctan2
를 이용하여 를 얻었을 것이고, 그 를 range[0, 360]로 만든다Non-Maximum Suppression
:
지역적으로 최대값이 아닌 Edge를 제거하는 과정.
Edge에 기여하지 않는 pixel을 제거 (0으로 만듦)
➡️ 진짜 edge가 아닌데도 검출되는 pixel들이 있기 때문.
➡️ Blurring 현상을 없애고 Sharp한 Edge로 변경 필요하기 때문
24row 3column을 봤을 때, quantization = 2이다.
따라서 max(23row 3column, 24row 3column, 25row 3column) 연산을 했을 때,
결과가 24row 3column이기 때문에 지역적으로 최대값을 가지므로 제거되지 않음.
2row 2column을 봤을 때, quantization = 3이다.
따라서 max(1row 1column, 2row 2column, 3row 3column) 연산을 했을 때,
결과가 1row 1column이기 때문에 지역적으로 최대값이 아니기 때문에 제거
두 개의 Thresholds로 Edge인지 아닌지 추론하는 단계.
Strong Edge
: Maximum Threshold < 현재 pixel값
Weak Edge
: Minimum Threshold < 현재 pixel값 < Maximum Threshold
No Edge
: 현재 pixel값 < Maximum Threshold
하지만 Strong Edge pixel들만 Edge로 판단할 경우,
영상의 noise로 인해 Edge Pixel인데도 제대로 인식되지 않을 수 있다.
그래서 Strong Edge와 인접한 Weak Edge Pixel을 Strong Edge로 판단해주어 Edge Pixel들끼리 서로 연결해줘야 한다.