Easy-Ipm-Client
An easy, interface friendly cross-platform client to generate top view images using inverse perspective mapping method. Since a lot of lane detection work are based on ipm images it is important to generate high quality ipm image for those users. This repo implement a easy use client for users who have no knowledge or experience with the inverse perspective mapping technology to generate top-view images.The clinet is mainly based on Qt so it is convenient to compile on other platform.
Inverse Perspective Map Model
This repo implement the model supplement in the paper "Adaptive Inverse Perspective Mapping for Lane Map Generation with SLAM".You may refer this https://ieeexplore.ieee.org/document/7734016 for details. Use the camera's motion information to implement an adaptive model for the IPM to accurately transform camera images to bird’s-eye view images. The model's schematic diagram are as follows
Side view of the IPM model
Top view of the IPM model
Install && System information
The system information and library used in this project are as follows:
OS: Ubuntu 16.04 LTS
Compiler: GCC 5.4 supported with c++ 11
Qt Library: qt 5.6
IDE: qt creator 4.8
BOOST: boost 1.58.0
OPENCV: opencv 3.4
To use this software you need first install qt library. You may follow the instruction how_to_install_qt_lib . Then you need opencv and boost installed on your local machine the two following instructions will lead you to the how to page. how_to_install_boost and how_to_install_opencv . Then you can use qt creator to open the .pro file to configure the project. A prebuiilt release version and a prebuilt debug version of the client has already been uploaded into the ROOT_DIR/release and ROOT_DIR/debug folder.
Usage and Examples
This client contains three work panel. Camera calibration module, inverse perspective map module and batch process ipm images module.
Camera Calibration Module
Select the camera calibration panel and adjust the parameters which fits your dataset and run the calibration. During the process progress you may watch the progressbar to monitor progress and the corner detection result may be seen on the screen panel. When process finished the calibration result will be written in the yml file. You may use the calibration result to distorate the source image.
Start Up Example
Adaptive Inverse Perspective Mapping Module
Select the Ipm Para Panel and adjust all the parameters needed to generate ipm images.Here is a simple glimpse at the description of the parameters.
Calib Width/Height: the image size of the camera calibration result image
Camera Pitch: the camera pitch angle
Camera Yaw: the camera yaw angle
Vp Point X/Y: the vanish point which is used with image boundary to locate the image roi to generate the ipm image
Ipm Width/Height: the image size of the result ipm image
The two most important parameter you need to adjust are the pitch angle and the vp point y. The pitch angle control the camera's motion and the vp point y control the roi location. You may save all the parameters you use to generate the ipm image into a yml file which may be used during future batch process work.
Follows are two ipm images generated with different parameter.
Batch Process Ipm Module
Select the Ipm Exec Panel and fill in the process parameter. Only static model was released for now and the model will use the parameter which was set on the Ipm Para Panel to batch generate the ipm images in the ccd dir. The progress and ipm images will show in the work panel.
Short cuts
The client support a few kinds of short cuts and tools to allow you adjust the model. You may check the image pixel coordinate and rgb value in the status bar.
A: previous image when you select a image dir
D: next image when you select a image dir
ctrl + scroll down: image zoom out
ctrl + scroll up: image zoom in