# Patent

## Title
Method for coding data

## Abstract

A method for coding data includes: representing a first data in digital form as digital information; transforming the digital information into a first Gaussian integer; determining a relationship between the first Gaussian integer and a second Gaussian integer; and deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer. The present invention also provides a system and a non-transient computer readable medium for implementing the method.

## Background
TECHNICAL FIELD
The present invention relates to a method for coding data and particularly, although not exclusively, to a method for coding multimedia information using complex number basis.
BACKGROUND
Computer systems are usually stored with different types of basic information, such as text, graphics (images, video), and sound. These different types of basic information are generally represented by codes. In computer science, the representation of information can be considered as coding of information data.
Coding can allow various information be represented using a simple combination of symbols. In information coding, the two key elements are symbol type and combination rules.
SUMMARY OF THE INVENTION
In accordance with a first aspect of the present invention, there is provided a method for coding data, comprising: representing a first data in digital form as digital information; transforming the digital information into a first Gaussian integer; determining a relationship between the first Gaussian integer and a second Gaussian integer; and deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer.
In one embodiment of the first aspect, the method further comprises converting the first data to the second data,
In one embodiment of the first aspect, the method further comprises representing the first data using the second data represented by the second Gaussian integer so as to hide at least some of the first data.
In one embodiment of the first aspect, the relationship is a geometric relationship.
In one embodiment of the first aspect, the digital information is represented in one of: binary basis, octal basis, decimal basis, or hexadecimal basis.
In one embodiment of the first aspect, the transformation of the digital information into a Gaussian integer is based on complex number basis using complex numbers.
In one embodiment of the first aspect, the complex number basis has a base of −1+i or −1−i.
In one embodiment of the first aspect, the key is a third Gaussian integer.
In one embodiment of the first aspect, the first data and the second data each comprises text, image, or audio.
In one embodiment of the first aspect, the image is a binary image; and the step of representing the first data in digital form as digital information comprises representing each pixel of the binary image using binary numbers.
In one embodiment of the first aspect, the image is a greyscale image; and the step of representing the first data in digital form as digital information comprises representing each pixel of the greyscale image using binary numbers.
In one embodiment of the first aspect, the image is a colour image; and the step of representing the first data in digital form as digital information comprises decomposing each pixel of the colour image into at least two separate colour components, and representing the at least two separate colour components of each pixel using binary numbers.
In one embodiment of the first aspect, the first data is text that comprises at least one of: a Chinese character, an English alphabet, a number, and a graphical symbol.
In one embodiment of the first aspect, the text is a Chinese character; and the step of representing the first data in digital form as digital information comprises representing the Chinese character using internal code with hexadecimal basis.
In one embodiment of the first aspect, the text is an English alphabet, a number, or a graphical symbol; and the step of representing the first data in digital form as digital information comprises representing the English alphabet, the number, or the graphical symbol using an ASCII code with binary basis.
In one embodiment of the first aspect, the audio is a digitized audio signal represented in voltage value; and the step of representing the first data in digital form as digital information comprises representing the digitized audio signal in a binary sequence using SQL code.
In one embodiment of the first aspect, the first data represented by the first Gaussian integer and the second data represented by the second Gaussian integer are of the same type.
In accordance with a second aspect of the present invention, there is provided a system for coding data, comprising one or more processors arranged to: represent a first data in digital form as digital information; transform the digital information into a first Gaussian integer; determine a relationship between the first Gaussian integer and a second Gaussian integer; and derive, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer.
In one embodiment of the second aspect, the first data and the second data each comprises text, image, or audio.
In one embodiment of the second aspect, the system further comprises a display for displaying text or image.
In one embodiment of the second aspect, the system further comprises a speaker for playing audio signals.
In accordance with a third aspect of the present invention, there is provided a non-transient computer readable medium for storing computer instructions that, when executed by one or more processors, causes the one or more processors to perform a method for coding data, the method comprising: representing a first data in digital form as digital information; transforming the digital information into a first Gaussian integer; determining a relationship between the first Gaussian integer and a second Gaussian integer; and deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer.



BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments of the present invention will now be described, by way of example, with reference to the accompanying drawings in which:
FIG. 1 is a flow diagram showing the data coding method in accordance with one embodiment of the present invention;
FIG. 2A is a functional block diagram of an information handling system for implementing the method of FIG. 1 in accordance with one embodiment of the present invention;
FIG. 2B illustrates two exemplary information handling systems adapted to implement the method of FIG. 1 in accordance with one embodiment of the present invention;
FIG. 3 is a graph illustrating sampling and quantization of an audio signal;
FIG. 4 is an illustration of six different linearization methods (a) to (f) for processing images based on the method in one embodiment of the present invention;
FIG. 5 is an illustration of pixel blocks of a grayscale image, before (left) and after (right) conversion;
FIG. 6 is an illustration of hiding of data based on the method in one embodiment of the present invention;
FIG. 7 shows some exemplary texts that can be coded using the method in one embodiment of the present invention;
FIG. 8 is a plot showing a waveform of an audio signal containing public audio information;
FIG. 9 is shows a plot showing a waveform of an audio signal containing private audio information;
FIG. 10A shows a greyscale image in public domain;
FIG. 10B shows a greyscale image in private domain, corresponding to the public greyscale image of FIG. 10A;
FIG. 11A shows the image of FIG. 10A overlaid with a pixel grid;
FIG. 11B shows the image of FIG. 10B overlaid with a pixel grid;
FIG. 12A shows a colour image in public domain;
FIG. 12B shows a colour image in private domain, corresponding to the public color image of FIG. 12A;
FIG. 13A shows the image of FIG. 12A overlaid with a pixel grid;
FIG. 13B shows the image of FIG. 12B overlaid with a pixel grid;
FIG. 14A shows the image of FIG. 13A with only one colour component;
FIG. 14B shows the image of FIG. 13B with only one colour component;
FIG. 15 shows a greyscale image in private domain; and
FIGS. 16A, 16B, 16C, and 16D show four greyscale images in public domain, the four greyscale images correspond to the image in FIG. 15.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
FIG. 1 illustrates a method 100 for coding data in accordance with one embodiment of the present invention. The method 100 begins in step 102, in which the first data is represented in digital form as digital information. The digital information is preferably represented in one of: binary basis, octal basis, decimal basis, or hexadecimal basis. Then, in step 104, the digital information is transformed into a first Gaussian integer. The transformation is preferably based on complex number basis using complex numbers. In a preferred embodiment, the complex number basis has a base of −1+i or −1−i. In step 106, a relationship between the first Gaussian integer and a second Gaussian integer is determined. Preferably, the relationship is a geometric relationship which involves at least one of addition, subtraction, multiplication, and division. Subsequently, in step 108, a key for converting between the first Gaussian integer and the second Gaussian integer is determined based on the determined relationship. The key is preferably also a Gaussian integer. By performing method 100, the first data can be associated with a second data represented by the second Gaussian integer.
In some embodiments, the method 100 may further comprise the step of converting the first data to the second data. In some embodiments, the method 100 may further comprise the step of representing the first data using the second data represented by the second Gaussian integer so as to hide at least some of the first data. In one embodiment, the first data is private data belonging in a private domain, and the second data is public data belong in a public domain.
The first data and the second data may each comprise image, text, or audio. The image may be a binary image, a greyscale image, a colour image, a 2D image, a 3D image, etc. The image may comprise of multiple smaller images. The text may comprise at least one of: a Chinese character, an English alphabet, a number, and a graphical symbol. The audio may be a digitized audio signal. Preferably, the first data represented by the first Gaussian integer and the second data represented by the second Gaussian integer are preferably of the same type.
Referring to FIG. 2A, there is shown a schematic diagram of an exemplary information handling system 200 that can be used for implementing the method 100 in one embodiment of the present invention. The information handling system 200 can have different configurations, and it generally comprises suitable components necessary to receive, store and execute appropriate computer instructions or codes. The main components of the information handling system 200 are a processing unit 202 and a memory unit 204. The processing unit 202 is a processor such as a CPU, an MCU, etc. The memory unit 204 may include a volatile memory unit (such as RAM), a non-volatile unit (such as ROM, EPROM, EEPROM and flash memory) or both. Preferably, the information handling system 200 further includes one or more input devices 206 such as a keyboard, a mouse, a stylus, a microphone, a tactile input device (e.g., touch sensitive screen) and a video input device (e.g., camera). The information handling system 200 may further include one or more output devices 208 such as one or more displays, speakers, disk drives, and printers. The displays may be a liquid crystal display, a light emitting display or any other suitable display that may or may not be touch sensitive. The information handling system 200 may further include one or more disk drives 212 which may encompass solid state drives, hard disk drives, optical drives and/or magnetic tape drives. A suitable operating system may be installed in the information handling system 200, e.g., on the disk drive 212 or in the memory unit 204 of the information handling system 200. The memory unit 204 and the disk drive 212 may be operated by the processing unit 202. The information handling system 200 also preferably includes a communication module 210 for establishing one or more communication links (not shown) with one or more other computing devices such as a server, personal computers, terminals, wireless or handheld computing devices. The communication module 210 may be a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transceiver, an optical port, an infrared port, a USB connection, or other interfaces. The communication links may be wired or wireless for communicating commands, instructions, information and/or data. Preferably, the processing unit 202, the memory unit 204, and optionally the input devices 206, the output devices 208, the communication module 210 and the disk drives 212 are connected with each other through a bus, a Peripheral Component Interconnect (PCI) such as PCI Express, a Universal Serial Bus (USB), and/or an optical bus structure. In one embodiment, some of these components may be connected through a network such as the Internet or a cloud computing network. A person skilled in the art would appreciate that the information handling system 200 shown in FIG. 2A is merely exemplary and that different information handling system s 200 may have different configurations and still be applicable in the present invention.
FIG. 2B shows two exemplary information handling systems, one in the form of a tablet computer 200A, and one in the form of a desktop computer 200B.
The following description provides a detailed disclosure and illustration on the data coding method in accordance with a preferred embodiment of the present invention.
I. Positional Number System
In a positional number system, a set of numerical symbols or characters is used to represent numbers or values. Usually, an ideal notation can be used to describe a set of numbers effectively. Examples of these notations include natural number, integer, real number, complex number and rational number, each of which corresponds to a unique representation. On the other hand, positional notation, basis notation, and place-value notation are used for representation and coding of numbers. These notations are based on the basis and the limited set of digital symbols respectively. One well-known system is the integer basis, which uses ‘a’ (aε0, 1, 2, . . . ) numerical symbols to represent numbers. In general, a basis ‘a’ numeral system has a basis ‘a’. One example is the decimal system which has a basis of ten. It uses ten numerical symbols: 0-9, and the basic numerical symbol set is {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Another example is the binary numeral system which has a basis of two. Its basic numerical symbol set is {0, 1}. Further examples include the octal system and the hexadecimal system, and their basic numerical symbol sets contain {0, 1, 2, 3, 4, 5, 6, 7} and {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} respectively.
Each numerical symbol has a unique counting unit, and is associated with a weight that is dependent on its position in the number sequence. The weight for each position is expressed as the power of the basis. In the decimal system, the weight of the ‘units’ position is 100, the weight of the ‘tens’ position is 101, etc. In the fractional part, the weights are 10−1, 10−2, etc., progressing from left to right after the decimal place. In the binary system, the weight of the second position is 2, the weight of the third position is 22, the weight of the fourth position is 23, etc.
Generally, in a basis ‘a’ numeral system, the weight of the i-th position in the non-fractional part is ai−1 and the weight of the i-th position in the fractional part is a−i. Thus, numbers in a basis ‘a’ system can be represented as:




  
    
      
        
          
            (
            
              
                e
                n
              
              ⁢
              
                e
                
                  n
                  -
                  1
                
              
              ⁢
              ...
              ⁢
              
                
              
              ⁢
              
                e
                1
              
              ⁢
              
                
                  e
                  0
                
                ·
                
                  f
                  0
                
              
              ⁢
              
                f
                1
              
              ⁢
              ...
            
            )
          
          a
        
        =
        
          
            
              ∑
              
                k
                =
                0
              
              n
            
            ⁢
            
              
                e
                n
              
              ⁢
              
                a
                k
              
            
          
          +
          
            
              ∑
              
                k
                =
                1
              
              ∞
            
            ⁢
            
              
                f
                n
              
              ⁢
              
                a
                
                  -
                  k
                
              
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




where the numbers ak and a−k are the weights of the corresponding digits.

In the decimal system, every non-negative integer N has a unique decimal representation of:

N=np×10p+np−1×10p−1+ . . . +n1×101+n0×100  (2)

where nkεS={0, 1, 2, . . . , 9}, k=0, 1, 2, . . . , p.

And in simplified form, it can be represented as:

N=(npnp−1np−2 . . . n1n0)10  (3)

In the binary system, the arbitrary non-negative integer N has a general form of:

N=np×2p+np−1×2p−1+ . . . +n1×21+n0λ20  (4)

where nkεS={0, 1} and k=0, 1, 2, . . . , p.

And in simplified form, it can be represented as:

N=(npnp−1np−2 . . . n1n0)2  (5)

The general form of an arbitrary non-negative integer N when using the letters a as basis can be expressed as:

N=np×ap+np−1×ap−1+ . . . +n1×a1+n0×a0  (6)

In one embodiment, any positive integer can be used as basis. In fact, r0εS={0, 1, 2, . . . , a−1} and non-negative integer N1 can be found for any non-negative integers N, and N=N1a+r0. If the minimum numeral symbol set (S={0, 1, 2, . . . , a−1}) has this nature, it is called complete residue system modulo ‘a’. Further, r1εS={1, 2, . . . , a−1} and non-negative integer N2 can be found, and N1=N2a+r1. After limited steps, rkεS={1, 2, . . . , a−1} and rk−1εS={1, 2, . . . , a−1} can be obtained, and Nk−1=Nka+rk−1, Nk=Nk+1a+rk. If Nk<a, then Nk+1=0. Subsequently, the following equation can be obtained:

N=rk×ak+rk−1×ak−1+ . . . +r1×a1+r0×a0  (7)

And in simplified form, it can be represented as:

N=(rkrk−1rk−2 . . . r1r0)a  (8)

The above provides a general overview of a basis ‘a’ numeral system. A person skilled in the art would appreciate that when a equals to two, the system is binary; when a equals to four, the system is quaternary; when a equals to five, the system is quinary, etc.
II. Complex Number Coding
Various embodiments of the present invention relate to complex number coding, in which the concept of basis is applied to complex numbers. If x and y are real numbers, then z=x+iy is the Gaussian integer, where i is the imaginary unit with i2=−1. In the following, letter b is used to represent complex number basis. According to the positional number system, the Gaussian integer can be written as Z=Σj=0krjbj, where k=0, 1, 2, . . . , and Z can be represented using basis ‘b’. In the Z representation, if all allowed rj are the complete residue system modulo ‘b’, then the standard Algorithm of representation number based on the integer basis can be extended to the complex number basis.
In the complex number basis of one embodiment, all of the Gaussian integers can be represented when b=−n+i and b=−n−i (where n is positive integer). If all complex numbers can be represented by a basis then this basis is called an appropriate basis. Examples of this appropriate basis include b=−1+i and b=−1−i. Otherwise, the basis is called an inappropriate basis. Examples of this inappropriate basis include b=1−i and b=1+i.
When operating with Gaussian integers U0+iV0, it is necessary to consider the type of complex number basis (b=ξ+iη, where ξ and η are non-zero integer) that is available. Gauss has proven in early times that, if ξ and η are co-prime, then S={0, 1, 2, . . . , ξ2+η2−1} is the complete residue system modulo ‘b=ξ+iη’. Otherwise, if ξ and η share common factors, then the common factors are divided into both ξ and η. Effectively, the complete residue system modulo ‘b=ξ+iη’ must contain a number, and the imaginary part of the number is non-zero. In order to represent Gaussian integers based on complex number basis as much as possible, it is preferred that η=±1 as η divides into the imaginary part of ‘b’ basis's power (ξ+iη)j. In another example, basis b=ξ±i, and the numeral symbol set S={0, 1, 2, . . . , ξ2}.
Considering S={0, 1} then ξ=±1 and η=±1. Preferably, only four complex number basis b are considered: 1+i, 1−i, −1+i and −1−i. In these four complex number basis, −1+i and −1−i are appropriate basis and they are conjugate with each other. 1+i and 1−i are not appropriate basis.
In the following description, b=−1+i is selected as the complex number basis. This selection is based on the characteristics of digital computer and it allows all complex numbers to be represented. However, in other embodiments other complex number basis b can be used. Preferably, any Gaussian integers ‘N’ can be represented as follows:




  
    
      
        N
        =
        
          
            
              ∑
              
                j
                =
                0
              
              k
            
            ⁢
            
              
                r
                j
              
              ⁢
              
                b
                j
              
            
          
          =
          
            
              (
              
                
                  r
                  k
                
                ⁢
                
                  r
                  
                    k
                    -
                    1
                  
                
                ⁢
                
                  r
                  
                    k
                    -
                    2
                  
                
                ⁢
                ...
                ⁢
                
                  
                
                ⁢
                
                  r
                  1
                
                ⁢
                
                  r
                  0
                
              
              )
            
            b
          
        
      
    
    
      
        (
        9
        )
      
    
  




where rjεS={0, 1}, j=0, 1, 2, . . . , k.

A number based on basis(1) can be converted to Gaussian integer based on basis(3)=−1+i. A detailed conversion Algorithm is illustrated in Algorithm 1.










Algorithm 1 Conversion of different


positional notations algorithm
















1:
A is the original number


2:
B is the converted number


3:
basis(1) is the basis of original number


4:
basis(2) = 2


5:
basis(3) = −1 + i


6:
function CONVERT(A to B)


7:
 for i = 0 and A[i] ≠′ \0′ and i + + do


8:
  in A[i] >′ 0′ and A[i] <′ 9′ then


9:
   j = A[i] −′ 0′


10:
  else


11:
   j = A[i] −′ A′ + 10


12:
  end if


13:
  number = number * basis(1) + t


14:
 end for


15:
end function


16:
function number( )


17:
 t = number % basis(2)


18:
 if t  0 and t   9 then


19:
  B[i + +] = t +′ 0′


20:
 else


21:
  B[i + +] = t +′ A′ − 10


22:
 end if


23:
 number = number/basis(2); 


24:
end function


25: 
function Gaussian integer(N)


26:
 (rkrk−1rk−2 . . . r1r0)2 = B


27:
 for j = 0 and j   k and j + + do


28:
  N = Σj=0k rjbasis(3)j


29:
 end for


30:
end function





A conversion between binary, decimal, and complex number basis b = −1 + i is shown in Table I.













TABLE I







Conversion of the positional number system









Decimal
Binary
basis: b = −1 + i












0
0
0


1
1
1


2
10
−1 + i


3
11
i


4
100
−2i


5
101
1 − 2i


6
110
−1 − i


7
111
−i


8
1000
2 + 2i


9
1001
3 + 2i


10
1010
1 + 3i


11
1011
2 + 3i


12
1100
2


13
1101
3


14
1110
1 + i


15
1111
2 + i


. . . 
. . . 
. . .









III. Digital Conversion Algorithm Based on Complex Number Basis

A. Gaussian Integer to Digital Information

A Gaussian integer is a complex number where its real and imaginary parts are both non-zero integers. Preferably, Gaussian integer may be used to represent digital information with complex number basis (b=ξ+iη), where ξ=±1 and η=±1. Let Gaussian integer be U0+iV0, then its 0 ̃1 sequence is (enen−1 . . . e1e0). In order to determine {ej}, j=0, 1, . . . , n, let U0+iV0 be:

U0+iV0=en×bn+en−1×bn−1+ . . . +e1×b1+e0×b0)  (10)

