A method of embedding information comprising a code with at least one bit into an image comprising: dividing the image into a plurality of image blocks; calculating (S105, S106) the size of a region of each of the image blocks, which region will form an embedded block, based on the size of the image block, the embedded block being located at the center of each block; for a given pair of embedded blocks, determining a density relationship between average density data of one of the embedded blocks and average density data of the other embedded block, in order to obtain a bit determination result; comparing a given bit of said code with said bit determination result to obtain a comparison result, wherein if the comparison result indicates that the given bit of said code does not match the bit determination result, a modification step is performed in which the average density data of the blocks corresponding to said pair of embedded blocks are modified by a density converting process in which the average density data of said one of the embedded blocks is increased and the average density data of said other embedded block is decreased, or the average density data of said one of the embedded blocks is decreased and the average density data of said other embedded block is increased, so as to inverse the density relationship such that the given bit of said code matches the bit determination result; and wherein, in the case where each of the image blocks is not smaller than the predetermined size, the modification step involves modifying the average density data of a selected region of the image blocks corresponding to said pair of embedded blocks, the size of said selected region being based on the size of the embedded blocks, characterised in that the size of the region of each of the image blocks is calculated such that i) each of the embedded blocks is calculated to be the same size as each of the image blocks when each of the image blocks is smaller than a predetermined size, or ii) each of the embedded blocks is calculated to be the predetermined size when each of the image blocks is not smaller than the predetermined size. dividing the image into a plurality of image blocks; calculating (S105, S106) the size of a region of each of the image blocks, which region will form an embedded block, based on the size of the image block, the embedded block being located at the center of each block; for a given pair of embedded blocks, determining a density relationship between average density data of one of the embedded blocks and average density data of the other embedded block, in order to obtain a bit determination result; comparing a given bit of said code with said bit determination result to obtain a comparison result, wherein if the comparison result indicates that the given bit of said code does not match the bit determination result, a modification step is performed in which the average density data of the blocks corresponding to said pair of embedded blocks are modified by a density converting process in which the average density data of said one of the embedded blocks is increased and the average density data of said other embedded block is decreased, or the average density data of said one of the embedded blocks is decreased and the average density data of said other embedded block is increased, so as to inverse the density relationship such that the given bit of said code matches the bit determination result; and wherein, in the case where each of the image blocks is not smaller than the predetermined size, the modification step involves modifying the average density data of a selected region of the image blocks corresponding to said pair of embedded blocks, the size of said selected region being based on the size of the embedded blocks, characterised in that the size of the region of each of the image blocks is calculated such that i) each of the embedded blocks is calculated to be the same size as each of the image blocks when each of the image blocks is smaller than a predetermined size, or ii) each of the embedded blocks is calculated to be the predetermined size when each of the image blocks is not smaller than the predetermined size.