# 2d signal compression

I'm trying to solve the following problem. I got a "low frequency" input 2D signal over a square region. I'll collect a few samples, somewhere around 10-30 samples maybe, the exact sample count will be dynamic. Then I want to compress this to much less data and later reconstruct the square representation. The compression will only occur once but the decompression multiple times. Performance is essential. So I need a method that compress fast, but decompress faster and to a compact format so the data transfer won't become the bottleneck.

The actual application: It's for real-time computer graphics processed on a GPU. I compute samples of lighting in a vertex shader. Then the data transfers to a pixel shader where it gets reconstructed. I will accept a certain amount of error as long as the result is "blurry", i.e. no sharp artifacts. Also transcendental functions are somewhat slow on a GPU (even though a slim transcendental representation will beat any verbose solution ofc)

I've been thinking about several methods. Maybe something fourier based, similar to spherical harmonics but optimized for a 2D domain. What would be a good type of basis function to use?

Or maybe I could use some curve fitting method (plane fitting). That might be a slim and adaptive solution. What could be a good type of 2D function(s)?

My hope with this question is that there are some mathematics / signal processing wizards somewhere that can help me steer in the right direction :)

• So, you want to take a few samples (as in pixels?) of a large-dimensional 2D signal, compress these samples, and be able to reconstruct the large-dimensional singal from the compressed incomplete samples? What kind of sampling are you performing? Are you able to reconstruct the original signal from the uncompressed incomplete samples? In any case, your problem sounds a good match to concepts from image compression (e.g., wavelet transform) and/or compressive sensing. I would suggest asking the signal processing stack exchange as well. – Stelios Sep 17 '17 at 15:12
• Yes your understanding of the question is correct. The "sampling" I'm performing is a lighting equation which I would like to perform once and then reapply multiple times (once for each displayed pixel). I was considering using 2d fourier series and operate using their power series form but that still requires n^2 parameters to be handled right? Thanks for the suggestion, I'll try that as well. – user3619622 Sep 18 '17 at 15:45