Going in search of knowledge!

DEVELOPMENT

Surrounding view generation from multiple cameras (2010, eVS, still in progress...). I was involved in the feasibility study for and the subsequent implementation of a vehicle surrounding view generation software from multiple cameras. Currently I am the responsible for this project and its evolution.

Used tools: MATLAB for prototyping, MS Visual C++ for developing, GTK+ for the GUI, and openCV for image processing and algebraic operations.

Stereo-based people counter (2009-2010, eVS, still in progress...). Me and my colleagues in eVS embedded Vision Systems S.r.l. had to test and understand code and architectural details of an existing stereo-based embedded system devoted to people counting. The output of this work consisted in a report jointly with doxygen comments inside the analysed code. Now eVS is charged with maintenance of both the software and firmware (FPGA) parts of this third party product and I am the reference person for it in eVS.

Used tools: Borland C++Builder 6 for developing the Windows XP based client side, gcc for the linux based server side, and doxygen for code comments.

Super-resolution for video surveillance purposes (2009, eVS, 8 months). I had to study the state of the art of super-resolution, select a proper approach to improve the quality and resolution of images captured by video surveillance systems for identification aid purposes, and then implement a proper GUI to interact with the video. The final target is a stand-alone application to be considered as a add-on for video surveillance systems.

Used tools: MATLAB for prototyping, MS Visual Studio 2005 for developing, GTK+ for the GUI, and openCV for image processing and algebraic operations.

Adaptive background modelling and shadow removal (2008, eVS, 3 weeks). I optimized and documented an implementation in C language of the well known Stauffer and Grimson's algorithm for background modelling passing from 8 to 15 frames per second at 320x240. The algorithm had a shadow removal stage in order to improve segmentation. I had also to improve the quality of the segmentation using morphological operations, and to classify the resulting connected component using some properties of their such as area, compactness, etc.

Used tools: MS Visual Studio 2005 for developing, GTK+ for the GUI, openCV for algebraic operations and image processing, and cvbloblib library for blob analysis.

Lane Departure Warning System (2008, eVS, 3 months). A MATLAB prototype to be then implemented in FPGA for lane markings fitting and tracking. After a brief study of the state of the art in Lane modelling, I and other colleagues chose a reference lane model and we developed a fitting algorithm followed by a tracking stage. Fitting is made using a pseudo-RANSAC approach and tracking is made using a combination of Kalman filters.

Used tools: MATLAB and Symulink.

Automatic section profile inspection of metal plates by 3D laser scanning (2008, eVS, 3 months). An application written in ANSI C which automatically detects defects in the Section Bars Profiles. It uses a system composed by a laser blade and a special camera, i.e. a camera which is able to identify the laser blade by itself at a high frame rate, for 3D reconstruction. The application includes a customized calibration procedure for laser plane identification.

Used tools: MS Visual Studio 2005 for developing, GTK+ for the GUI, and the API of the SICK-IVP laser scanner to interact with it.

Stereo code refinement (2008, eVS, 1 months). I had to refine a stereo code written in ANSI C in order to obtain a dll. A peculiarity, the code had to emulate a FPGA core. I did not start from scratch, I started from a previous version of the C code which were modified in order to emulate the FPGA core on the basis of some MATLAB code and the FPGA core documentation.

Used tools: MATLAB and MS Visual Studio 2005.

Study and development of a system for balise 3D pose verification in railway applications (2008, eVS, 2 months). I was involved in the last months of the project. During these two months I helped to debug and improve an application written partially in C++ and for the most in MATLAB which automatically detects particular kind of objects along rails and then estimates their pose. Data are acquired using a system composed by a laser blade and a special camera, i.e. a camera which is able to identify the laser blade by itself at a high frame rate. Such a kind of data allows a 3D reconstruction of the objects and so their pose wrt the rails plane can be evaluated. The application includes a calibration procedure for laser plane identification.

Used tools: MATLAB and MS Visual Studio 2005 for developing and the API of the SICK-IVP laser scanner to interact with it.

Development of a rotation invariant pattern matching algorithm for a smart vision sensor (2007, eVS, 1 month). I was involved in testing and debugging of a pattern matching algorithm used to evaluate the 2D pose of objects in a planar scene. A peculiarity, the code was optimized for blackfin ADSP-BF561.

Used tools: VisualDSP++ and MS Visual Studio 2005.

Stereo-based tracking system (2007, post-doc, 6 months). An application written in ANSI C and based on 2D feature tracking and stereopsis which allows to track a point in the 3D space. The main problems faced were related to algorithm optimization in order to process more than 15 frames per seconds. In fact, slower the frame rate is and more probable the 2D tracker fails (click here to read a research report in italian about this work). This work was committed by eVS - embedded Vision Systems s.r.l..

Used tools: MS Visual Studio 2005 for developing and GTK+ for the GUI.

Virtual brick paver system (2006-2007, post-doc, 9 months). This project was committed to the Computer Science Dept. of Verona by Ferrari BK s.p.a., a company specialized in paving, and supervised by GirTech s.r.l.. The result was BK Designer a multi-platform application written in ANSI C to virtually pave a floor using a calibration object (for example a triangle) to detect the floor plane and a data base of brick textures to be used for texturing the manually identified area. The program offers a user friendly interface that step by step directs the user to obtain the final results. Multiple textured layers can be handled in order to compose different kind of bricks onto the same floor. Layers can be added, deleted, moved, and manipulated by rotation, scaling, translation, and transparency changes.

Used tools: MATLAB for prototyping, MS Visual Studio 2005 for developing, GTK+ for the GUI, and GSL (GNU Scientific Library) for algebraic operations.

Some snapshot of the graphical user interface (click to enlarge):
gui1 gui2 gui3
gui4 gui5 gui6

Just to give an idea of the potentiality, two images, before and after manipulation, are here shown (click to enlarge).

BEFORE

Before manipulation

AFTER

After manipulation