Computer Vision (CV) has become omnipresent in our everyday life and it’s starting to see more and more use in the industry. This movement creates a demand for ever more performant systems to keep up with the increasing demands in manufacturing speed and autonomous behaviours. Such computer vision (CV) systems need to run complex algorithms at real-time speed and sometime even in energy constrained systems. Thus efficient implementation of these algorithms are a must. One of those algorithm is the lens rectification algorithm (also sometime called undistortion algorithm) that is often one of the first algorithm to be used to correct for multiple imperfection that can occur in a camera and lens system. This algorithm has been implemented on FieldProgramable Gate Arrays (FPGAs) in past work but they either relied heavily on Dynamic Random Access Memory (DRAM) or used a subset of the full lens distortion model used by OpenCV and restricted themselves to small distortion amounts by having access to only parts of the image at a time. This thesis aims to create an open-source, DRAM-free FPGA implementation of the OpenCV lens rectification model of this algorithm, using the full 12-parameter model and allowing the use of any parameter which, to our knowledge, has not yet been implemented. To do so, a hybrid programming approach was taken meaning that both Hardware Descriptive Languages and High-Level Synthesis were used to arrive at the final implementation. The final implementation achieves 1300 frames per second with a sub-millisecond latency at a resolution of 320x240 on grayscale images. / Databearbetning (CV) har blivit allestädes närvarande i vårt vardagliga liv och det börjar se mer och mer användning inom industrin. Denna rörelse skapar ett efterfrågan på allt mer prestandastarka system för att hålla jämna steg med den ökande efterfrågan på tillverkningshastighet och autonoma beteenden. Sådana databearbetningssystem (CV) måste köra komplexa algoritmer i realtid och ibland även i energibegränsade system. Effektiva implementeringar av dessa algoritmer är därför ett måste. En av dessa algoritmer är linsrätningsalgoritmen (ibland även kallad oavvändningsalgoritm) som ofta är en av de första algoritmerna som används för att korrigera för flera fel som kan uppstå i ett kamerasystem och linssystem. Denna algoritm har implementerats på FieldProgramable Gate Arrays (FPGAs) i andra dokument tidigare, men de har antingen starkt beroende på Dynamic Random Access Memory (DRAM) eller använt en delmängd av den fullständiga linsdistortionmodellen som används av OpenCV och begränsat sig till små distortioner genom att ha tillgång till endast delar av bilden åt gången. Denna artikel syftar till att skapa en öppen källkod, DRAM-fri FPGA-implementering av OpenCV-linsrätningsmodellen av denna algoritm, med hjälp av den fullständiga 12-parametermodellen och tillåter användning av vilken parameter som helst, vilket inte har gjorts tidigare. För att göra detta togs ett hybridprogrammeringsansats, vilket innebär att både hårdvarubeskrivningsspråk och högnivåsyntes användes för att nå den slutliga implementeringen. Den slutliga implementeringen uppnår 1300 bilder per sekund med en sub-millisekund latens vid en upplösning på 320x240 på gråskalabilder.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-337965 |
Date | January 2023 |
Creators | McCormick, Zacharie |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2023:650 |
Page generated in 0.002 seconds