title: On-the-fly lossless image compression
body: <p>I have an embedded application where an image scanner sends out a stream of 16-bit pixels that are later assembled to a grayscale image. As I need to both save this data locally and forward it to a network interface, I'd like to compress the data stream to reduce the required storage space and network bandwidth.</p>
  
  <p>Is there a simple algorithm that I can use to losslessly compress the pixel data?</p>
  
  <p>I first thought of computing the difference between two consecutive pixels and then encoding this difference with a Huffman code. Unfortunately, the pixels are unsigned 16-bit quantities so the difference can be anywhere in the range -65535 .. +65535 which leads to potentially huge codeword lengths. If a few really long codewords occur in a row, I'll run into buffer overflow problems.</p>
  
  <p>Update: my platform is an FPGA</p>