There are (in general) three common ways to arrive at a wavelet basis for R2. The first (separable) way takes the tensor product of two one-dimensional wavelets and their associated scaling functions. One wavelet (psi) (x) and scaling function (phi) (y) pair; one wavelet (psi) (x) wavelet (psi) (y) pair and one scaling function (phi) (x) and wavelet (psi) (y) pair leading to three `detail' terms per scale and translate. This leads to the familiar Mallat representation of the image. The second, less frequently used basis, is formed by taking all dilations of the product of two one dimensional wavelets, leading to one detail term per single scale and translate, but far more scales since the dilate changes between the two wavelets. In the third way, the basis is formed not by a tensor product, rather by dilation of a set of functions which is supported on a lattice, the translates of which complete the integer lattice. This technique leads to k detail terms corresponding to the k wavelets in the basis. In this paper, non-separable two dimensional Haar wavelets are considered to represent images for compression purposes. The irregular (self-similar) support of non-separable wavelets make them a natural candidate for image compression. A fast algorithm for decomposition and reconstruction of images in terms of the non-separable Haar wavelets is discussed, and the connection between the `best basis' representation and Quad (n-ary) Trees is discussed.