1 Introduction

With the rapid development of the Internet, there are more and more users to communicate and exchange information via the Internet. As the Internet is primarily a huge open channel, the security problems like interception and modification have become more and more serious. One of the possible solutions is to use encryption techniques which transform secret data into an unrecognizable form and only the legal users can decrypt them with the secret key. However, the unreadable form may arouse much more attentions of illegal users to decrypt the messages and even destroy them. Another of the possible solutions is to use data hiding techniques which embed secret data into a cover media such as image, video or audio to avoid the attention of the illegal users [15]. Data hiding techniques can be used to protect the authentication and ownership of multimedia data, as well as a mean of secret communication for people [15].

Data hiding techniques for image can be roughly divided into three domains: the spatial domain methods [1, 2, 13, 16], the transform domain methods [10] and the compression domain methods [35, 8, 11, 14, 17, 1921]. Data hiding techniques in the spatial domain methods embedded the secret data by modifying the spatial information such as the least-significant-bit (LSB) methods [1, 2] and the histogram modification [13, 16]. Data hiding techniques in the transform domain methods embedded the secret data by shifting the coefficients of the cover image [10]. However, both the spatial domain methods and transform domain methods all need the larger bandwidth and the storage space. In order to save bandwidth or storage space for data transmission or storage, many data hiding methods in compression domain have been proposed [20]. In the compression domain, the secret data is embedded into the compressed-cover images compressed by the compression techniques such as JPEG, vector quantization (VQ) [7] or side-match vector quantization (SMVQ) [9]. As VQ and SMVQ are high-efficient compression techniques, they have been widely used in the different applications such as data hiding techniques [20] and video signals [18]. There are many reversible data hiding algorithms based on VQ and SMVQ proposed in recent years [35, 8, 11, 14, 17, 19, 21]. In 2013, Chang et al. proposed a reversible data hiding method based on SMVQ and search order coding (SOC) which embedded 1-bit secret data into each SMVQ index [4]. Recently Pan et al. proposed a reversible data hiding method for VQ indices based on SOC technique to achieve a low bit rate [14]. However, these two methods all had a low hiding capacity. In 2009, Chang et al. proposed a reversible data hiding method for VQ compressed images based on locally adaptive coding method [3]. In 2009, Tsai proposed histogram-based reversible data hiding method for VQ compressed images [17]. Wang and Lu proposed a path optional reversible data hiding method based on the joint neighboring coding (JNC) of the VQ index table in 2009 [21]. In 2006, Chang et al. proposed a data hiding method based on SMVQ coding which embeds 1-bit secret data into SMVQ indices [5]. To improve the image quality and the hiding capacity of Chang et al.’s method [5] in 2006, Huang et al. proposed a new data hiding methods based on SMVQ recently [8]. However, these two methods in Chang et al. [5] and Huang et al. [8] all had a low hiding capacity and the image quality is not very good. In 2010, Lee et al. proposed a reversible data hiding method which embedded the secret data into the SMVQ-index by modifying the SMVQ indices [11]. In 2013, Wang et al. proposed a variant of SMVQ, called adjoining state-codebook mapping (ASCM), to reduce the bit rate and provide a large hiding capacity for secret data [19].

In this paper, we propose a novel reversible data hiding method based on enhanced side-match vector quantization (ESMVQ) method which can realize a large hiding capacity and high image quality. ESMVQ compression method, combining the advantage of VQ and SMVQ, uses a very small state codebook size of 4 to achieve a low bit rate and meanwhile ensures the compressed image quality by introducing a complementary state codebook. The secret data is embedded into the ESMVQ-index to achieve a large hiding capacity. The ESMVQ-index can be recovered reversibly after the secret data is extracted. The experimental results demonstrate that our proposed method outperforms the similar works, Chang et al.’s method [5], Huang et al.’s method [8], Lee et al.’s method [11] and Wang et al.’s method [19].

