UDP packets are individually byte-stream, so something has to convert from 2D to byte-stream. udp() calls take a linear buffer of information to write, so unless you want to write your own interface to udp (which, as noted is byte-stream), you will need to linearize the information.
If you are looking for something that takes care of the process of converting an array into linear form and folding it back up at the other end, without you having to worry about explicitly coding array sizes and byte orders and whether the individual components for a pixel are written together or entire planes are written as a whole, then you could create XML files and send those. I think you will find, though, that the overhead of creating those is not so much fun. It would, though, have the advantage of being very portable. If you are willing to take a step back from portability you could use one of the File Exchange contributions to serialize