1. A method for compressing an image partitioned into blocks of pixels, for each block comprising the steps of: converting the block to a 2D matrix; decomposing the matrix into a column matrix and a row matrix, wherein a width of the column matrix is substantially smaller than a height of the column matrix and the height of the row matrix is substantially smaller than the width of the row matrix; compressing the column matrix and the row matrix to produce corresponding compressed columns matrix and compressed row matrix; and, combining the compressed column matrix and the compressed row matrix to form a compressed image, wherein the steps are performed in a processor.