The rest of this paper is organized as follows: In Section 2, we briefly introduce the VQ compression method, the SMVQ compression method and the related SMVQ data hiding method of Chang et al. [5] and Huang et al. [8]. In Section 3, we describe the proposed ESMVQ compression method and the proposed reversible data hiding method based on ESMVQ with its preprocessing, embedding and extracting processes in detail. In Section 4, we show the experimental results to verify the superiority of the proposed method. Finally, the conclusions are summarized in Section 5.

2 Related Work

In this section, a brief introduction to VQ is shown in Section 2.1 and Section 2.2 introduces the SMVQ concept. The SMVQ-based data hiding method of Chang et al. [5] is described in Section 2.3 and finally is the Huang et al.’s method [8].

2.1 Vector quantization

Vector quantization [7] is one of the popular lossy data compression techniques in the image processing field [12] because of its low-bit-rate, simple encoding and decoding procedures. VQ can be simply regarded as a mapping function which maps the k-dimensional space R k into a finite subset Y = {Y 0, Y 1, ⋯, Y N − 1}, where Y is called codebook and Y j  = (Y j,0, Y j,1, ⋯, Y j,k − 1) is the jth codeword in the codebook Y and the size of the codebook Y is N.

Before encoding, the original image is firstly partitioned into k-dimensional non-overlapping blocks and then each block is encoded by a k-dimensional codeword. In the encoding procedure, VQ finds the closest codeword Y bm for each input vector X i from the codebook Y, where Y bm is selected according to eq. (1) and (2).

$$ d\left({X}_i,{Y}_j\right)={\left\Vert {X}_i-{Y}_j\right\Vert}^2={\displaystyle \sum_{l=0}^{k-1}{\left({X}_{i,l}-{Y}_{j,l}\right)}^2} $$
(1)
$$ d\left({X}_i,{Y}_{bm}\right)=\underset{0\le j\le N-1}{MIN}\left\{d\left({X}_i,{Y}_j\right)\right\} $$
(2)

where X i is the ith input vector, Y j is the jth codeword in the codebook Y and d(X i , Y j ) is the squared Euclidean distance between the input vector X i and the codeword Y j . Then VQ encodes the vector X i  = (X i,0, X i,1, ⋯, X i,k − 1) using the index “bm” of Y bm in the codebook Y. In the decoding procedure, VQ can use a simple table look-up technique using received “bm” to reconstruct the compressed image from the VQ index table.

2.2 Side-match vector quantization

VQ takes advantage of the high correlation between neighboring pixels within a block but without taking into account the correlation between neighboring blocks. Therefore, the side-match vector quantization technique was proposed by Kim in 1992 [9] to improve the compression ratio of VQ.

In SMVQ method, the first row blocks and the first column blocks are encoded by conventional VQ and the residual blocks are encoded in a raster scanning order using a smaller state codebook (SC) which is generated using a main codebook by online side-match distortion prediction.

For each input vector X i , SMVQ first predicts a state codebook for it by using its upper block U and left block L as shown in Fig. 1. SMVQ calculates side-match distortion d sm for all codewords in the main codebook Y and then sorts the codewords according to the side-match distortion d sm in an ascending order and selects the first Ns (Ns < N) codewords with smallest d sm to construct a state codebook for vector X i . The side-match distortion d sm is defined in eq. (3).

Fig. 1
figure 1

Relationship of neighboring image blocks in SMVQ

$$ {d}_{sm}\left({X}_i,{Y}_j\right)={\displaystyle \sum_{n=0}^{w-1}{\left({Y}_{j\left(0,n\right)}-{U}_{\left(h-1,n\right)}\right)}^2}+{\displaystyle \sum_{n=0}^{h-1}{\left({Y}_{j\left(n,0\right)}-{L}_{\left(n,w-1\right)}\right)}^2} $$
(3)

Then SMVQ selects the closest codeword Y bm for vector X i from the state codebook and encodes the vector X i with the index of the Y bm in the state codebook. Since the size Ns of the state codebook is smaller than the size N of main codebook Y, SMVQ can reduce the bit rate obviously.

2.3 Chang et al.’s method

