:)
원근 변환과 슬라이딩 윈도우 본문
차선 검출에 Warping을 적용
- Warping 과정을 거쳐서 차선 추출
- 도로 이미지를 Bird Eye View 변형 처리 (Perspective 변환)
- 차선을 찾고
- 그걸 다시 원본 이미지에 오버레이
원근변환과 슬라이딩 윈도우를 이용한 차선 찾기
- 단계
- Camera Calibration
- Bird`s eye View
- 이미지 임계값 및 이진 이미지
- 슬라이딩 윈도우로 차선 위치 파악
- 파악된 차선 위치 원본이미지에 표시
Camera Calibration
- 카메라는 곡면 렌즈를 사용해서 이미지를 형성
- 그로 인해 가장자리가 왜곡되어 보이게 됨
- 가장자리 왜곡으로 인해
- 물체의 크기, 모양이 변경되기도 함
- 시야의 위치에 따라 모양이 변경되기도 함
- 실제보다 더 가깝거나 멀게 보이기도 함
- 이미지의 왜곡은 카메라의 다양한 내부적 요인들로 인해 발생
- 렌즈, 렌즈-이미지 센서와의 거리, 렌즈와 이미지 센서가 이루는 각도 등
- 이런 왜곡을 없애서 실제 우리 눈에 보이는 것과 같이 보정하는 것 -> Camera Calibration
- 왜곡된 지점을 왜곡되지 않은 지점으로 Mapping 하여 왜곡을 없앰.
Bird`s-eye View
- 새가 하늘에서 내려다보는 듯한 구도로 위에서 아래를 내려다보는 방식
- 선의 곡률을 측정하기 위해서 도로 이미지를 하향식 보기로 변환
- 하향식 보기 = Bird`s-eye View
- 역 원근변환 계산을 위해 cv2.getPerspectiveTransform(dst, src) 사용
- 마지막으로 원근변환을 사용해서 이미지를 뒤틂.
- cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR) : 앞서 계산한 원근변환을 사용해서 이미지를 뒤틀어 원하는 구도로 변환.
- 원근 변환을 위한 4개의 점은 어떻게 식별하는가?
- 도로를 내려다볼 때, 직사각형을 나타내는 사다리꼴 모양의 4개 점을 선택 (도로가 평면이라는 가정)
- 가장자리 또는 모서리 감지를 통해 이미지에서 4개의 점을 감지하고 색상 및 속성을 분석해 선택
- 선택한 4개의 점을 적절하게 정렬
이미지 임계값, 이진 이미지
- 차선이 명확하게 보이는 이미지를 생성하기 위해서 색상 임계값 조절
- 이미지를 흰색과 노란색으로 마스킹
- Gray scale로 변환
- 이진 이미지 생성
차선 식별
히스토그램
- 도로 이미지에 보정, 임계값 및 원근 변환을 적용하여 차선이 두드러지는 이진 이미지를 얻음
- 얻은 이진 이미지에서 어떤 픽셀이 라인의 일부이고 이게 왼쪽 라인인지, 오른쪽 라인인지 결정
- 각 열에 따라 픽셀 개수를 더하면 히스토그램에서 가장 눈에 띄는 두개의 peak가 생성되고, 차선의 x 위치를 파악할 수 있음.
슬라이딩 윈도우
- 선 중심 주변에 배치된 슬라이딩 윈도우를 사용해서 프레임 상단까지 선을 찾아 따라 감
- 한 윈도우 안에서 감지되는 선의 중심을 기준으로 계속 윈도우가 쌓임
- 아래쪽 처음 블록은 앞선 히스토그램으로 정의되고, 이미지 아래쪽에서 위쪽으로 검색하여 올라감.
- 슬라이딩 윈도우가 여러 개 쌓이게 되면 그 중심을 연결해서 선을 그림
- Polyfit을 사용하여 2차원으로 표현 -> ay^2 + by + c = x
- 2차식을 통해서 a,b,c 값을 구하게 됨
'ROS' 카테고리의 다른 글
필터기반 조향각 제어 (0) | 2022.04.11 |
---|---|
슬라이딩 윈도우 기반 차선 인식 (0) | 2022.04.10 |
와핑기법과 원근 변환 (0) | 2022.04.10 |
허프변환 기반 차선인식 (0) | 2022.04.10 |
명도차 기반 차선 인식 (0) | 2022.03.30 |
Comments