컴퓨터비전관련

GPU-accelerated real-time stixel computation: 설명과 코드실행까지! - jimoo

감._.자 2021. 6. 24. 00:23
728x90
반응형

StixelWorld 란? 

Stixel이란 object(자동차, 건물, 하늘, 등)를 직사각형 막대기로 나타내는 방법이다.

 

StixelWorld 는 스테레오 이미지로부터 얻은 시차 영상(disparity image)를 통해 주행 가능 영역을 stixel로 추출하는 알고리즘이다.

 

요약하자면, 도로면과 장애물이 만나는 지점부터 장애물의 높이까지 여러 막대기로 나타내는 방법이다.

 

이를 통해 도로에 존재하는 자동차, 건물, 하늘을 여러 색의 막대기로 나타내고 해당하지 않는 부분은 도로로 추정한다.

 

저는 StixelWorld를 사용하여 road만 stixel로 표현하도록 해보았습니다.

 

KITTI dataset을 사용하여 적용하였습니다. 

disparity 이미지는 "DepthHint" 논문을 참고하여 얻은 결과입니다.

(다음에 DepthHint에 대해 자세하게 설명하도록 하겠습니당~)

왼: Left image                                                                     오: disparity image
stixelworld 실행결과

결과를 보면 Road가 잘 추출되지 않는 것을 볼 수 있습니다. (Sidewalk까지 도로로 추출되고 있어서)

 

그 이유는 stixelnet은 장애물과 지면이 닿는 곳을 추출하는 알고리즘이기 때문입니다. 

road와 sidewalk의 경계선이 (턱이 없는 부분) 모호한 부분은 다 도로로 인식하게 된다.

 

아래는 코드를 실행하는 방법에 대해 간략히 설명하도록 하겠습니다.

 

github.com/dhernandez0/stixels#gpu-accelerated-real-time-stixel-computation

 

dhernandez0/stixels

GPU-accelerated real-time stixel computation. Contribute to dhernandez0/stixels development by creating an account on GitHub.

github.com

실행 환경: Ubuntu18.04 opencv4.4.0 cmake 3.16.0

 

stixels-master 폴더에서 terminal 실행 후! 입력해주기

mkdir
build 
cd build
cmake .. 
make

 

make 입력 후 error: identifier "CV_RGB2GRAY" is undefined 가 뜬 경우!

"main.cu"에 추가하고 build 폴더 삭제 후 다시 실행하면 에러가 나지 않는 것을 볼 수 있음!!

#include "opencv2/imgproc/types_c.h"

 

실행방법? build 폴더에서 terminal 실행 후 아래 type에 맞게 입력하면 된다.

./stixels dir max_disparity

dir은

---- left (images taken from the left camera)

---- right (right camera)

---- disparities (disparity maps)

---- stixels (results will be here)

폴더가 있는 경로이다.

 

나는 아래와 같이 입력하여 실행시킴!

./stixels ../example 128

stixels-master/example/stixels 폴더 안에 결과물이 생긴 것을 확인할 수 있다!

 

이제 이미지로 출력해보자! 출력하는 코드는 아래 github 주소에서 확인할 수있다!!

github.com/dhernandez0/show_stixels/

 

dhernandez0/show_stixels

Code to generate stixels image from .stixels format - dhernandez0/show_stixels

github.com

***기존의 show_stixels 코드는 road를 제외한 나머지를 stixel로 나타냅니다.

road만 추출하고 싶은 경우는 코드 중 "road가 아닌경우만 stixel을 나타낸다" 의 코드를 잘 변형하여 사용해보시길 바랍니다!!

728x90
반응형