004 : Real-time panorama stitching for food delivery robot (2017)

Real-time panorama stitcher implemented using CUDA and OpenCL to Nvidia and Ryzen platforms. Customer had tried to implement panorama imager but it did not turn out to be good. Therefore implementation had to be done from scratch for CUDA with 1ms target delay on laptop. CUDA routine was designed which takes 5 input images along with calibrations in and produces simple cylinder mapped panorama image in given resolution. Delay on laptop was below 1ms and the code went quickly into production. Quality was greatly improved because the in-house implementation did not use any filtering, cropped input images, produces ugly seams and did not respect calibration geometry. Impainting was added to fill black areas which are missing. Later on, Ryzen platform needed same routine and therefore OpenCL implementation was designed, implemented and deployed onto Ryzen platform. Besides use case in DNN based object detection, panorama image is sent to remote drivers in real-time to allow food deliveries with human assistance.

Original CPU panorama.

New CUDA panorama.

Cropping in original CPU panorama.

New CUDA panorama.

Nasty gaps in original CPU panorama.

New CUDA panorama.

Strange seam effects in original CPU panorama.

New CUDA panorama.

Example panorama, vignetting and automatic camera parameters still to be addressed.