- Window
- Python
- Opencv
- Numpy
- 영상 이미지를 통하여, 빨간색과 노란색 차선을 인식하고 인식한 차선을 바탕으로 로봇이 진행해야 할 방향 제시.
- Matlab의 Camera calibrator 앱을 사용하여 calibration.
- Camera Calibration Matrix 값을 얻음.
- Calibration 수행으로 얻은 Camera Matrix와 FocalLength 값을 이용하여 왜곡처리.
- Use cv2.undistort
- 차선만을 인식하기 위하여 불필요한 부분 제거
- 차선의 각도로 방향을 검출하기 위하여 Bird Eye View 로 이미지 변환.
- HSV(색상, 명도, 채도) 이미지에서 노란색 영역과 빨간색 영역을 검출.
- 검출된 두개의 이미지를 합쳐서 빨간색과 노란색을 검출.
- Hough Transform 으로 라인 검출.
- 검출된 라인정보, 시작과 끝점의 xy 좌표를 이용하여 라인의 각도와 방향 검출.
- 검출된 각도로 로봇이 진행해야할 방향 지시.
- 처음엔 YOLO V3 모델을 사용하였지만, 보행자 인식만 을 할 것이기 때문에 훨씬 가벼운 HOG Descriptor를 사용.
- 픽셀과 Calibration 과정에서 구한 Focal Length를 이용하여 탐지한 보행자의 위치 인식.
- L1:Y1 = L2:Y2, L1 = Focal length, Y1 = Pixel(Detection 박스의 높이)
- L2 = 카메라와 Object 사이의 거리 Y2 = 사람의 키
- L2 = L1xY2/Y1
- cv2.aruco.DetectMarkers() 를 이용하여 마커 검출.
- cv2.aruco.DectedMarkers()로 마커의 정보 검출.
- cv2.aruco.estimatePoseSingleMarkers() 회전 및 변환 백터 검출.
- cv2.aruco.drawAxis() 마커 이미지에 그리기.
- 차선내에 객체 검출시 정지.
- 현재 차선에 따라 진행방향 지시.
- Marker and Object detection.
- 차선내 객채 탐지시 Stop.