A method of producing a printed image comprising digital information embedded in a digital cover image, the method comprising: obtaining a frequency domain representation of said digital cover image, said frequency domain representation comprising a plurality of frequency domain components; partitioning said frequency domain representation of the digital cover image into blocks, each block comprising a two-dimensional array of said frequency components; selecting a sub-set of said frequency components for each block, the respective sub-set comprising a plurality of said frequency components of the respective block; embedding a respective bit of said digital information in a respective one of said sub-sets by changing the polarity of the value of at least one of the respective frequency coefficients in the respective sub-set to create a respective modified block; obtaining, using said respective modified blocks, a spatial domain representation of said digital cover image in which said digital information is embedded; and printing said spatial domain representation of said digital cover image on a printable medium, wherein said obtaining a frequency domain representation of said digital cover image involves applying a one-level Haar Discrete Wavelet Transformation, DWT, to a spatial domain representation of the cover image, wherein obtaining a frequency domain representation of said digital cover image further involves applying a Discrete Hadamard Transform, DHT, to frequency coefficients produced by said DWT to produce said frequency domain components, and wherein said polarity changing involves changing the polarity of the value of one or more of the respective frequency coefficients in the respective sub-set such that the total number of positive values in the sub-set or the total number of negative values in the sub-set satisfies a respective threshold depending on the value of the bit being embedded, the method further comprising determining said threshold value by statistical analysis of the values of the respective frequency coefficients from the respective sub-sets of all of the blocks. obtaining a frequency domain representation of said digital cover image, said frequency domain representation comprising a plurality of frequency domain components; partitioning said frequency domain representation of the digital cover image into blocks, each block comprising a two-dimensional array of said frequency components; selecting a sub-set of said frequency components for each block, the respective sub-set comprising a plurality of said frequency components of the respective block; embedding a respective bit of said digital information in a respective one of said sub-sets by changing the polarity of the value of at least one of the respective frequency coefficients in the respective sub-set to create a respective modified block; obtaining, using said respective modified blocks, a spatial domain representation of said digital cover image in which said digital information is embedded; and printing said spatial domain representation of said digital cover image on a printable medium, wherein said obtaining a frequency domain representation of said digital cover image involves applying a one-level Haar Discrete Wavelet Transformation, DWT, to a spatial domain representation of the cover image, wherein obtaining a frequency domain representation of said digital cover image further involves applying a Discrete Hadamard Transform, DHT, to frequency coefficients produced by said DWT to produce said frequency domain components, and wherein said polarity changing involves changing the polarity of the value of one or more of the respective frequency coefficients in the respective sub-set such that the total number of positive values in the sub-set or the total number of negative values in the sub-set satisfies a respective threshold depending on the value of the bit being embedded, the method further comprising determining said threshold value by statistical analysis of the values of the respective frequency coefficients from the respective sub-sets of all of the blocks.