카메라 보정
카메라는 곡면 렌즈를 사용해서 이미지 형성 가장자리가 왜곡
이미지 왜곡 : 카메라의 다양한 내부적 요인들로 인해 발생
Camera Calibration : 실제 눈에 보이는 것과 같이 보정하는 것
왜곡된 지점을 왜곡되지 않은 지점으로 Mapping하여 왜곡을 없앰
findChessboardCorners() | 코너 검출 |
drawChessboardCorners() | 코너 그림 |
cv2.calibrateCamera() | 왜곡 교정 계수 리턴 |
cv2.undistort() | 왜곡 교정 |
위에서 아래로 내려다보는 방식
선의 곡률을 측정하기 위해서 도로 이미지를 하향식 보기로 변환
원근변환 행렬을 구하는 함수
cv2.getPerspectiveTransform(src, dst)
이미지 왜곡
cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR)
차선의 명확한 생성을 위해 색상 임계값 조절
흰색과 노란색으로 마스킹
Grayscale로 변환
이진 이미지 생성
이진 이미지의 각 열에 따라 픽셀 개수를 더해서 x 위치 파악
선 중심에 배치된 슬라이딩 윈도우를 사용해서 프레임 상단까지 선을 찾아 따라 감
한 윈도우 안에서 감지되는 선의 중심을 기준으로 계속 윈도우가 쌓임
아래 처음 블록은 히스토그램 x 위치로 정의
이미지 아래쪽에서 위쪽으로 탐색하며 올라감
슬라이딩 윈도우가 여러 개 쌓이면 그 중심을 연결해서 선을 그림
Polyfit을 사용하여 2차원으로 표현
값 도출
Camera Calibration
Bird's eye View
이미지 임계값 및 이진 이미지
슬라이딩 윈도우로 차선 위치 파악
파악된 차선 위치 원본 이미지에 표시
xycar_ws
├ src
│ └ sliding_drive
│ └ src
│ ├ sliding_find.py
│ ├ xycar_track1.avi
│ ├ road_video1.mp4
│ └ road_video2.mp4
├ build
└ devel