Vis enkel innførsel

dc.contributor.advisorKjeldsberg, Per Gunnar
dc.contributor.advisorNjølstad, Tormod
dc.contributor.authorJohnsen, Harald Haugen
dc.date.accessioned2021-10-15T17:20:29Z
dc.date.available2021-10-15T17:20:29Z
dc.date.issued2021
dc.identifierno.ntnu:inspera:77039769:22531793
dc.identifier.urihttps://hdl.handle.net/11250/2823430
dc.descriptionFull text available on 2024-06-18
dc.description.abstractUltralydgruppen ved NTNU utvikler for tiden et system som skal gjenkjenne posisjon og orientering til en ultralydprobe [1] . Dette er gjort ved at flere kameraer er festet på selve proben som ser ut i rommet for å detektere et antall referansepunkt. Disse referansepunktene skal så brukes til å estimere posisjonen og orienteringen til proben. I denne masteroppgaven ser vi nærmere på prosessen hvor man detektere disse referansepunktene og estimerer 2D-posisjonen til disse punktene i et bilde. Beregningen av selve posisjonen og orienteringen av ultralydproben er utenfor denne masteroppgavens rammer. Oppgaven er også begrenset til å se på en videostrøm om gangen. Målet med oppgaven har vært å undersøke hvor god ytelse og nøyaktighet en kan oppnå ved å akselerere denne prosessen på en FPGA. En algoritme for å detektere referansepunkt, med hensikt i å bli implementert på en FPGA, har dermed blitt designet. Noen deler av prosessen som ikke har like strenge sanntidskrav ønsker man at blir beregnet i programvare. Det er dermed blitt brukt en maskinvare/programvare-codesign metodikk (Engelsk: Hardware/Software-codesign). Det har også blitt laget et eget testmiljø hvor målet er å ha en videostrøm inn, og en videostrøm ut hvor man har plottet en sirkel rundt alle referansepunkter som er funnet. Dette testmiljøet er designet som et PYNQ-prosjekt. PYNQ er et rammeverk fra Xilinx som lar utviklere bruke høynivå kode, som Python, for å utnytte programmerbar logikk på noen av Xilinx's FPGAer. Testmiljøet har blitt designet med hensikt at man enkelt kan teste andre video applikasjoner som er designet i programmerbar logikk. Den programmerbare logikken er designet i Vivado, hvor det også er laget diverse testbenker for å simulere ulike deler av systemet. Algoritmen som er implementert på en FPGA, viser gode resultater fra simuleringer ved at den raskt og nøyaktig finner referansepunktene. For bilder med oppløsning på 1280x720 viser simuleringen en forsinkelse på omtrent 6.4 ms ved høyeste oppnåelige klokkefrekvens. Dette tilsvarer en bildefrekvens på 156 FPS. Forsinkelsen er tilnærmet lineært avhengig av antall pixler i bildet, så for bilder med lavere oppløsning kan en oppnå en tilsvarende økt bildefrekvens. Algoritmen bruker linjebuffere som viser god ressursbruk. Den bruker 4,5 blokker med BRAM, der hver blokk har en størrelse på 36 Kb.
dc.description.abstractThe ultrasound group at NTNU is currently developing a system that will estimate the position and orientation of an ultrasound probe [1]. They do this by attaching several cameras to the probe that looks into the room to detect a set of reference points. These reference points are then used to estimate the position and orientation of the probe. In this master's thesis, we take a closer look at the process of detecting these reference points and estimate their 2D positions in an image. It is beyond the scope of this master's thesis to calculate the position and orientation of the ultrasound probe, and the thesis is also limited to watching only one video stream at a time. The objective of this thesis is to investigate how good performance and accuracy that can be achieved by accelerating this process on an FPGA. An algorithm for detecting reference points to be implemented on an FPGA has thus been designed. For the parts of the process that do not have strict real-time requirements, it is desired that they are calculated in software. A hardware/software-codesign methodology has thus been used. A separate test environment was created where the goal was to have an input video stream and a video stream out, where a circle was plotted around all reference points found. This test environment was designed as a PYNQ project. PYNQ is a framework from Xilinx that makes it easier for developers to utilize programmable logic on Xilinx's FPGAs, using high-level code such as Python. The test environment has been designed with the intention of also being able to test other video applications designed in programmable logic. The programmable logic has been designed in Vivado, where various testbenches have also been created to simulate different parts of the system. The algorithm implemented on an FPGA shows promising results in simulations where it quickly and accurately detects the reference points. For images with a resolution of 1280x720, the simulation shows a delay of approximately 6.4 ms at the highest achievable clock frequency. This corresponds to a frame rate of 156 FPS. The delay was approximately linearly dependent on the number of pixels in the image, meaning a lower image resolution would achieve a correspondingly increased frame rate. The algorithm uses line buffers, which shows good resource utilization. It uses 4,5 blocks of BRAM, where each block has a size of 36 Kb.
dc.languageeng
dc.publisherNTNU
dc.titleEfficient and accurate detection of illuminated points using FPGA hardware acceleration
dc.typeMaster thesis


Tilhørende fil(er)

FilerStørrelseFormatVis

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel