The purpose of this application is to identify the possible relative camera motions given five matching points from two calibrated views. This is a classical problem in computer vision, which in this case is tackled using Nistér’s algorithm, first presented by David Nistér in this paper.
The project is a porting of the original submission from the NECSTLab at Politecnico di Milano that won the Xilinx European Open Hardware Design Contest in 2018, for the AWS EC2 F1 Category . You can watch their presentation video by clicking the thumbnail below to get an overview of how it works.
We released the code as open source , with the code available on GitHub, and we made available a pip-installable Python package that includes notebooks and overlay to check out the project in an easy way. The project is also listed in the official Community Page on our website pynq.io, under the Alveo section, where you can also find more projects to try out.
To get started, Install the
fivepoint-pynq package using
pip , then get a copy of the notebooks and run Jupyter. All of that can be achieved with only 4 commands :
pip install fivepoint-pynq pynq get-notebooks 5point cd pynq-notebooks jupyter notebook
Project structure and included notebooks
The projects is divided into two parts, a server and a client . They communicate through usage of websockets :
- The server side solves the relative pose problem provided by the client. It is also where the FPGA accelerator is run. The related notebook is available in the
5point\serverfolder once you have retrieved the notebooks using the
- The client side provides the user interface for running the application and is responsible for sending input data to the server. The related notebook is available in the
5point\clientfolder once you have retrieved the notebooks using the
pynq get-notebookscommand. Example data to run the client demo can be downloaded from the web following the get-demo-data notebook, also available in the
More info on the original Open Hardware submission can be found at the following links: