Skip to Main Content
Recent advancements in semi-conductor fabrication has led to a dramatic increase in the size of data sets of advanced imaging sensors. While increased pixel counts leads to greater area coverage and higher resolution, it also results in higher image processing time. If real-time image processing is required, power and size requirements go up as large data processing computers are required to keep pace with the data. In this paper, we propose using desktop Graphics Processing Units (GPUs) to shrink the Size, Weight and Power (SWaP) pyramid. We have developed a novel approach to computing polarimetric data using GPUs. The GPU is inherently designed to perform parallel floating point operations quickly. Image processing is very well suited to the GPU architecture, where every pixel can be represented as a thread and all threads executed concurrently on the GPU. The processing of polarized imagery requires calculating the Stokes parameters and Degree of Linear Polarization (DoLP) of each pixel in the Focal Plane Array (FPA) of a sensor. In addition, dead pixel replacement is also desired in order to achieve better image contrast and create a higher quality image. Processing this data for large FPAs in Matlab takes as much as 30 seconds per frame, even after optimizing through vectorization. The Matlab code to process the polarized imagery was re-coded in NVidia's C API named CUDA and functions were run on an NVidia 9400 GS GPU with 64 cores. Massive speedup was attained, reducing the time to process a frame from 30 seconds in Matlab to 50 ms in CUDA, a speedup of 600x. In this paper we show that through use of the GPU we are able to accomplish real-time image processing using advanced algorithms, while at the same time reducing system SWaP requirements.