Applying a recursive calculation method, equation (10) can be rewritten as follows:

U0+iV0=(ξ+iη)(U1+iV1)+e0 

=ξU1−ηV1+(ηU1+ξV1)i+e0  (11)

where e0εS={0, 1}, j=0, 1, 2, . . . , n.

Then

U0=ξU1−ηV1+e0 

Q0=ηU1+ξV1 

and hence





  
    (
    
      
        
          
            U
            
              k
              +
              1
            
          
        
      
      
        
          
            V
            
              k
              +
              1
            
          
        
      
    
    )
  
  =
  
    
      (
      
        
          
            ξ
          
          
            η
          
          
            
              -
              ξ
            
          
        
        
          
            
              -
              η
            
          
          
            ξ
          
          
            η
          
        
      
      )
    
    ⁢
    
      (
      
        
          
            
              
                U
                k
              
              2
            
          
        
        
          
            
              
                V
                k
              
              2
            
          
        
        
          
            
              
                e
                k
              
              2
            
          
        
      
      )
    
  




Preferably, the recursion formula can be expressed as follows:




  
    
      
        
          
            U
            
              k
              +
              1
            
          
          =
          
            
              
                ξ
                ⁢
                
                  
                
                ⁢
                
                  U
                  k
                
              
              +
              
                η
                ⁢
                
                  
                
                ⁢
                
                  V
                  k
                
              
              -
              
                ξ
                ⁢
                
                  
                
                ⁢
                
                  e
                  0
                
              
            
            2
          
        
        ⁢
        
          

        
        ⁢
        
          
            V
            
              k
              +
              1
            
          
          =
          
            
              
                
                  -
                  ξ
                
                ⁢
                
                  
                
                ⁢
                
                  U
                  k
                
              
              -
              
                η
                ⁢
                
                  
                
                ⁢
                
                  V
                  k
                
              
              +
              
                ξ
                ⁢
                
                  
                
                ⁢
                
                  e
                  0
                
              
            
            2
          
        
      
    
    
      
        (
        12
        )
      
    
  




where k=0, 1, 2, . . . .

In one example if the parity of Uk and Vk are same, then ek=0, otherwise ek=1. When Uk=0 and Vk=0, the recursive counting is stopped. The result is enen−1en−2 . . . e1e0. When giving a Gaussian integer (U0+iV0), its 0 ̃1 sequence based on corresponding basis ‘b’ can be obtained using equation (12).
Equation (13) is the recursion formula when b=−1+i is used as the complex number basis.




  
    
      
        
          
            U
            
              k
              +
              1
            
          
          =
          
            
              
                U
                k
              
              -
              
                V
                k
              
              +
              
                e
                0
              
            
            2
          
        
        ⁢
        
          

        
        ⁢
        
          
            V
            
              k
              +
              1
            
          
          =
          
            
              
                -
                
                  U
                  k
                
              
              -
              
                V
                k
              
              +
              
                e
                0
              
            
            2
          
        
      
    
    
      
        (
        13
        )
      
    
  




