차선 검출을 위한 이미지 전 처리해보기 🛣
- 왜곡 제거(카메라 보정)👍
- Perspective Transform(원본 이미지 ⏩ 2D)
- Color Filtering(HLS, LAB color space)
- 픽셀 값 정규화(feat. 최대값) 및 이미지 픽셀(HLS 1개, LAB 1개) 합치기.
- Window Search
- Show Detected Lines and Info.
최초 카메라로 입력되는 이미지 프레임에 대해서, 왜곡현상을 제거합니다. 화면에 출력되는 이미지는 2D 형태이지만, 이 이미지는 실제 세계의 3차원의 형상을 2차원 데이터로 변환시킨 후 디스플레이에 투영시킵니다. 우리는 그 변환된 이미지를 보고 있는 거죠. 이 과정에서 물리적으로 사용되는 카메라의 렌즈 및 그 외 카메라의 고유 특성, 빛의 특성 등의 다양한 요인으로부터 영향을 받을 수 있습니다. 그 결과로, 실제 형상과는 다르게 기울어져 보이거나, 그 크기가 작거나 또는 크게 보이는 경우가 있습니다. 물론 왜곡을 일부러 부여함으로써 그 용도를 최적화시키는 경우도 있습니다.(자동차의 사이드 미러, 커브 길의 볼록거울 등)
하지만 우리가 사용할 이미지 소스는 왜곡을 최소화 시키는게 목적이며, 왜곡을 최소화 함으로써 더욱 정확한 데이터의 조작을 할 수 있습니다.
1번 과정에서는 opencv의 undistort함수를 사용함으로써 왜곡된 이미지를 보정할 수 있었습니다. 전 처리 작업이기 때문에 동영상 형태의 소스를 인풋으로 입력해서, 차선 검출 과정까지 한 번에 할 수는 없습니다. 즉, 전 처리 과정을 거친 후 왜곡에 대한 카메라 보정값을 찾고, 찾은 보정값을 카메라에 적용시킨 후, 본격적으로 차선 검출 파이프라인에 소스 이미지를 피딩(feeding) 하는 순서가 되는 겁니다. (꽤나 인내를 필요로 하는 작업입니다.)
자세한 내용은 이전에 작성한 글이 있어 아래와 같이 링크 합니다.
[ openCV | C++ ] 차선 검출 이미지 전처리 작업. 왜곡 현상 보정 하는 방법.
[ openCV | C++ ] 차선 검출 이미지 전처리 작업. 왜곡 현상 보정 하는 방법.
undistort 함수 사용 리뷰 🚀 서론(참고한 글) Camera Calibration 체스보드를 이용하는 이유 보정 작업 결과(with 와이드 렌즈) CODE 이미지 프레임에 반영되어 있는 왜곡현상을 없애주기 위한 작업입니다
fwanggu-lee.tistory.com