슬라이딩 윈도우 기반 차선 인식

BERT·2023년 4월 12일
0

ROS

목록 보기
20/23

Camera Calibration

카메라 보정
카메라는 곡면 렌즈를 사용해서 이미지 형성 \rarr 가장자리가 왜곡
이미지 왜곡 : 카메라의 다양한 내부적 요인들로 인해 발생

Camera Calibration : 실제 눈에 보이는 것과 같이 보정하는 것
왜곡된 지점을 왜곡되지 않은 지점으로 Mapping하여 왜곡을 없앰

Camera Calibration 단계

자동으로 코너 검출 후 패턴 매핑

findChessboardCorners()코너 검출
drawChessboardCorners()코너 그림

교정 및 undistortion 계산

cv2.calibrateCamera()왜곡 교정 계수 리턴
cv2.undistort()왜곡 교정

Bird's-eye View

위에서 아래로 내려다보는 방식
선의 곡률을 측정하기 위해서 도로 이미지를 하향식 보기로 변환

원근변환 행렬을 구하는 함수
cv2.getPerspectiveTransform(src, dst)

이미지 왜곡
cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR)

이미지 임계값, 이진 이미지

차선의 명확한 생성을 위해 색상 임계값 조절
흰색과 노란색으로 마스킹
Grayscale로 변환
이진 이미지 생성

  • HSV
    색도 채도 명도
  • LAB
    L 명도
    A Red Green
    B Yello Blue
    노란색 차선 인식 시 B를 사용하면 좋은 성능을 냄
  • HLS
    HSV의 명도를 밝기로 바꾼 것
    색조 밝기 채도
    흰색 차선 인식 시 L을 사용하면 좋은 성능을 냄

차선 식별

히스토그램

이진 이미지의 각 열에 따라 픽셀 개수를 더해서 x 위치 파악

슬라이딩 윈도우

선 중심에 배치된 슬라이딩 윈도우를 사용해서 프레임 상단까지 선을 찾아 따라 감
한 윈도우 안에서 감지되는 선의 중심을 기준으로 계속 윈도우가 쌓임
아래 처음 블록은 히스토그램 x 위치로 정의
이미지 아래쪽에서 위쪽으로 탐색하며 올라감
슬라이딩 윈도우가 여러 개 쌓이면 그 중심을 연결해서 선을 그림
Polyfit을 사용하여 2차원으로 표현 ay2+by+c=x\rarr ay^2+by+c=x
a,b,ca, b, c 값 도출


슬라이딩 윈도우

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

예시

0개의 댓글