where k=0, 1, 2, . . . , ek=|(Uk−Vk)mod 2|.

It should be noted that equation (13) is obtained from basis ‘b=−1+i’. In other embodiments where other basis is used, the recursive equation will be changed accordingly.
An Algorithm for converting from Gaussian integer to digital information is shown in Algorithm 2.










Algorithm 2 Gaussian integer to


digital information algorithm
















1:
Gaussian integer = U0 + iV0 


2:
basis b = −1 + i


3: 
function


4:
 for k = 0 and   n and k + + do


5:
  Uk+1 = (Vk − Uk + ek)/2


6:
  Vk+1 = (−Vk + Uk + ek)/2 


7:
  ek = |(Uk − vk) mod 2|


8:
 end for


9:
 0~1 sequence is enen−1 . . . e1e0   


10:
end function









B. Digital Information to Gaussian Integer

If the 0 ̃1 sequence (enen−1en−2 . . . e1e0) of a digital information based on the complex number basis (b=ξ+iη), where ξ=±1, η=±1 is known, then the Gaussian integers can be calculated. In one embodiment, the Gaussian integers calculation process is as follows:
Let (ξ+iη)k=rk+isk, where k=0, then r0=1, s0=0. Then, construct the recursion formula by the following:
Let

(ξ+iη)k=(ξ+iη)(rk−1+isk−1)

=ξrk−1−ηsk−1+i(ηrk−1+ξsk−1)  (14)

Then,

rk=ξrk−1−ηsk−1 

sk=ηrk−1+ξsk−1  (15)

Thus,




  
    (
    
      
        
          
            r
            
              k
              +
              1
            
          
        
      
      
        
          
            s
            
              k
              +
              1
            
          
        
      
    
    )
  
  =
  
    
      (
      
        
          
            ξ
          
          
            
              -
              η
            
          
        
        
          
            η
          
          
            ξ
          
        
      
      )
    
    ⁢
    
      (
      
        
          
            
              r
              k
            
          
        
        
          
            
              s
              k
            
          
        
      
      )
    
  




Equation (16) can be obtained from equation (15) when b=−1+i is used as the complex number basis.

rk=−rk−1−sk−1 

sk=rk−1−sk−1  (16)

From




  
    
      
        
          
            U
            0
          
          +
          
            iV
            0
          
        
        =
        
        ⁢
        
          
            
              e
              n
            
            ×
            
              b
              n
            
          
          +
          
            
              e
              
                n
                -
                1
              
            
            ×
            
              b
              
                n
                -
                1
              
            
          
          +
          ...
          +
        
      
    
  
  
    
      
        
        ⁢
        
          
            
              e
              1
            
            ×
            
              b
              1
            
          
          +
          
            
              e
              0
            
            ×
            
              b
              0
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              e
              n
            
            ×
            
              
                (
                
                  ξ
                  +
                  
                    i
                    ⁢
                    
                      
                    
                    ⁢
                    η
                  
                
                )
              
              n
            
          
          +
          
            
              e
              
                n
                -
                1
              
            
            ×
            
              
                (
                
                  ξ
                  +
                  
                    i
                    ⁢
                    
                      
                    
                    ⁢
                    η
                  
                
                )
              
              
                n
                -
                1
              
            
          
          +
          ...
          +
        
      
    
  
  
    
      
        
        ⁢
        
          
            
              e
              1
            
            ×
            
              
                (
                
                  ξ
                  +
                  
                    i
                    ⁢
                    
                      
                    
                    ⁢
                    η
                  
                
                )
              
              1
            
          
          +
          
            
              e
              0
            
            ×
            
              
                (
                
                  ξ
                  +
                  
                    i
                    ⁢
                    
                      
                    
                    ⁢
                    η
                  
                
                )
              
              0
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              e
              n
            
            ⁡
            
              (
              
                
                  r
                  n
                
                +
                
                  is
                  n
                
              
              )
            
          
          +
          
            
              e
              
                n
                -
                1
              
            
            ⁡
            
              (
              
                
                  r
                  
                    n
                    -
                    1
                  
                
                +
                
                  is
                  
                    n
                    -
                    1
                  
                
              
              )
            
          
          +
          ...
          +
        
      
    
  
  
    
      
        
        ⁢
        
          
            
              e
              1
            
            ⁡
            
              (
              
                
                  r
                  1
                
                +
                
                  is
                  1
                
              
              )
            
          
          +
          
            e
            0
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              e
              n
            
            ⁢
            
              r
              n
            
          
          +
          
            
              e
              
                n
                -
                1
              
            
            ⁢
            
              r
              
                n
                -
                1
              
            
          
          +
          ...
          +
          
            
              e
              1
            
            ⁢
            
              r
              1
            
          
          +
          
            e
            0
          
          +
        
      
    
  
  
    
      
        
        ⁢
        
          i
          ⁡
          
            (
            
              
                
                  e
                  n
                
                ⁢
                
                  s
                  n
                
              
              +
              
                
                  e
                  
                    n
                    -
                    1
                  
                
                ⁢
                
                  s
                  
                    n
                    -
                    1
                  
                
              
              +
              ...
              +
              
                
                  e
                  1
                
                ⁢
                
                  s
                  1
                
              
            
            )
          
        
      
    
  




The following equation is then obtained,




  
    
      
        
          
            U
            0
          
          =
          
            
              ∑
              
                j
                =
                0
              
              n
            
            ⁢
            
              
                e
                j
              
              ⁢
              
                r
                j
              
            
          
        
        ⁢
        
          

        
        ⁢
        
          
            V
            0
          
          =
          
            
              ∑
              
                j
                =
                1
              
              n
            
            ⁢
            
              
                e
                j
              
              ⁢
              
                s
                j
              
            
          
        
      
    
    
      
        (
        17
        )
      
    
  




Accordingly, U0+iV0 is the Gaussian integer of this 0 ̃1 sequence based on the complex number basis ‘b=ξ+iη’. In other words, the corresponding spot on the complex number plane for any given 0 ̃1 sequences can be found.
It can be seen from the above example that any 0 ̃1 sequences of digital information can be converted to a point on the complex number plane using equations (15) and (17). Conversely, any corresponding spot of Gaussian integers on the complex number plane can be converted to a 0 ̃1 sequence using equation (12).
An Algorithm for converting from digital information to Gaussian integer is shown in Algorithm 3.










Algorithm 3 Digital information 


to Gaussian integer
















1:
0~1 sequence = enen−1 . . . e1e0 


2:
basis b = −1 + i


3:
r0 = 1


4:
s0 = 0


5:
function


6:
 for k =1 and k   n and k + + do


7:
  rk = −rk−1 − sk−1


8:
  sk = rk−1 − sk−1


9:
 end for


10:
 for k = 0 and k   n and k + + do


11:
  U0 = Σk=0n ekrk


12:
 end for


13:
 for k = 1 and k   n and k + + do


14:
  V0 = Σk=1n eksk


15:
 end for


16:
 Gaussian integer is U0 + iV0 


17: 
end function









IV. Representation of Multimedia Information Based on Complex Number Basis