In 2006, Chang et al. proposed a reversible data hiding method based on SMVQ [5]. The first row blocks and the first column blocks compressed by VQ did not embed the secret data. For each residual block, the closest codeword k a from its state codebook is selected. If the secret data is “0”, they replaced the block with the codeword k a . Otherwise, the closest codeword k b for codeword k a from the state codebook is selected and an approximate codeword k c is computed to replace the block. k c is defined as below.

$$ {k}_c=\left\lfloor \frac{2\times {k}_a+1\times {k}_b}{3}\right\rfloor $$
(4)

In Chang et al.’s method, they can embed just one bit secret data into each block compressed by SMVQ and the image quality is not very good and the hiding capacity is generally rather small.

2.4 Huang et al.’s method

In 2013, Huang et al. proposed a reversible data hiding method based on SMVQ [8] which enlarges the hiding capacity and improves the image quality than that of Chang et al.’s method [5]. As in the Chang et al.’s method, the first row blocks and the first column blocks compressed by VQ did not embed secret data.

2.4.1 The 1-bit embedding method

For the blocks compressed by SMVQ, the closest codeword k a is found from its state codebook and the closest codeword k b for codeword k a is found from the main codebook. If the secret data is “0”, the block is replaced with the codeword k a . Otherwise, the block is replaced with the approximate codeword ⌊(3 × k a  + 1 × k b )/4⌋.

2.4.2 The 2-bit embedding method

For the blocks compressed by SMVQ, the closest codeword k a is found from its state codebook and the closest codeword k b for codeword k a is found from the main codebook. If the secret data is “00”, the block is replaced with the codeword k a . If the secret data is “01”, the block is replaced with the approximate codeword ⌊(7 × k a  + 1 × k b )/8⌋. If the secret data is “10”, the block is replaced with the approximate codeword ⌊(6 × k a  + 2 × k b )/8⌋. Otherwise, the block is replaced with the approximate codeword ⌊(5 × k a  + 3 × k b )/8⌋.

3 The proposed method

In this section, a novel technique, called enhanced side-match vector quantization which combines the advantage of VQ and SMVQ by using a very small state codebook and a complementary state codebook, is proposed to achieve a high compression rate and large embedding capacity. To a certain extent, our proposed ESMVQ can overcome the large encoded distortion weakness of conventional SMVQ and the high bit rate weakness of conventional VQ. Then our proposed method compresses the image using ESMVQ to get ESMVQ compressed images and then embeds the secret data into the ESMVQ compressed indices to form a code stream CS. The code stream CS is transmitted to receiver. The secret data is extracted from code stream CS and the indices are recovered reversibly to reconstruct the ESMVQ compressed images. The general process of our proposed reversible data hiding method is shown in Fig. 2. The proposed enhanced side-match vector quantization is described in Section 3.1. Section 3.2 gives the proposed reversible data hiding method based on ESMVQ with its preprocessing, embedding and extracting processes in detail.

Fig. 2
figure 2

The general process of proposed reversible data hiding method

3.1 Enhanced side-match vector quantization

Although SMVQ can achieve a lower bit-rate than the conventional VQ with the same size of the main codebook, the image quality using SMVQ is generally much poorer than that using the conventional VQ. In this section, in order to achieve a higher image quality than conventional SMVQ, an enhanced side-match vector quantization is proposed to encode the vector by using the state codebook (SC) and its complementary state codebook (SCc). The relationship of the state codebook and its complementary state codebook in a sorted main codebook is shown in Fig. 3.

Fig. 3
figure 3

The state codebook and its complementary state codebook in a codebook

In ESMVQ strategy, the first row blocks and the first column blocks are encoded by conventional VQ as the seed blocks and the residual blocks are encoded in a raster scanning order using a state codebook or a complementary state codebook. Fig. 4 shows the diagram of seed blocks and residual blocks.

Fig. 4
figure 4

The diagram of seed blocks and residual blocks

For each input vector X i , ESMVQ first sorts the codewords according to the side-match distortion d sm in an ascending order and selects the first (N s  − 1) codewords to construct a state codebook and uses the other codewords to construct a complementary state codebook for the input vector X i .

