This invention relates to transmitting or storing an undetectable payload in a disguised carrying image and more specifically payload in picture encoding.
Encryption processes such as AES encryption and RSA encryption and the like are widely known and commonly used for protecting a secret in transmission. A secret may be for privacy and the like. Since the message transmitted is encrypted, an unauthorized receiver may not be able to read it. However, although a receiver may not be able to decrypt the message received, the receiver knows that the message is encrypted, since the encrypted message is typically randomized and not human recognizable.
In some instances, an encrypted message may attract unwanted attention and more likely to get blocked or dropped in the transmission. Accordingly, not only an encrypted message is desired, but an encrypted message carried by a disguised media such as a human recognizable picture is also desired. So, the message transmitted looks like an unrelated but human recognizable picture, but actually a secret payload is encoded or embedded in the human recognizable image.
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.
Corresponding reference characters indicate corresponding components throughout the several views of the drawings. Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of various embodiments of the present invention.
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one having ordinary skill in the art that the specific detail need not be employed to practice the present invention. In other instances, well-known materials or methods have not been described in detail in order to avoid obscuring the present invention.
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, method or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, methods or characteristics may be combined in any suitable combinations and/or sub-combinations in one or more embodiments.
Assuming carrying image “Flower” is a monochrome image, and each element has a brightness value from 0 to 255 gray levels. The brightness value is represented by 8 bit binary number. It is appreciated that the present invention is not limited to 8 bit binary number representation, any bit binary representation may be used. Similarly, it is not limited to monochrome carrying image, a color carrying image may be used as well.
If carrying image “Flower” 100 is a color image, each color value, R, G, and B, may be processed the same way as the brightness value is processed. Alternatively, one or two of R, G, and B values may be processed the same way as the brightness value is processed.
The operation of finding the remainder is referred to as the modulo operation, and denoted with “mod” or “%” used as an operator. For example, the remainder of the division of 14 by 12 is denoted by 14 mod 12 or 14%12; as this remainder is 2, we have 14 mod 12=2 or 14%12=2. Note that we also have 26 mod 12=2 or 26%12=2. In the two examples described, the divisor 12 is referred to as the modulus. It may be written
Remainder=Number % Modulus. (1)
The remainder of each brightness value is determined using the modulo operation. Any modulus may be used. For example, modulus 16 is used. The remainders of brightness values shown in
The base of each brightness value is the brightness value subtracted with its remainder. It may be written
Base=Number−Remainder, (2)
where Remainder is given in Equation (1), and Number is the brightness value. The sum of the base and the remainder is the brightness value. The bases of brightness values shown in
Each element of payload 1D serialized array 602 has a payload from 0 to 255, which is represented by 8 bit binary number. For example, element 1 of payload 1D serialized array 602 has a payload 23, element 2 has a payload 67, element 3 has a payload 123, element 4 has a payload 110, and so forth.
Number 23 is represented by 8 bit binary number as shown in Equation (3).
23={0,0,0,1,0,1,1,1}. (3)
Number 67 is represented by 8 bit binary number as shown in Equation (4).
67={0,1,0,0,0,0,1,1}. (4)
Number 123 is represented by 8 bit binary number as shown in Equation (5).
123={0,1,1,1,1,0,1,1}. (5)
Number 23 is represented by 8 bit binary number as shown in Equation (6).
110={0,1,0,1,1,0,1,0}. (6)
Element 1 may be split into two sub-elements, sub-element 1A and sub-element 1 B, as shown in
The split payload of each split sub-element is given below.
Sub-element 1A: {0,0,0,1}=1. (7)
Sub-element 1B: {0,1,1,1}=7. (8)
Sub-element 2A: {0,1,0,0}=4. (9)
Sub-element 2B: {0,0,1,1}=3. (10)
Sub-element 3A: {0,1,1,1}=7. (11)
Sub-element 3B: {1,0,1,1}=11. (12)
Sub-element 4A: {0,1,0,1}=5. (13)
Sub-element 4B: {1,0,1,0}=10. (14)
It is important to notice that a 4 bit binary number represents numbers from 0 to 15, which is smaller than 16 that is the modulus used in this example. The payload represented by binary number is split into multiple pieces of split payloads, the number representing each piece of split payload is smaller than the modulus used. Thus, if the modulus is 16, payload is split into 4 bit binary numbers (0-15)<16. If the modulus is 8, payload is split into 3 bit binary numbers (0-7)<8, if the modulus is 4, payload is split into 2 bit binary numbers (0-3)<4. If the modulus is 2, payload is split into 1 bit binary numbers (0-1)<2. The maximum number of the split binary number is less than the modulus.
The split payload is referred to as per-pixel payload.
Brightness=Base+Per-Pixel Payload. (15)
Thus, sub-element 1A is matched with element or pixel (1,1), sub-element 1B is matched with element or pixel (1,2), sub-element 2A is matched with element or pixel (1,3), and so forth.
Carrying image 1D serialized array 1000, which carries per-pixel payload, may be transmitted to and received by a receiver. The received carrying image 1D serialized array 1000 may be deserialized to return to the original format of an image comprising 2D M×N pixels. In an embodiment, the carrying image 1D serialized array 1000, which carries per-pixel payload, may not be transmitted but stored in a memory device for later retrieval.
Serialization is the process of translating data structures into a 1D array that can be stored or transmitted across a network connection link and reconstructed later in the same computer environment. Deserialization is the reversed process. In deserialization, the serialized 1D array of data is read according to the serialization format to create the original object.
Carrying image 1D serialized array 1000 is deserialized to return to its original format as shown in
Exemplary picture 1100, which is carrying image “Flower” of
The payload encoded or embedded in picture 1100 is, for example, a payload image “Panda” 1200, which is shown in
To unpack the payload embedded in the picture, the remainder of the brightness of the received carrying image 1D serialized array 1000 of
It is appearance that by taking the modulo operation of the brightness of each element of the carrying image 1D serialized array, the per-pixel payload can be retrieved.
Per-Pixel Payload=Brightness % Modulus. (16)
This is true because the per-pixel payload is smaller than the modulus, and the remainders of the original brightness values of the elements of carrying image have been removed. The example given in Table 2 shows that the per-pixel payloads of sub-elements 1A-3A of payload 1D serialized array are retrieved, which are identical to Equations (7)-(11), respectively.
By combining sub-elements 1A and 1B to be element 1, sub-elements 2A and 2B to be element 2, and so forth, the payload represented by 8 bit binary numbers can be reconstructed, which are the same as Equations (3)-(6). Thus the payloads of all elements of payload 1D serialized array 600 of
In an embodiment, the modulus may be 8. Accordingly, the per-pixel payload is a 3 bit binary number. So the per-pixel payload is smaller than 8. Following the example given in
The per-pixel payload of each rearranged sub-element is given below.
Sub-element 1′: {0,0,0}=0. (17)
Sub-element 2′: {1,0,1}=5. (18)
Sub-element 3′: {1,1,0}=6. (19)
Sub-element 4′: {1,0,0}=4. (20)
Sub-element 5′: {0,0,1}=1. (21)
Sub-element 6′: {1,0,1}=5. (22)
Sub-element 7′: {1,1,1}=7. (23)
Sub-element 8′: {0,1,1}=3. (24)
Sub-element 9′: {0,1,0}=2. (25)
Sub-element 10′: {1,1,0}=6. (26)
To pack the payload, the per-pixel payload 1404 of each sub-element 1402 will be added to the base 502 of each element of carrying image 1D serialized array 300 of
To unpack the payload, the modulo operation with the modulus 8 of the brightness of each element is performed. Since the per-pixel payload is smaller than the modulus, and the remainders of the original brightness values of the elements of carrying image have been removed, the per-pixel payload 1400 of
Element 1 may be split into three sub-elements, sub-element 1A, sub-element 1B, and sub-element 1C. Sub-element 1A and sub-element 1B are represented by 3 bit binary numbers. However, sub-element 1C is represented by 2 bit binary number. In this way, the per-pixel payloads of sub-elements 1A, 1B, and 1C are respectively smaller than the modulus 8. Similarly, element 2 may be split into sub-elements 2A, 2B, and 2C, element 3 may be split into sub-elements 3A, 3B, and 3C, element 4 may be split into sub-elements 4A, 4B, and 4C, and so forth.
The per-pixel payload of each split sub-element is given below.
Sub-element 1A: {0,0,0}=0. (27)
Sub-element 1B: {1,0,1}=5. (28)
Sub-element 1C: {1,1}=3. (29)
Sub-element 2A: {0,1,0}=2. (30)
Sub-element 2B: {0,0,0}=0. (31)
Sub-element 2C: {1,1}=3. (32)
Sub-element 3A: {0,1,1}=3. (33)
Sub-element 3B: {1,1,0}=6. (34)
Sub-element 3C: {1,1}=3. (35)
Sub-element 4A: {0,1,0}=2. (36)
Sub-element 4B: {1,1,0}=6. (37)
Sub-element 4C: {1,0}=2. (38)
Sub-element 1A is represented by a 3 bit binary number 1502, sub-element 1B is represented by a 3 bit binary number 1503, sub-element 1C is represented by a 2 bit binary number 1504, sub-element 2A is represented by a 3 bit binary number 1505, sub-element 2B is represented by a 3 bit binary number 1506, sub-element 2C is represented by a 2 bit binary number 1507, sub-element 3A is represented by a 3 bit binary number 1508, sub-element 3B is represented by a 3 bit binary number 1509, sub-element 3C is represented by a 2 bit binary number 1510, sub-element 4A is represented by a 3 bit binary number 1511, sub-element 4B is represented by a 3 bit binary number 1512, sub-element 4C is represented by a 2 bit binary number 1513.
To pack the payload, the per-pixel payload of each sub-element 1A, 1B, 1C, 2A, 2B, and so forth, will be added to the base 502 of each element of carrying image 1D serialized array 300 of
To unpack the payload, the modulo operation of the brightness of each element of the carrying image 1D serialized is performed. Since the per-pixel payload is smaller than the modulus, and the remainders of the original brightness values of the elements of carrying image have been removed, the per-pixel payload 1604 of
Referring back to
A payload, for example, the payload image “Panda” having PB (payload bit) bit brightness value per pixel, can be embedded in a picture, for example, the carrying image “Flower” having the same or different CB (carrying bit) bit brightness value per pixel. First a modulo operation with the modulus M is conducted on brightness values of all pixels of the carrying image “Flower”. The remainder obtained by the modulo operation is removed from the brightness value of the carrying image “Flower”. Thus, brightness values of all pixels of the carrying image “Flower” have no remainders.
The brightness value of the payload image “Panda” is then divided from PB bit into PPB (per-pixel payload) bit per-pixel payloads, PB>PPB. The maximum value of PPB bit per-pixel payload must be smaller than the value of the modulus M. For example, the modulus M=8 is selected, and PB=CB=8. If PPB=3, 8 bit word or brightness value of payload covers 0-255 gray levels, and 3 bit per-pixel payload covers only 0-7 gray levels. When the divided per-pixel payload having 0-7 gray levels is superimposed on the carrying image having 0-255 gray levels, the human eye cannot detect the difference between the original image “Flower” and the image “Flower” embedded with the divided per-pixel payload image “Panda”. A machine, i.e. a computer, also cannot detect whether the image “Flower” is embedded with a payload, for example, the payload image “Panda”, because the machine does not know the original image “Flower”.
To unpack the payload, a modulo operation with the same modulus M is again taken on the pixel brightness values of the carrying image “Flower”. The remainders obtained from the modulo operation are per-pixel payloads. The per-pixel payloads are combined to the brightness value of each pixel of the payload image “Panda”. Thus, the payload image “Panda” can be reconstructed.
The payload may be an image such as the payload image “Panda” in the example given. The payload may be a text message, or any file. Furthermore, the payload may be encrypted before it is embedded in the carrying image. For example, the encryption may be AES encryption or RSA encryption. If the encryption is applied, the image “Panda” may become the encrypted image “Panda”, which may not be image “Panda” any more. The reconstructed encrypted payload is then decrypted to its original form, for example, the image “Panda”. For example, the decryption may be of AES encryption or RSA encryption.
It is appreciated that the transmission in the exemplary operation depicted in
The methods and processes of payload-in-picture-encoding described in the disclosure may be performed by a computer, a mobile phone, and other computing devices. The methods and processes of payload-in-picture-encoding comprise a process packing a payload into a carrying image and a reversed process unpacking the payload from the carrying image.
While the present invention has been described herein with respect to the exemplary embodiments and the best mode for practicing the invention, it will be apparent to one of ordinary skill in the art that many modifications, improvements and sub-combinations of the various embodiments, adaptations and variations can be made to the invention without departing from the spirit and scope thereof. For the disclosed methods and processes, the steps need not necessarily be performed sequentially.
The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims. Rather, the scope is to be determined entirely by the following claims, which are to be construed in accordance with established doctrines of claim interpretation. The present specification and figures are accordingly to be regarded as illustrative rather than restrictive.
This application claims the benefit to U.S. Provisional Application No. 61/995,187, filed Apr. 4, 2014.
Number | Date | Country | |
---|---|---|---|
61995187 | Apr 2014 | US |