The method in the present embodiment relates to the projection of multimedia information (such as text, audio, and images) to a complex plane based on a selected complex number basis. Without loss of generality, the present embodiment uses ‘b=−1+i’ as the complex number basis and S={0, 1} as the numeral symbol set. A person skilled in the art would appreciate that, in some embodiments, other complex number basis and numeral symbol set may be used.
By converting digital information data to a point on the complex plane, the relationship between different digital information data can be considered as problem of plane geometry. After all, this projection is the projection of the 0 ̃1 sequence to the corresponding mapped point on the complex plane. The data coding method in the present embodiment is thus applicable for different digital information including text, audio, images, videos, etc.
A. Text Information Based on Complex Number Basis
Computers usually store and operate with binary numbers: 0, 1. Texts (such as English alphabet, Chinese characters) that are used for communication cannot be stored in a computer directly. In order to solve the problem of storing texts in computer, the words in the text must be digitized, i.e., the words must be coded.
The following description uses Chinese characters and English alphabets as an example for illustration. A person skilled in the art would appreciate that other text, language, symbols, etc., are also applicable to the method in the present invention.
For Chinese characters, three types of coding are generally used on the computer. The first type is input code (Chinese characters outer code), which contains a set of western keyboard symbols (letters, numbers and special symbols). The second type is internal code (NeiMa), which is used to store, handle, and process Chinese characters in the computer. The third type is output code (character code), which is used to output Chinese characters. The operation result of binary coding of information needs to be converted by the character code before outputting on the output device. In the present embodiment, the internal code is used to represent the Chinese character on the complex plane. For example, the internal code of Chinese character ‘’ is ‘D6D0’, the internal code of Chinese character ‘’ is ‘BFC6’. In the present embodiment, the internal code can be represented as a corresponding 0 ̃1 sequence.
For English alphabet, there is a relative wider range of information, including 26 alphabetic characters, 10 numerical digits, and from 11 to 25 special graphic symbols. Preferably, these can be indicated using ASCII code. Generally, ASCII codes 128 specified characters into eight-bit integers, and usually the highest bit (parity bit) is set to 0. For example, the ASCII code of letter ‘A’ is ‘01000001’, the ASCII code of number ‘9’ is ‘00111001’, and the ASCII code of symbol ‘!’ is ‘00100001’.
The ASCII code of symbol ‘!’ is 01000001. In this example, the corresponding real part and the corresponding imaginary part can be calculated using the method described in Section II. The result is that



  
    
      U
      0
    
    =
    
      
        〈
        
          e
          ,
          r
        
        〉
      
      =
      
        
          
            ∑
            
              j
              =
              0
            
            n
          
          ⁢
          
            
              e
              j
            
            ⁢
            
              r
              j
            
          
        
        =
        5
      
    
  




  
    
      V
      0
    
    =
    
      
        〈
        
          e
          ,
          s
        
        〉
      
      =
      
        
          
            ∑
            
              j
              =
              1
            
            n
          
          ⁢
          
            
              e
              j
            
            ⁢
            
              r
              j
            
          
        
        =
        
          -
          4
        
      
    
  



Accordingly, the symbol ‘!’ is converted to a Gaussian integer (Z(!)=5−4i) based on the complex number basis (b=−1+i). After that, it can be represented as coordinate is (5,−4) on the complex plane.
B. Audio Information Based on Complex Number Basis
Sounds are audio signals within the acoustic range available to humans. Their audio frequency is generally in the 20 to 20,000 hertz range. In an analog audio signal, sound is represented by a continuous waveform over time. The loudness of sound is reflected in the amplitude of the acoustic pressure, and the pitch is reflected in audio frequency. Analog audio signals are usually recorded and stored in computers or servers in the form of digital audio signals. A digital audio signal contains a number made up of binary numbers 1 and 0.
To apply the method in the present embodiment to an analog audio signal, the first step is to digitize (i.e., sample and quantize) the signal. In one example, the digitization is performed by sampling with a constant sampling rate.
In digital audio technology, the analog voltage of sound intensity is represented in digits in a quantization process. In other words, the magnitude of the voltage within a range may be represented by the same digit. The same principles can be applied to restore the analog data. FIG. 3 shows the sampling and quantization of an analog audio signal. In FIG. 3, the vertical axis represents voltage, and the voltage values between every two adjacent red lines have the same quantized value.
The basic number system in computers is binary. Thus, the audio data is coded as computer data format. In the present embodiment, SQL code is used to convert audio to the binary sequence, and to revert the binary sequence to audio. An exemplary SQL code is shown as follows:

    
    
        Audio to binary sequence,

byte[ ] sequence=File.ReadAllBytes (“experimetal.wma”);

Binary sequence to audio,

File.WriteAllBytes (“restoreexperimetal.wma”, sequence);

    
    


The corresponding real part and imaginary part of the Gaussian number can be obtained using the method described in Section II. Thus, the resulting audio information can be represented on the complex plane.
C. Digital Image Based on Complex Number Basis
Digital images can be in different forms: binary image, grayscale image, color image, 2D image, 3D image, etc. The following description focuses on 2D digital images, including binary images, gray-scale images, and color images.
A 2D image is a representation of a two-dimensional matrix on a computer. Depending on size, resolution, format, etc., an image may contain a large amount of information. In order to express the image in complex number, it is necessary to transform the two-dimensional image signal to the 0 ̃1 sequence of one-dimensional space. There are many ways in which this transformation can be performed. In one example, the transformation may be performed using linearization, a method that is particularly suitable for binary images and grayscale images. For color images, in one embodiment, the transformation may be performed separate for the R (red) component, the G (green) component, and the B (blue) component.
FIG. 4 illustrates six commonly used linearization schemes (a) to (f). In FIG. 4, there are six matrixes, each representing an image. Each of the matrixes includes 16 blocks, and each of the blocks corresponds to a pixel or a pixel block. The different sequence for linearization is illustrated in the matrixes using a line that draws through the blocks in the respective matrix.
FIG. 5 shows a 4×4 grayscale pixels block (left), and a binary block (right) transformed from the grayscale pixel block on the left.
By applying the linearization method (a) in FIG. 4 to FIG. 5, the following 0 ̃1 sequence can be obtained: ‘10100011 10010011 10011000 10001001 10010001 10010010 1001010 10010000 10010010 10011001 10010101 10010111 10001110 10010111 10011011 10010110’
Starting from ‘10100011’, the corresponding real part and the corresponding imaginary part can be calculated using the method described in Section II. The result is:



  
    
      U
      0
    
    =
    
      
        〈
        
          e
          ,
          r
        
        〉
      
      =
      
        
          
            ∑
            
              j
              =
              0
            
            n
          
          ⁢
          
            
              e
              j
            
            ⁢
            
              r
              j
            
          
        
        =
        
          -
          5523029274283244717
        
      
    
  




  
    
      V
      0
    
    =
    
      
        〈
        
          e
          ,
          s
        
        〉
      
      =
      
        
          
            ∑
            
              j
              =
              1
            
            n
          
          ⁢
          
            
              e
              j
            
            ⁢
            
              r
              j
            
          
        
        =
        
          -
          13215399108021942617
        
      
    
  



Essentially, the grayscale pixel block in FIG. 5 is converted to a Gaussian integer (Zblock=−5523029274283244717−13215399108021942617 i) based on the complex number basis b=−1+i. And it can now be represented in the coordinate of (−5523029274283244717, −13215399108021942617) on the complex plane.
In the present example, linearization method (a) in FIG. 4 is used to perform linearization for each pixels block in the image. However, in other embodiments, other linearization methods such as methods (b) to (d) in FIG. 4 can be used.
In one embodiment, a large image may first be divided into several small sub-images for separate processing. In this way, a large number arithmetic can be avoided, and the processing of integer weight will be smaller. Advantageously, this may improve the efficiency of the entire process.
V. Information Hiding Based on Complex Number Basis
The data coding method in the present embodiment may be extended to hide information.
A. Description of the Hiding Algorithm
In information hiding technology, secret or private information may be hidden by putting this information in an unsuspecting regular file (i.e. carrier file). The carrier file may be any computer-readable data, such as image files, documents, or digital audio.
Define the following characters and functions:

    
    
        M1 is a public information,
        S is a private information,
        Function G(x): x→N is a conversion function of binary encoding information,
        Function G−1(N): N→x is an inverse process of function of G(x),
        Function Fb(N): N→(p, q) is a projection processing (in the present embodiment, it is the transformation of binary sequence of information to a point on the complex plane),
        Function F−1(N): (p, q)→N is the inverse process of function of Fb(N),
        Function R (P0, P1): P0P1 is defined as the relationship between P0 and P1.
    
    