Then ESMVQ finds the best-match codeword Y bm1 for vector X i in SC and calculates the distortion dis 1 between the input vector X i and codeword Y bm1. If the dis 1 is smaller than the pre-defined threshold TH dis , ESMVQ considers that the encoding quality of vector X i is high enough and encodes vector X i with the index of codeword Y bm1 in SC. Otherwise, ESMVQ goes to find the best-match codeword Y bm2 for vector X i in SCc and calculates the distortion dis 2 between input vector X i and codeword Y bm2. Then, ESMVQ compares these two distortions by eq. (5).

$$ \mathrm{diff}={\mathrm{dis}}_1\hbox{-} {\mathrm{dis}}_2 $$
(5)

If diff is smaller than the pre-defined threshold TH diff , ESMVQ also considers that the codeword Y bm1 is the closest codeword for the vector X i and encodes vector X i with the index of codeword Y bm1 in SC. Otherwise, ESMVQ encodes vector X i with the index of codeword Y bm2 in the complementary state codebook.

As the best-match codeword for vector X i is either Y bm1 or Y bm2, ESMVQ needs an indicator to indicate the best-match codeword is either Y bm1 or Y bm2. ESMVQ defines the size of the state codebook is (Ns − 1) and only selects the first (Ns − 1) smallest-distortion codewords as its state codebook. It means that the index of codeword in the state codebook are in binary representation from 0 to (Ns − 2) and the binary representation of (Ns − 1) as an indicator to indicate the encoded index value is Y bm2, then followed by the encoded index value Y bm2. For example, if Ns is equal to 4 (log2 Ns = 2), the indicator will be (11)2 in binary format. If the best-match codeword for vector X i is Y bm2, ESMVQ first sends the indicator (11)2 and then sends the encoded index value of Y bm2 in SCc to the receiver. If the best-match codeword for vector X i is Y bm1, ESMVQ only sends the encoded index value of Y bm1 in SC to the receiver. Taking the advantage of the complementary state codebook to find Y bm2, ESMVQ can achieve a much better image quality than conventional SMVQ at the low bit rate.

3.2 The proposed data hiding method

3.2.1 The preprocessing phase

During the preprocessing phase, the main task is to obtain the ESMVQ compressed index table T. The process of obtaining compressed cover image with ESMVQ compressed indices is given as follows:

  • Input: the original cover image I sized H × W and the codebook Y sized N.

  • Output: the ESMVQ index table T.

    1. Step 1

      Image I is partitioned into non-overlapping blocks with size of 4 × 4 pixels.

    2. Step 2

      The first row blocks and the first column blocks are encoded by conventional VQ and put the log2(N) -bit VQ index to the index table T.

    3. Step 3

      For the residual blocks, the state codebook Ns sized 4. Encode the block in a raster scanning order using the ESMVQ method and put the ESMVQ index to the index table T.

    4. Step 4

      Output the ESMVQ index table T.

3.2.2 The embedding phase

The secret data is embedded into the ESMVQ index table T obtained in the preprocessing phase. The secret data is embedded into the index encoded using the state codebook in our proposed method. For an index x encoded using the state codebook, assume its 2-bit binary representation is denoted as x 2, s-bit secret data sd will be embedded into it using the index modification operation which defined as follow.

