Underwater imaging is critical for various applications such as marine biology, underwater archaeology, and pipeline inspection. However, backscatter from suspended particles significantly degrades image quality. This project addresses the challenge of mitigating underwater backscatter in real-time imaging by developing a backscatter cancellation system using a Raspberry Pi Single Board Computer. The project proposes a solution that leverages a combination of image processing techniques, including and revolving around the Canny edge detection algorithm, to accurately detect and segment backscatter particles. To evaluate the system, the project develops a bubble backscatter simulator, and a lossless video recorder for controlled testing and real-world footage analysis. Performance tests revealed an average frame processing latency of 2.6ms, outperforming systems in previous work that operate on more powerful hardware. Attempts to enhance performance using multiprocessing and a real-time operating system (RTOS) patch, however, resulted in increased latency due to the overhead of Inter-Process Communication (IPC) and frequent kernel context switching. These findings suggest that simpler single-core implementations may offer superior performance for I/O-bound tasks. The results demonstrate significant progress in reducing underwater backscatter, with potential applications across various underwater imaging tasks. Future work will focus on hardware improvements and further software optimisation to refine system performance.
Read →This technical report supplies an executive summary of the modifications and additional features implemented to the base DocetOS, a barebones RTOS kernel for the ARM Cortex-M4 processor. The pre-emptive operating system now includes mutual exclusion via a re-entrant mutex and counting semaphores, a fixed-priority task scheduler, a more efficient task sleeping mechanism, a more efficient wait and notify system, and priority inheritance for mutexes.
Read →This report investigates machine learning methodologies to analyse a dataset from a clinical study devoted to probing the early identification and handling of cardiovascular disease (CVD), a pivotal health concern worldwide. The primary aim centres on utilising machine learning approaches to predict the presence or absence of CVD based on a curated set of attributes within the dataset. Further to discussing data types, modalities, objectives and success measures, this report aims to provide a holistic understanding by studying the clinical context.
Read →This article introduces the cloud computing system (CCS), discussing the overall benefits and risks with the fundamental principles. A discussion of the three main cloud delivery models takes place, and the inclusion of comparisons with links back to the CCS principles, including a case study, progressing for each model, to provide an applied example summarising all of the discussed aspects, highlighting key differences and requirements.
Read →This article introduces data windows and the motivations for their usage in digital signal processing (DSP). We delve into the spectral leakage phenomenon and explore the performance of the finite-length data window and compare it with the more specialised Hanning window. The data window methods are then applied to a problem to illustrate performance improvements. And finally, to conclude, there is a discussion to summarise this topic, including key points and a brief insight into other application areas for data windows in DSP.
Read →During my second year at the University of York studying electronic and computer engineering, I was tasked with a group project for designing, constructing and testing a digital multimeter utilising in-house components found in the university laboratories. This project aimed to enable the application of theoretical knowledge learnt during lectures, providing students with hands-on experience. This article reports on the progress of this project and my experiences as the elected project manager.
Read →Interrupts are an extremely important feature of a processor; it allows for seamless communication between the processor and peripherals. Being a more efficient alternative to polling, interrupts save a lot of processor time by avoiding blocking functions and allowing the peripheral to directly interrupt the processor, resulting in a system that is more responsive to the user’s inputs. This report outlines the fundamentals to interrupts, how the processor handles them and how it goes back to its original process. The report will also cover the interrupt handling mechanism of an STM32 MCU and a basic interrupt controller implementation to the simple CPU that was created during this term’s lab sessions.
Read →