The hiding method in one embodiment of the present invention is as follows: First, the function G(x) is used for the public information M1. Then a sequence 0 ̃1 is generated, denoted as G(M1)=NM1. Next, the 0 ̃1 sequence is converted to a point P0 (P0, P1)=(P0, q0) on the complex plane. This procedure is denoted as F−1+i(NM1)=(p0, q0)=P0. By applying the same function for the private information S, F−1+i(NS)=(p1, q1)=P1 is obtained. Thus, on the complex plane, the relationship (R(P0, P1): P0P1) between these two points can be found. The hiding object is represented by M1, and the binary sequence of the secret file can be reconstructed and by a series of inverse transform functions. Because the 0 ̃1 sequence and the point on the complex plane are mapped one to one, the inverse transform function will also be one to one.
The above processing in the present embodiment is illustrated in Algorithm 4 and Algorithm 5 below.










Algorithm 4 Coding
















1: 
function (M1)


2:
 M1 → G(x) → G(M1) = NM1


3:
 NM1 → F−1+i(NM1) = (p0, q0) = P0 


4:
end function


5:
function (S)


6:
 S → G(x) → G(S) = NS 


7:
 NS → F−1+i(NS) = (p1, q1) = P1 


8:
end function


9:
The key is R(P0, P1): P0   P1.



















Algorithm 5 Decoding
















1: 
function


2:
 M1 → G(x) → G(M1) = NM1


3:
 NM1 → F−1+i(NM1) = (p0, q0) = P0 


4:
 P1 : R(P0, P1)   P0


5:
 P1 → Fb−1 (p1, q1) → F−i+1−1(p1, q1) = NS


6:
 NS → G−1(N) → G−1(NS) = S


7:
end function









B. Example of the Hiding Algorithm

An example of text information hiding based on the complex number basis is provided in the following description to demonstrate the transformation process. Using complex number basis b=−1+i, the text information ‘A’ is projected to a point on the complex plane OA=(xA, yA) and the text information ‘B’ is projected to a point on the complex plane OB=(xB, yB). The text information ‘A(OA)’ minus the text information ‘ B(OB)’ is the difference vector O′=OA−OB=(xA−xB, yA−yB)=(x′, y′) as shown in FIG. 6. In the present embodiment this difference vector is a key for converting between text information ‘ A(OA)’ and text information ‘ B(OB)’. Preferably, the text information ‘A’ is private information and the text information ‘B’ is arbitrary and public information, and they do not appear to be related to each other. In the present embodiment, the private text message ‘A’ can be restored from the public text message ‘ B’ and the key O, where OA=(xA, yA)=(xB+x′, yB+y′). It should be noted that the choice of the key (x′, y′)=(x1−x2, y1−y2) in the present embodiment is merely exemplary. In some alternative embodiments, other geometric relationships may be used to obtain the key. In one example the relationship is addition, wherein (x′′, y′′)=(x1+x2, y1+y2). In the present invention, a variety of selections for the keys are applicable, as long as the operational rules of plane geometry (e.g., addition, subtraction, multiplication, division, dot product of vector, cross product of vector, etc.) are observed. In one example, subtraction operation of plane geometry is used to achieve information hiding. In this example, the key is equal to the coordinates of private information on the complex plane minus the coordinates of public information on the complex plane.
Vi. Experiments and Analysis
A. Hiding of the Text Information
In the present example, Chinese characters ‘’ and English characters ‘MUST’ are selected as the private text information. The corresponding public text information is selected to be ‘Warm Welcome’. In this example, the public text information appears to have no correlation with the confidential, private text information.
In operation, the Chinese characters ‘’ is first converted to Internal code, as: ‘B0C4 C3C5 BFC6 BCBC B4F3 D1A7’. Then it is converted to a 0 ̃1 sequence as ‘1011000011000100 1100001111000101 1011111111000110 1011110010111100 1011010011110011 1101000110100111’. By applying Algorithm 3, its representation of the complex plane based on basis (b=−1+i) can be obtained. In other words, the U values and V values can be obtained. The result is:

The real part U1=−150115170289844

The imaginary part V1=−213248109241101

Second, the English characters ‘MUST’ is converted to the ASCII code, as: ‘4D 55 53 54’. Then it is converted to a 0 ̃1 sequence as ‘01001101 01010101 01010011 01010100’. By applying Algorithm 3, its representation of the complex plane based on basis (b=−1+i) can be obtained. The result is:

The real part U1=11452

The imaginary part V1=34454

Third, the public text information ‘Warm Welcome’ is converted to ASCII code, as: ‘57 61 72 6D 20 57 65 6C 63 6F 6D 65’. Then it is converted to a 0 ̃1 sequence as ‘01010111 01100001 01110010 01101101 00100000 01010111 01100101 01101100 01100011 01101111 01101101 01100101’. By applying Algorithm 3, its representation of the complex plane based on basis (b=−1+i) can be obtained. The result is:

The real part U1=−64908828457355

The imaginary part V1=127903172154690

