5-point Relative Pose Problem for PYNQ - Alveo Edition


We are proud to announce the release of a PYNQ - Alveo Edition project in collaboration with NECSTLab, Politecnico di Milano: 5-point Relative Pose Problem for PYNQ .

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, under the Alveo section, where you can also find more projects to try out.

Quick Start

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\server folder once you have retrieved the notebooks using the pynq get-notebooks command.
  • 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\client folder once you have retrieved the notebooks using the pynq get-notebooks command. Example data to run the client demo can be downloaded from the web following the get-demo-data notebook, also available in the 5point\client folder.


More info on the original Open Hardware submission can be found at the following links:

1 Like