A Virtual Image Cryptosystem Based upon Vector Quantization Chair Professor Chin-Chen Chang National Tsing Hua University National Chung Cheng University Feng Chia University http://msn.iecs.fcu.edu.tw/~ccc
Introduction Images have been widely used in our daily life. The image security has become an important issue in current computer world. Image cryptology is a very useful tool to defend the information security.
Apply the Traditional Cryptosystem on Images
Problems The cipherimage is meaningless. Image Camouflage(影像偽裝) Image size is huge Image Compression(影像壓縮) The decrypted image containing a small distortion is usually acceptable. Vector Quantization (向量量畫編碼法)
Virtual Image Cryptosystem
VQ Compression Index table Original Image Codebook (16, 200, …, 90) 1 (16, 200, …, 90) 1 (35, 22, …, 100) 2 (40, 255, …, 59) . 254 (90, 102, …, 98) 255 (145, 16, …, 99) 1 60 61 175 … 100 95 203 . . . . Index table Original Image Codebook
Vector Quantization (VQ) Codebook Training Codebook Generation 1 2 . N-1 N Training Images Training Set Separating All Training Images to Vectors
Vector Quantization (VQ) Codebook Training Codebook Generation (Ex: Codebook Size = 256) 1 . 1 . 254 255 N-1 N Initial Codebook Training Set Codebook Initiation
Vector Quantization (VQ) Codebook Training LBG Algorithm Training Set Training 256 codewords each time K times Until the difference between every two times is smaller than the threshold
Example Codebook To encode an input vector, for example, v = (150,145,121,130) (1) Compute the distance between v with all vectors in codebook d(v, cw1) = 114.2 d(v, cw2) = 188.3 d(v, cw3) = 112.3 d(v, cw4) = 124.6 d(v, cw5) = 122.3 d(v, cw6) = 235.1 d(v, cw7) = 152.5 d(v, cw8) = 63.2 (2) So, we choose cw8 to replace the input vector v.
VQ Decompression Index Table VQ Coded Image Codebook (16, 200, …, 90) (16, 200, …, 90) 1 (35, 22, …, 100) 2 (40, 255, …, 59) . 254 (90, 102, …, 98) 255 (145, 16, …, 99) 1 60 61 175 … 100 95 203 . . . . Index Table VQ Coded Image Codebook
The Principle of the Virtual Image Cryptosystem Separate O into a set of vectors {O1, O2, O3,…, Ono}. Separate V into another set of vectors {V1, V2, V3, … , Vnv} Let O be the original image Let {V1, V2, V3, …, Vnv} be the codebook
Encryption Randomly generate the transformed-origin G and the project-direction D. Project {V1, V2, V3, …, Vnv} to D based on G Sort the projected results, and obtain {{V’1, V’2, V’3, …, V’nv}
Encrypt w, h, no, G, and D into wc, hc, noc, Gc, and Dc by DES-like, respectively. Encrypt I into Ic, where Ic=IXORX and X is the bit-string containing G, D, G, D,… only. Hide wc, hc, noc, Gc, Dc, and Ic into the pixels of V. Cipher Image Vc
Decryption
Original Image Airplane 512 X 512 Empirical Tests Test1: Original Image Airplane 512 X 512
Virtual Image Lena 256 X 256 Cipher Image Lena 256 X 256 PSNR=37.87dB
Decrypted Image Airplane 512 X 512 PSNR=30.22dB
Original Image Airplane 512 X 512 Test2: Original Image Airplane 512 X 512
Virtual Image Lena 360 X 360 Cipher Image Lena 360 X 360 PSNR=45.13dB
Decrypted Image Airplane 512 X 512 PSNR=31.36dB
Original Image Peppers 512 X 512 Test3: Original Image Peppers 512 X 512
Virtual Image Lena 256 X 256 Cipher Image Lena 256 X 256 PSNR=37.60dB
Decrypted Image Peppers 512 X 512 PSNR=29.91dB