After obtaining these results, the Gaussian integer of ‘’ is marked as Z1=−150115170289844−213248109241101i, the Gaussian integer of ‘MUST’ is marked as Z2=11452+34454i, and the Gaussian integer of ‘Warm Welcome’ is marked as Z3=−64908828457355+127903172154690i. The key of the private Chinese information (’) can be written as Z′=Z1−Z3, and the key of the private English information (MUST) can be written as Z′′=Z2−Z3. The private information ‘’ or ‘MUST’ can be restored from the public text information ‘Warm Welcome’ using Algorithm 2, provided that the key of Z′, Z′′ and the Gaussian integer (Z3) of ‘Warm Welcome’ are known. Subsequently, the Gaussian integer Z1 or Z2 of the private information can be obtained. With these, the private information ‘’ or ‘MUST’ can be restored using Algorithm 2. Accordingly, the method in the present embodiment enables the hiding and recovery of the private text information.
In one embodiment, to avoid processing large numbers operation, the original text information may be divided into a number of shorter text information so that they are dealt with separately. This is advantageous in that the weight of the processing of the integer may be reduced.
B. Hiding of the Audio Information
Audio information can also be represented on the complex plane. From the above description, audio information can be converted to the 0 ̃1 sequence, and can be represented on the complex number basis (b=−1+i) when the 0 ̃1 sequence is converted to a Gaussian integer. If the Gaussian integer of the private audio information is recorded as Za1 and the Gaussian integer of the public audio information is recorded as Za2, then in one embodiment the key for converting between the two can be written as Za=Za1−Za2. Likewise, private audio information can be restored provided that the key of Za and the Gaussian integer (Za2) of the public audio information are known. Accordingly, the hiding and recovery of the private audio information can be performed.
FIG. 8 shows an exemplary waveform profile of a public audio information ‘Hello’, which can be represented as a Gaussian integer Za1=Ua1+Va1i. By applying Algorithm 3, it can be determined that Ua1=3.6133×102939 and Va1=3.6133×102939.
FIG. 9 shows an exemplary waveform profile of a private audio information ‘’, and it can be represented as a Gaussian integer Za2=Ua2+Va2i. By applying Algorithm 3, it can be determined that Ua2=1.0611×104333 and Va2=3.3955×104334.
Once the values of Za1 and Za2 are known, the key Za=Za1−Za2 can be obtained. Again, in the present invention, a variety of selections for the keys are applicable, as long as the operational rules of plane geometry (e.g., addition, subtraction, multiplication, division, dot product of vector, cross product of vector, etc.) are observed.
C. Hiding of the Digital Image Information
1) Hiding of One Grayscale Image to Another Grayscale Image:
In the following example, all of the selected image are sized as 256×256 pixels, and the complex number basis is b=−1+i. The original public and private images are each divided into 8×8 pixels block, so as to avoid the processing of large numbers operation. In the present embodiment, the linearization method (a) of FIG. 4 is applied to a 8×8 pixels block.
FIG. 10A is an independent public grayscale image, and FIG. 10B is the corresponding private grayscale image. The images in FIGS. 10A and 10B look substantially different such that they appear to be completely unrelated. Linearization is performed for each 8×8 pixels block of the private grayscale image and the public grayscale image using the linearization method (a) of FIG. 4. The blocked of grayscale image is shown in FIGS. 11A and 11B. In particular, the 0 ̃1 sequence of each 8×8 pixels block is obtained from left to right, top to bottom, through all the pixels using the linearization method (a) of FIG. 4. These two grayscale images are then converted to a respective Gaussian integer based on the complex number basis (b=−1+i) using Algorithm 3. The first 8×8 pixels block in the upper left corner of the public grayscale image is represented as Gaussian integer Zga1. Similarly, the corresponding 8×8 pixels block of private grayscale image is represented as Gaussian integer Zgb1. The Gaussian integer for other 8×8 pixels blocks in both the private and public grayscale image are obtained from left to right, top to bottom. The Gaussian integers obtained from the public grayscale image are arranged in a progression Zga. The Gaussian integers obtained from the private grayscale image are arranged in a progression Zgb. The key Zg1=Zgb1−Zga1 is used for the first 8×8 pixels block. Zgb1 is the first term of Zgb and Zga1 is the first term of Zga. The Gaussian integer progression of the key is recorded as Zg=Zgb−Zga. Accordingly, each progression includes a series of Gaussian numbers.
The private grayscale image of FIG. 10B can be restored. As the Gaussian integer progression (Zg) of the key and the public grayscale image of FIG. 10A are known, Algorithm 2 and Algorithm 3 are used to restore the private grayscale image of FIG. 10B. Each of the 8×8 pixels blocks corresponds to the corresponding Gaussian integer. As such, the hiding and recovery of the private grayscale image are implemented using the method of the present embodiment.
For simplicity, only the first, second, and third term in each progressions are provided below. Using Algorithm 3, the following can be obtained:

Zga={−4.4396×1076−9.2182×1076i,−5.4972×1075−7.9490×1076i,−6.7244×1076+6.3508×1076i, . . . }, the progression Zga has 1024 terms; and

Zgb={−3.0878×1076−9.2634×1076i,−8.3981×1076−5.4513×1076i,−6.9975×1076−4.7261×1077i, . . . }, the progression Zgb has 1024 terms.

It follows that the key is:

Zg={1.3518×1076+0.0454×1076i,−7.8484×1076+2.4977×1076i,−0.2729×1076−4.0910×1077i, . . . }, the progression Zg has 1024 terms.

2) Hiding of the Color Image:

For hiding of color image, the method in the present embodiment treats R (red) component, G (green) component, and B (blue) component in a color image separately. In other words, the R component of the public color image is used to hide the R component of the original private color image, the G component of the public color image is used to hide the G component of the original private color image, and the B component of the public color image is used to hide the B component of the original private color image. FIG. 12A is the independent public color image with the private color image and FIG. 12B is the private color image.
The method for processing a color image is as follows. First, the public and the private color images are each divided into 8×8 pixels block as shown in FIGS. 13A and 13B. For simplicity, the hiding and recovery of only the R component of the private color image is illustrated below. A person skilled in the art would appreciate that the same method applies to the B component and the G component. The respective blocked R component of the private and public color images is shown in FIGS. 14A and 14B.
The linearization method (a) of FIG. 4 is applied to each 8×8 pixels block of the blocked R component of private color image and the blocked R component of public color image. More particularly, the 0 ̃1 sequence of each 8×8 pixels block is obtained from left to right, top to bottom, using the linearization method (a) of FIG. 4. The two R component images are then converted to respective Gaussian integers based on the complex number basis (b=−1+i) using Algorithm 3. The first 8×8 pixels block in the upper left corner of the blocked R component of public color image is represented by Gaussian integer Zcra1. The corresponding 8×8 pixels block in the blocked R component of private color image is represented by Gaussian integer Zcrb1.
The Gaussian integer for other 8×8 pixels blocks from left to right, top to bottom, in the private and public R component of color images can also be obtained. Gaussian integers obtained from the public R component of color image are arranged in a progression Zcra. Gaussian integers obtained from the private R component of color image are arranged in a progression Zcrb. In this example let Zcrb=Zcrb1−Zcra1 be the key of the first 8×8 pixels block. Zcrb1 is the first term of Zcrb and Zcra1 is the first term of Zcra. The Gaussian integer progression of R component for the key is represented as Zcr=Zcrb−Zcra.
The R component of private color image in FIG. 14B can be restored. As the progression Zcr and the R component of public color image in FIG. 14A are known, Algorithm 2 and Algorithm 3 are used to restore the R component of private color image. Each 8×8 pixels block corresponds to the corresponding Gaussian integer.
The same processing is applies to the G component of private color image and the B component of private color image. Accordingly the Gaussian integer progression Zcg of the G component for the key and the Gaussian integer progression Zcb of the B component for the key are also obtained, where Zcg=Zcgb−Zcga and Zcb=Zcbb−Zcba. Gaussian integers obtained from the public G component of color image are arranged in a progression Zcga. Gaussian integers obtained from the G component of color image are arranged in a progression Zcgb. Gaussian integers obtained from the public B component of color image are arranged in a progression Zcba. Gaussian integers obtained from the B component of color image are arranged in a progression Zcbb. Algorithm 2 and Algorithm 3 are used to restore the G and B components of the private color image. And as such, the hiding and recovery of the private color image are implemented.
For simplicity, only the first, second, and third term in each progressions are provided below. Using Algorithm 3, the following can be obtained:

Zcra={−1.4458×1076−6.3196×1076i,−6.1816×1076−1.0699×1077i,−8.9864×1075+7.5359×1076i, . . . }, the progression Zcra has 1024 terms.

Zcrb={−3.0878×1076−2.3158×1076i,−2.3820×1076−3.0729×1076i,−7.7466×1076+2.2043×1076i, . . . }, the progression Zcrb has 1024 terms.

It follows that the key of the R component is:

Zcr={1.6420×1076+4.0038×1076i,3.7796×1076+7.5961×1076i,−6.8479×1076−5.3316×1076i, . . . }, the progression Zcr has 1024 terms.

Zcga={−6.0821×1076−1.3117×1076i,−5.3586×1076−1.3428×1076i,−4.7221×1076−6.4984×1076i . . . }, the progression Zcga has 1024 terms.

Zcgb={−6.9475×1076−6.9475×1076i,−6.1783×1076−7.5748×1076i,−5.4541×1076−6.2685×1076i, . . . }, the progression Zcgb has 1024 terms.

And the key of the G component is:

Zcg={−0.8654×1076−5.6358×1076i,−0.8197×1076−6.2320×1076i,−0.7320×1076+0.2299×1076i, . . . }, the progression Zcg has 1024 terms.

Zcba={−5.4008×1076−7.9972×1076i,−5.4063×1076−1.0165×1077i,−5.4515×1076−9.3082×1076i, . . . }, the progression Zcba has 1024 terms.

