1. A method comprising: receiving a block of data; classifying the block of data based on sparsity structure; selecting one of a plurality of available directional, orthonormal transforms to apply to the block based on results of classifying the block; and applying the selected transform to the block to generate a plurality of coefficients, thereby producing a compressed version of the block.