Patent ID: 8049930

Claim:
A method for hiding a watermark using halftoning, the method comprising: receiving an original image by a device; performing, by an encoder of the device, a first error diffusion procedure to convert the original image to a first halftone image according to a threshold value and a weight matrix; setting a noise value by the encoder; and performing, by the encoder, a second error diffusion procedure to transform the original image and the watermark into a second halftone image according to the threshold value, the weight matrix, and the noise value, wherein an offset value of a pixel of the second halftone image at coordinate (i, j) is determined according to a pixel value of a pixel of the first halftone image at coordinate (i, j) and a pixel value of the watermark at coordinate (i, j), the second error diffusion procedure adjusts an original error value of the pixel of the second halftone image at coordinate (i, j) to generate an adjusted error value according to the offset value of the pixel of the second halftone image at coordinate (i, j), and the second error diffusion procedure diffuses the adjusted error value to other pixels neighboring the pixel of the second halftone image at coordinate (i, j) according to the weight matrix; wherein a pixel value of the pixel of the second halftone image at coordinate (i, j) is determined to be alternatively equal to one of two pixel values according to the threshold value, the original error value of the pixel of the second halftone image at coordinate (i, j) is equal to a result of subtracting the pixel value of the second halftone image at coordinate (i, j) from a gained value of the second halftone image at coordinate (i, j), the gained value of the second halftone image at coordinate (i, j) is equal to a sum of the offset value of the pixel of the second halftone image at coordinate (i, j) and an input value of the pixel of the second halftone image at coordinate (i, j), and the input value of the pixel of the second halftone image at coordinate (i, j) is determined according to a pixel value of a pixel of the original image at coordinate (i, j) and error values diffused from previously processed pixels of the second halftone image prior to the pixel of the second halftone image at coordinate (i, j).