Zcbb={−1.5439×1076i,−6.7750×1075+3.8117×1076i,2.5060×1076+2.4630×1076i, . . . }, the progression Zcbb has 1024 terms.

And the key of the B component is:

Zcb={5.4008×1076+6.4533×1076i,−1.3687×1076+1.3977×1077i,7.9575×1076+1.1771×1077i, . . . }, the progression Zcb has 1024 terms.

3) Hiding of One Grayscale Image to Multiple Grayscale Images:

FIG. 15 is the private image M sized 256×256 pixels. In one example, FIG. 15 may be divided it into four images (M1, M2, M3, M4), each having a size of 64×64 pixels. The four images correspond to four points (ZM1, ZM2, ZM3, ZM4) on the complex plane.
FIGS. 16A-16D shows the four public images (N1, N2, N3, N4). As shown in the Figures, all of them appear to have no correlation with the private image in FIG. 15. In one embodiment, a key ki=ZMi−ZNi, iε[1, 4] may be constructed. By using the method of the present embodiment on the public image Ni, the private Mi can be restored. This example illustrates that multiple images may be used to hide a private image. In one example, the multiple images may be disguised as one image.
The above embodiments of the present invention provide a data coding method, which utilizes the features of character coding in computer to hide information. In the above embodiments, the public information appears to have no correlation with the private information at all. This makes the key hard to crack. Some embodiments of the present invention further offer the following advantages:
Efficiency:
Generally, the larger the size of the multimedia information, the longer the calculating time would be. The methods in the present embodiments allow division of large sized multimedia information into smaller sizes of multimedia information. Although the resulting number of keys will increase, the calculating time can be substantially reduced.
Security:
The method in the present embodiments will not cause any change in the format of the information. This is because the hiding of the information is based on the complex number basis and the operational relations of points on the complex plane. As a result, the private multimedia information would not easily corrupt.
Robustness:
The method in the present embodiments is robust in that it uses complex number basis. Even when the public information and the key are obtained by an unauthorized party, the private information is still relatively difficult to crack when compared with existing solutions.
The present invention uses complex number as the basis in the positional number system. The present invention provides a data coding method for converting data of multimedia information and Gaussian integer using complex number basis. The data coding method can be extended to apply as a data hiding method, which is suitable not only for text, but also for audio, image, video, and other multimedia information. Other advantages of the present invention will become apparent to the person skilled in the art by referring to the above description and the appended drawings.
Although not required, the embodiments described with reference to the Figures can be implemented as an application programming interface (API) or as a series of libraries for use by a developer or can be included within another software application, such as a terminal or personal computer operating system or a portable computing device operating system. Generally, as program modules include routines, programs, objects, components and data files assisting in the performance of particular functions, the skilled person will understand that the functionality of the software application may be distributed across a number of routines, objects or components to achieve the same functionality desired herein.
It will also be appreciated that where the methods and systems of the present invention are either wholly implemented by computing system or partly implemented by computing systems then any appropriate computing system architecture may be utilized. This will include stand-alone computers, network computers and dedicated hardware devices. Where the terms “computing system” and “computing device” are used, these terms are intended to cover any appropriate arrangement of computer hardware capable of implementing the function described.
It will be appreciated by persons skilled in the art that numerous variations and/or modifications may be made to the invention as shown in the specific embodiments without departing from the spirit or scope of the invention as broadly described. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.
Any reference to prior art contained herein is not to be taken as an admission that the information is common general knowledge, unless otherwise indicated.

## Claims

1. A method for coding data, comprising:
representing a first data in digital form as digital information;
transforming the digital information into a first Gaussian integer;
determining a relationship between the first Gaussian integer and a second Gaussian integer;
deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer; and
converting the first data to the second data.

2. The method of claim 1, further comprising representing the first data using the second data represented by the second Gaussian integer so as to hide at least some of the first data.

3. The method of claim 1, wherein the relationship is a geometric relationship.

4. The method of claim 1, wherein the digital information is represented in one of: binary basis, octal basis, decimal basis, or hexadecimal basis.

5. The method of claim 1, wherein the transformation of the digital information into a Gaussian integer is based on complex number basis using complex numbers.

6. The method of claim 1, wherein the complex number basis has a base of −1+i or −1−i.

7. The method of claim 1, wherein the key is a third Gaussian integer.

8. The method of claim 1, wherein the first data and the second data each comprises text, image, or audio.

9. The method of claim 8, wherein the image is a binary image; and the step of representing the first data in digital form as digital information comprises representing each pixel of the binary image using binary numbers.

10. The method of claim 8, wherein the image is a greyscale image; and the step of representing the first data in digital form as digital information comprises representing each pixel of the greyscale image using binary numbers.

11. The method of claim 8, wherein the image is a colour image; and the step of representing the first data in digital form as digital information comprises decomposing each pixel of the colour image into at least two separate colour components, and representing the at least two separate colour components of each pixel using binary numbers.

12. The method of claim 8, wherein the first data is text that comprises at least one of: a Chinese character, an English alphabet, a number, and a graphical symbol.

13. The method of claim 12, wherein the text is a Chinese character; and the step of representing the first data in digital form as digital information comprises representing the Chinese character using internal code with hexadecimal basis.

14. The method of claim 12, wherein the text is an English alphabet, a number, or a graphical symbol; and the step of representing the first data in digital form as digital information comprises representing the English alphabet, the number, or the graphical symbol using an ASCII code with binary basis.

15. The method of claim 8, wherein the audio is a digitized audio signal represented in voltage value; and the step of representing the first data in digital form as digital information comprises representing the digitized audio signal in a binary sequence using SQL code.

16. The method of claim 1, wherein the first data represented by the first Gaussian integer and the second data represented by the second Gaussian integer are of the same type.

17. A method for coding data, comprising:
representing a first data in digital form as digital information;
transforming the digital information into a first Gaussian integer; and
determining a relationship between the first Gaussian integer and a second Gaussian integer;
deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer; and
representing the first data using the second data represented by the second Gaussian integer so as to hide at least some of the first data.

18. The method of claim 17, wherein the first data and the second data comprises:
(i) text that comprises at least one of: a Chinese character, an English alphabet, a number, and a graphical symbol,
(ii) image that comprises at least one of: binary image, a greyscale image, and a colour image; or
(iii) audio;

wherein when the image is a colour image, the step of representing the first data in digital form as digital information comprises:
decomposing each pixel of the colour image into at least two separate colour components, and
representing the at least two separate colour components of each pixel using binary numbers;

wherein when the audio is a digitized audio signal represented in voltage value, the step of representing the first data in digital form as digital information comprises representing the digitized audio signal in a binary sequence using SQL code.

19. A method for coding data, comprising:
representing a first data in digital form as digital information;
transforming the digital information into a first Gaussian integer; and
determining a relationship between the first Gaussian integer and a second Gaussian integer; and
deriving, based on the determined relationship, a key for converting between the first Gaussian integer and the second Gaussian integer so as to associate the first data with a second data represented by the second Gaussian integer;

wherein the first data represented by the first Gaussian integer and the second data represented by the second Gaussian integer are of the same type.

20. The method of claim 19, wherein the first data and the second data comprises
(i) text that comprises at least one of: a Chinese character, an English alphabet, a number, and a graphical symbol,
(ii) image that comprises at least one of: binary image, a greyscale image, and a colour image; or
(iii) audio;

wherein when the image is a colour image, the step of representing the first data in digital form as digital information comprises:
decomposing each pixel of the colour image into at least two separate colour components, and
representing the at least two separate colour components of each pixel using binary numbers;

wherein when the audio is a digitized audio signal represented in voltage value, the step of representing the first data in digital form as digital information comprises representing the digitized audio signal in a binary sequence using SQL code.