$$ x{\hbox{'}}_2={x}_2\ll s+sd $$
(6)

where ≪ is the left shifting function. As the length of embedded index x is 2-bit, the length of final encoded index is m, where m is calculated as follow.

$$ \mathrm{m}=\left\{\begin{array}{l}2+s,\kern4em embedded\kern0.5em index\\ {}2+ \log {}_2(N),\kern1em non- embedded\kern0.5em index\end{array}\right. $$
(7)

where N is the size of main codebook Y.

The embedding process is described as below and the flowchart for the embedding process is shown in Fig. 5.

Fig. 5
figure 5

The flowchart for the embedding process

  • Input: the ESMVQ index table T and the secret data S.

  • Output: the code stream CS.

    1. Step 1

      For the index x is in the first row and the first column, put its log2(N) -bit binary representation x 2 to the code stream CS.

    2. Step 2

      For the residual indices, Read the next index x from the ESMVQ index table T.

    3. Step 3

      If the index x is encoded using the complementary state codebook, put 11||x 2 to the code stream CS, where x 2 is log2(N) -bit binary representation of x and “||” denotes concatenation operation.

    4. Step 4

      Otherwise, read next s-bit secret data sd from the secret data S and embed sd into the index x using the eq. (6). Put (2 + s) -bit binary representation x ' 2 to the code stream CS.

    5. Step 5

      Repeat the Step 1 to Step 4 until all ESMVQ indices are processed and output the code stream CS.

3.2.3 The decoding and extracting phase

In the decoding and extracting phase, the receiver can extract the secret data and recover the original ESMVQ indices, then reconstruct the ESMVQ compressed image. The blocks in the first row and the first column are reconstructed first using the table look-up technique in the main codebook. As the first 2-bit is different for the embedded index and non-embedded index, read the first 2-bit cs. If the cs equals to “11”, it means this is a non-embedded index. Otherwise, it means this is an embedded index. For the non-embedded index, the next log2(N) -bit cs is the original ESMVQ index. For the embedded index, the original ESMVQ index is cs and the next s-bit cs is secret data sd.

The extracting process is shown as follows:

  • Input: the code stream CS and the codebook Y sized N.

  • Output: the secret data S and the reconstructed ESMVQ compressed image.

    1. Step 1

      For the first row blocks and the first column blocks, read the log2(N) -bit binary representation x 2 from the code stream CS to reconstructed the block using the table look-up technique in the main codebook Y.

    2. Step 2

      For the residual blocks, reconstruct them in a raster scanning order.

    3. Step 3

      For the current block to be reconstructed, use its upper block U and left block L previously reconstructed to create its state codebook and its complementary state codebook .

    4. Step 4

      Read the next 2-bit code stream cs.

    5. Step 5

      If 2-bit code stream csequals to “11”, then read the next log2(N) -bit code stream cs from the code stream CS. Reconstructed the block using the table look-up technique in SCc.

    6. Step 6

      Otherwise, cs is the original ESMVQ index and the next s-bit cs is secret data sd. Put the secret data sd to the secret data S. Reconstructed the block using the table look-up technique in SC.

    7. Step 7

      Repeat Step 4 to Step 6 until all code stream is processed. Output the secret data S and the reconstructed ESMVQ compressed image.

4 Experimental results

Experiments are performed to demonstrate the performance of our proposed method. In our experiments, eight typical grayscale images are used as the test images shown in Fig. 6. Each test image is 512 × 512 pixels and each pixel has 256 Gy levels. Each test image is first partitioned into 16,384 non-overlapping blocks and the size of each block is 4 × 4 pixels. We test our proposed method using the codebooks with the size of 128, 256, 512 and 1,024 respectively. A pseudorandom number generator is used to generate a series of secret data which consist of 0 and 1 in binary format in the experiments.

Fig. 6
figure 6

Eight test images: (1) Lena, (2) Peppers, (3) Airplane, (4) Tiffany, (5) Toys, (6) Splash, (7) Lake, (8) Boat

We use three important criterions as the compressed image quality, the bit rate and embedding capacity to evaluate the performance of our proposed method.

The first criterion is the compressed image quality which is used to estimate distortion between the original cover image and the compressed image. The quality of the stego-image is estimated by the peak signal-to-noise-ratio (PSNR). The PSNR is defined as follow.

$$ MSE=\frac{1}{H\times W}{\displaystyle \sum_{i=1}^M{\displaystyle \sum_{j=1}^N{\left({x}_{i,j}-{\widehat{x}}_{i,j}\right)}^2}} $$
(8)
$$ PSNR=10\times \log \left(\frac{255^2}{MSE}\right) $$
(9)

where H and W are the height and width of an image. x i,j and \( {\widehat{x}}_{i,j} \) respectively denote the pixel value of the original cover image and compressed image. Basically, a higher PSNR means a better quality of the compressed image.

The second criterion is the bit rate (BR) which is used to evaluate the compression performance of the compression methods in the compression domain. The bit rate is to compare the length of the output code stream with the size of the original cover image. And it is defined as follow.

$$ BR=\frac{\left\Vert I\right\Vert }{H\times W} $$
(10)

where ‖I‖ represents the total length of the compressed code stream and H and W are the height and width of the original cover image, respectively. Generally, the smaller the bit rate is the better the compression is.

The third criterion is the embedding capacity which is evaluated by the hiding capacity (HC) and the embedding rate (ER). The hiding capacity shows how many secret bits can be embedded into a cover image. The embedding rate is defined as follows:

$$ ER=\frac{HC}{\left\Vert I\right\Vert } $$
(11)

The embedding rate shows that how many secret bits can be carried by each bit when the output code stream is transmitted. In general, larger hiding capacity and higher embedding rate indicate a better embedding performance.

Table 1 shows the compressed results of image Lena (without secret data) for different main codebook and state codebook among the conventional VQ, SMVQ ESMVQ. The main codebook sizes are 128, 256, 512 and 1,024. The size of state codebook Ns is 4, 8, 16 and 32 in SMVQ and ESMVQ respectively. In ESMVQ, there are two pre-defined thresholds of TH dis and TH diff which need to be confirmed. As the 30 dB is a typically acceptable value in lossy image compression and 30 dB is corresponding to the mean-square-error MSE of 65.025. The pre-defined threshold TH dis which corresponds to the sum square error for a block sized 4 × 4 is selected as 16 × 65.025. The pre-defined threshold TH dis is the threshold to guarantee the compressed image quality. The other per-defined threshold TH diff is to provide a tradeoff between the compressed image quality and the bit rate. The threshold TH diff is denoted as the 10 % of the threshold TH dis .

Table 1 The compressed results of image Lena (without secret data) for different main codebook and state codebook among VQ, SMVQ and ESMVQ

From Table 1, it can be found that our proposed ESMVQ which combines both the advantage of VQ and SMVQ has a good image quality while keeping a low bit rate. For example, the PSNR is 31.544 dB and the BR is 0.500 bpp in VQ and the PSNR is 31.338 dB and the BR is 0.262 bpp in ESMVQ when the main codebook size is 256. The PSNR is 28.184 dB with the BR of 0.253 bpp at Ns of 32 in SMVQ while the PSNR is 30.553 dB with the BR of 0.235 bpp at Ns of 4 in ESMVQ when the main codebook is 128. To achieve a high embedding capacity for the data hiding later, we set Ns equal to 4 for various main codebook sizes in our proposed method.

Table 2 gives the PSNR comparisons for different test images and main codebook sizes between VQ and ESMVQ when Ns is 4. From the Table 2, we can find that the average image quality difference between VQ and ESMVQ becomes larger as the main codebook size increases. The average image quality difference is from 0.067 dB to 0.494 dB. It shows that ESMVQ can keep a good image quality and the image quality of ESMVQ is close to that of VQ, especially in the case of smaller main codebook size.

Table 2 PSNR comparisons for different test images and main codebook sizes between VQ and ESMVQ (Ns = 4)

Table 3, 4, 5,6 show the results for various images when the main codebook size is 128, 256, 512 and 1,024 in our proposed method, respectively. The number s of the secret data for each compressed index belonging to the state codebook is defined as follows:

Table 3 The results for different test images in our proposed method (N = 128)
Table 4 The results for different test images in our proposed method (N = 256)
Table 5 The results for different test images in our proposed method (N = 512)
Table 6 The results for different test images in our proposed method (N = 1,024)
$$ s= \log {}_2(N)- \log {}_2(Ns)-1 $$
(12)

For example, when the main codebook size N equals 256 and Ns equals to 4, s is equal to 5. And it is for that the bit rate of the proposed method is close to that of VQ at the same main codebook size. For example, the average BR is 0.483 bpp in the proposed method which is close to 0.500 bpp in VQ when the main codebook size is 256.

For different main codebook sizes, the average BR of our proposed method is smaller than that of VQ. But the BR of some images in our proposed method is not smaller than that of VQ. For example, the average BR is 0.549 bpp in our proposed method which is smaller than 0.563 bpp in VQ. The BR of image Lake is 0.580 bpp which is larger than 0.563 bpp in VQ and the BR of image Boat is 0.563 bpp which is equal to 0.563 bpp in VQ.

The embedding capacity and the image quality increase as the main codebook size increases. For example, the average HC is 72,068 bits at the main codebook size of 512 which is larger than 61,329 bits at the main codebook size of 256 and the average ER is 0.503 at the main codebook size of 512 which is larger than 0.486 at the main codebook size of 256. The average PSNR is 31.533 dB at the main codebook size of 512 which is larger than 30.771 dB at the main codebook size of 256.

In Table 78, we compare our proposed method with Chang et al.’s method [5] and Huang et al.’s method [8]. In the two methods of Chang et al.’s [5] and Huang et al. [8], the fixed main codebook is 256 and the fixed state codebook is 128. Therefore, the main codebook size of 256 is used in our comparison experiments. Table 7 shows the comparison results for various test images between Chang et al.’s method [5] and our proposed method. Table 8 compares the results for various test images between Huang et al.’s method [8] and our proposed method. The left and middle of Table 8 show the results of Huang et al.’s method with 1-bit and 2-bit of secret data embedded into each block. The right of Table 8 shows the results of our proposed method.

Table 7 Comparison results for different test images between Chang et al.’s method [5] and our proposed method
Table 8 Comparison results for different test images between Huang et al.’s method [8] and our proposed method

In Chang et al.’s method [5], 1-bit secret data is embedded into each block. There are two data hiding methods which embed 1-bit or 2-bit secret data into each block in Huang et al.’s method [8], respectively. In our proposed method, 5-bit secret data is embedded into each compressed index belonging to the state codebook. Therefore, our proposed method has a larger HC and a higher ER than that of these two methods. Our proposed ESMVQ has good image quality because it combines the advantage of VQ and SMVQ. From the Table 7 and Table 8, it is clear that the average PSNR of our proposed method is 30.771 dB which is higher than 30.550 dB in Chang et al.’s method and higher than 30.581 dB and 30.439 dB in Huang et al.’s method.

From the Table 7 and Table 8, it is clearly found that our proposed method has a larger HC and a higher ER than that of these two methods. Compared with the method of Chang et al., the average HC of our proposed method is approximately 3.5 times as high as that of Chang et al.’s method. Similarly, the average ER of our proposed method is approximately 3.8 times as high as that of Chang et al.’s method. Compared with the method of Huang et al., which embed 1-bit secret data into each block, the average HC of our proposed method is approximately 3.5 times as high as that of Huang et al.’s method. Similarly, the average ER of our proposed method is approximately 3.8 times as high as that of Huang et al.’s method. Compared with the method of Huang et al., which embed 2-bit secret data into each block, the average HC of our proposed method is approximately 1.7 times as high as that of Huang et al.’s method. Similarly, the average ER of our proposed method is approximately 1.9 times as high as that of Huang et al.’s method. Therefore, our proposed method has a better performance in image quality, hiding capacity and embedding rate compared with the Chang et al.’s method and Huang et al.’s method.

In order to further prove that our proposed method has a better performance compared with Chang et al.’s method [5] and Huang et al.’s method [8], another comparison experiment is conducted in which we embed the same size of secret data as Chang et al.’s method [5] and Huang et al.’s method [8]. In this experiment, the secret data is not embedded any more if a certain size of secret data has been embedded. The experiment results are shown in Table 9 and Table 10 as below. In Table 9, we set the size of secret data to 16,129 bits which is the same as that of Chang et al.’s method [5]. In Table 2, we set the size of secret data to 32,258 bits which is the same as that of Huang et al.’s method with 2-bit of secret data embedded into each block.

Table 9 Comparison results for different test images between Chang et al.’s method and our proposed method under the same hiding capacity
Table 10 Comparison results for different test images between Huang et al.’s method and our proposed method under the same hiding capacity

In Table 9, it is clear that our proposed method has a better average image quality (30.771 dB) which is higher than that of Chang et al.’s method (30.550 dB). The average bit rate of our proposed method is 0.311 bpp which is much lower than that of Chang et al.’s method (0.438 bpp). Our proposed method also has a higher average embedding rate (0.201) compared with that of Chang et al.’s method (0.140).

In Table 10, it can be clearly found that the best average image quality is our proposed method (30.771 dB), followed by the 1-bit embedding method (30.581 dB) and the 2-bit embedding method (30.439 dB) in Huang et al.’s method [8]. The average bit rate of our proposed method is 0.372 bpp which is lower than that of Huang et al.’s method (0.438 bpp). The highest average embedding capacity is our proposed method (0.334), followed by the 2-bit embedding method (0.281) and the 1-bit embedding method (0.140) in Huang et al.’s method [8].

The experimental results in Table 9 and Table 10 can further demonstrate that our proposed method has a better image quality, a lower bit rate and a higher embedding rate compared with Chang et al.’s method [5] and Huang et al.’s method [8] at the same hiding capacity.

To further verify the superiority of our proposed method, we have conducted another two experiments to compare our proposed method with Lee et al.’s method [11] and Wang et al.’s method [19] in term of bit rate, hiding capacity and embedding rate. The main codebook is selected as 512 which is the same as that in Wang et al.’s method [19]. The first one is that the experiment is conducted using the 8 images shown in Fig. 6. The experimental results are listed in Table 11. The second one is that the experiment is conducted using 96 8-bit gray levels images sized 512 × 512 and 68 8-bit gray levels images sized 256 × 256 from CVG-UGR Image database [6] and the experimental results are listed in Table 12.

Table 11 Comparison results for different test images among Lee et al.’s method [11], Wang et al.’s method [19] and our proposed method
Table 12 Comparison average results for different image resolution among Lee et al.’s method [11], Wang et al.’s method [19] and our proposed method

In Table 11, it is clearly found that the best average bit rate is our proposed method (0.549 bpp), followed by Wang et al.’s method [19] (0.575 bpp) and next is Lee et al.’s method [11] (0.580 bpp). Also the largest average hiding capacity is our proposed method (72,068 bits), followed by Lee et al.’s method [11] (67,084 bits) and next is Wang et al.’s method [19] (52,404 bits). From Table 11, it is also clear that our proposed method has the best embedding rate (0.503) which is higher than that of Lee et al.’s method [11] (0.441) and Wang et al.’s method [19] (0.348). In Table 12, it is also clear that our proposed method has a lower bit rate, a higher hiding capacity and a higher embedding rate compared with Lee et al.’s method [11] and Wang et al.’s method [19] in the 512 × 512 resolution and 256 × 256 resolution. The experimental results in Table 11 and Table 12 demonstrate that our proposed method has a better performance in the bit rate, hiding capacity and embedding rate compared with the Lee et al.’s method [11] and Wang et al.’s method [19].

5 Conclusions

In this paper, a novel reversible data hiding method based on the enhanced side-match vector quantization is proposed to increase hiding capacity of secret data in images as well as to keep a high image quality. In our proposed method, we embed the secret data into the ESMVQ-compressed images. Because we encode the original cover image with a very small state codebook size of 4, the bit rate of compressed image is low and we can embed a large amount of secret data into the compressed index of image. The high compressed image quality is guaranteed by introducing the complementary state codebook at the same time. The experimental results show that the proposed reversible data hiding method has a large embedding capacity and a good image quality. The experimental results also show that our proposed method has a larger hiding capacity, higher embedding rate and better image quality than that of Chang et al.’s method [5] and Huang et al.’s method [8]. Additionally, our proposed method also has a better performance in terms of bit rate, hiding capacity and embedding rate compared with Lee et al.’s method [11] and Wang et al.’s method [19].