Next Article in Journal
V-Shaped Formation Control for Robotic Swarms Constrained by Field of View
Next Article in Special Issue
Towards Industrial Intrusion Prevention Systems: A Concept and Implementation for Reactive Protection
Previous Article in Journal
Sub-Pixel Chessboard Corner Localization for Camera Calibration and Pose Estimation
Previous Article in Special Issue
Privacy-Preserving Monotonicity of Differential Privacy Mechanisms
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

An Improved Product Code-Based Data Hiding Scheme

Department of Computer Science and Information Engineering, National Chi Nan University, Puli, Nantou 545, Taiwan
*
Author to whom correspondence should be addressed.
Appl. Sci. 2018, 8(11), 2119; https://doi.org/10.3390/app8112119
Submission received: 31 July 2018 / Revised: 22 October 2018 / Accepted: 25 October 2018 / Published: 1 November 2018
(This article belongs to the Special Issue Security and Privacy for Cyber Physical Systems)

Abstract

:
This paper explores the data hiding schemes which are based on the principle of matrix embedding. Under the same embedding rate, the efficiency of each data hiding scheme is evaluated by the metric of average embedding efficiency. In the literature, both the row-column embedding and the weight approximation embedding algorithms are sub-optimal solutions for the product code-based data hiding problem. For the former, it is still based on the concept of one-dimensional (1-D) toggle syndrome, and the concept of two-dimensional (2-D) toggle syndrome is directly adopted for the latter one. Data hiding with multiple embedding channels is the practice of hiding messages into hidden media many times. Here, two multi-channel embedding-based data hiding techniques—one is the 1-D toggle syndrome-based embedding scheme (1DTS-1), and the other is the improved weight approximation-based embedding scheme (2DTS-1), are presented. In the former, the proposed one-off decision technique is used to determine the locations of the required modification bits, and the amount of modification will be reduced through utilizing the characteristics of the linear code. With the technique of the former, in the latter, the amount of modification bits can be further reduced because that a toggle array with better structure is generated, which is more suitable for being assigned as the initial toggle array while applying the weight approximation approach. The experimental results show our proposed hybrid 1-D/2-D toggle syndrome-based embedding scheme (2DTS-1) has increased the embedding efficiency by 0.1149 when compared to the weight approximation embedding algorithm. Further, the embedding efficiency of the latter one can be further and significantly enhanced through the Hamming+1 technique.

1. Introduction

Data (or information) hiding is one kind of steganographic technique to embed the secret information into a cover host, such as an image. Usually, the naked eye cannot perceive any change when the image is modified slightly.
In 1998, Crandall [1] first introduced the idea of matrix embedding. The technique of matrix embedding was deeply studied in [2,3,4] by utilizing the characteristic of the strong algebraic structure of one-dimensional (1-D) linear code. Matrix embedding is also termed as syndrome coding and 1-D linear code is categorized as one kind of data hiding code [3,4].
The idea of product code-based data hiding was introduced in [5,6,7,8]. Basically, it can be considered as an extension of the previous works [1,2,3,4] by taking a cover matrix block, not a cover sequence, for embedding on each time. They divided the cover image into disjoint matrix blocks of (2y − 1) × (2x − 1) pixels and applying the 1-D linear code-based embedding algorithm in each row and the first 2x−1 − 1 columns. During each column embedding, it is very likely that the pixel modification to some row must be adjusted with more pixels changed to ensure the correct extraction of the secret information. Although, it will induce higher distortion in image quality, the amount of embedded information can be increased.
The product code is a two-dimensional (2-D) linear code that is composed of two 1-D linear codes. Although, the embedding concepts for both the 1-D and 2-D linear code-based data hiding schemes are similar in respectively adopting the technique of 1-D syndrome coding and 2-D syndrome coding, the embedding efficiency of the latter is much higher. However, due to the tremendous computational complexity in finding a coset leader [9,10] of a 2-D linear code, only sub-optimal approaches with moderate computational complexity were presented in the literature [5,6,7,8,11,12]. In [5,6,7,8,12], the authors still utilized the 1-D toggle syndrome coding technique to solve the product code-based data hiding problem, whereas the authors of [11] directly utilized the concept of the 2-D toggle syndrome and proposed a sub-optimal approach with better embedding efficiency and low computational complexity. Therefore, in essence, each of the schemes that were proposed in [5,6,7,8,12] is not considered to be one kind of product code-based data hiding scheme.
Data hiding with multiple embedding channels is the practice of hiding messages into hidden media many times. Usually, divide and conquer is a good technique to solve a hard problem. In this paper, instead of directly utilizing the concept of the 2-D toggle syndrome, eventually a hybrid 1-D/2-D toggle syndrome-based embedding scheme is proposed with good embedding efficiency and low computational complexity. We first propose a 1-D toggle syndrome-based scheme with two embedding channels. In this scheme, a one-off decision technique is presented to determine the locations of the required modification bits and the amount of modification will be reduced by utilizing the characteristics of the linear code. Next, to integrate the technique of [11] into our proposed scheme, we continue to propose another 1-D toggle syndrome-based scheme with three embedding channels. Since the resultant toggle array is more suitable for being assigned as the initial toggle array in the weighted approximation embedding scheme, thus a better solution is found. Further, there almost exists at least one bit 1 in each row of the toggle array of the proposed 1-D/2-D toggle syndrome-based embedding scheme. Hence, the embedding efficiency can be further and significantly enhanced when combined with the strategy of Hamming+1.
This paper is organized as follows. Section 2 briefly introduces the concept of matrix embedding. The product code-based data hiding schemes are reviewed in Section 3. The proposed scheme is presented in Section 4. Section 5 presents the proposed Scheme combined with the technique of Hamming+1. Experimental results are shown in Section 6. Some concluding remarks are given in Section 7. Finally, the proposed 1-D toggle syndrome-based embedding scheme is also listed in the Appendix A.

2. Matrix Embedding

Given a 1-D linear code (n, k), the secret message m = (m1, m2, …, mn-k) of n-k bits is hidden into the least significant bits (LSBs), denoted as x = (x1, x2, …, xn) of the original n image pixels. Due to the characteristic of the strong algebraic structure, the resultant fact is at most only one LSB needs to be modified among those n LSBs. Taking a (7, 4) binary systematic Hamming code with the generator polynomial 1 + x + x3 as the example, as shown in Figure 1. Table 1 is the standard array of the (7, 4) Hamming code.
First, calculate the 1-D syndrome s (= x × HT) and the 1-D toggle syndrome ts (= s m), where denotes the component-wise EXCLUSIVE OR (XOR) operation between s and m. Then, according to Table 1, find the coset leader e with the minimum Hamming weight of the coset to which ts belongs, that is e × HT = ts, and change x to y (= x e) to complete the data embedding. In the receiving end, the receiver can easily extract the message m by y × HT. Usually, the coset leader e for a 1-D linear code is called the optimal toggle sequence t, which is the optimal vector matrix that we are looking for to make the image pixels change as little as possible.

3. Product Code-Based Data Hiding

Two 1-D linear block codes C1 (n1, k1) and C2 (n2, k2) can be used to generate a 2-D (n1 × n2, k1 × k2) linear code (called product code), such that each codeword (called code array) is an array of size n2 × n1, as shown in Figure 2. After sequentially encoding the k2 rows of the k2 × k1 array of information bits (IB) by C1 to generate the array CR (Check on Rows), and the k1 columns of array IB are sequentially encoded by C2 to generate the array CC (Check on Columns). Then, the array CCH (Checks on Checks) can be obtained by performing either C1 encoding on the n2-k2 rows of array CC, or C2 encoding on the n1-k1 columns of array CR [13]. Note, the L-shaped parity check block that is the union of the arrays CC, CCH, and CR and is a function of array IB, denoted as P(IB). Take the (7, 4) Hamming code as the example. That is, n1 = n2 = 7 and k1 = k2 = 4, then a (49, 16) product code can be generated, and there are 33 parity check bits. For the (49, 16) product code, similar to Table 1, the size of the standard array is up to 233 × 216. Each element of the standard array is an array of size 7 × 7. There are 216 code arrays and 233 coset leaders in the standard array.

3.1. Trivial Solution

Using the (49, 16) product code for data hiding, the secret message of size 33 bits can be hidden into the cover array of 7 × 7 bits constructed by the LSB slicing of an array of 7 × 7 gray image pixels.
Let X be the cover array of 7 × 7 slicing bits, i.e., [xi,j]7×7. Similar to the partition of the code array of a product code, X is partitioned into four parts, XIB, XCC, XCCH, and XCR. The L-shaped block that is the union of XCC, XCCH, and XCR is denoted as XP, as shown in Figure 3a. The secret message with 33 bits is arranged as an L-shaped block M = (m1, m2, …, m11), where each mi (1 ≤ i ≤ 11) is an array of size 1 × 3, as shown in Figure 3b.

3.1.1. Embedding

Step 1:
Calculate the 2-D syndrome of X denoted as S(X) which equals P(XIB) XP, where denotes the element-wise EXCLUSIVE OR (XOR) operation between P(XIB) and XP.
Step 2:
Calculate the 2-D toggle syndrome TS, which equals S(X) M, as shown Figure 4a.
Step 3:
Attach the zero block of size 4 × 4 into the lower right corner of the toggle syndrome TS, as shown Figure 4b, to obtain a 7 × 7 toggle array T. That is, the syndrome of T denoted as S(T) equals TS.
Step 4:
Perform the element-wise XOR operation between X and T, i.e., X T = Y, to finish the embedding, as shown in Figure 4c.

3.1.2. Extracting

In the receiving end, once the 7 × 7 slicing bits (Y) of the stego image block is obtained, the secret message block M can be easily extracted by calculating the syndrome of Y, that is S(Y) = P(YIB) YP = M.
Theorem 1.
The syndrome of Y is exactly equal to the secret message block M.
Proof. 
Since S(Y) = S(X) S(T) and S(T) = P(TIB) TP = P(04×4) TP = TS, hence S(X) S(T) = S(X) TS = M, where TIB and TP respectively denote the IB and P parts of T; and the code array of a zero information array is a zero code array, that is the parity check part is a zero block.□

3.2. Optimal Solution

In Section 2, suppose the toggle syndrome ts = (011) and the toggle sequence t = (0110000) is constructed by directly appending the four information bits into ts, then the found toggle sequence t is not the coset leader e = (0000100). Further, in Table 1, we know the coset leader e is equal to the toggle sequence t plus the codeword (0110100), which is closest to t. Hence, the toggle array T found in Step 3 of Section 3.1.1 and illustrated in the form of Figure 4b is not a good solution. Usually, it is not a coset leader. Suppose we are allowed to sequentially add up to 216 code arrays of the (49, 16) product code into the toggle array T. Then, among those 216 resultant arrays, the one with the minimum Hamming weight is the coset leader, where the Hamming weight of a binary array is defined as the number of 1s in the array. Here, the found coset leader for a 2-D linear code is termed the optimal toggle array.
Since table lookup is impractical due to the issue that the size of the standard array for the (49, 16) product code is rather large, and finding the coset leader of the coset to which T belongs is a time-consuming process, so finding the sub-optimal approach is necessary.

3.3. Weight Approximation Embedding Scheme

Wang et al. [11] proposed a sub-optimal approach called the weighted approximation embedding scheme with low computational complexity to find a toggle array with smaller Hamming weight. The details of this scheme are outlined, as follows:
Step 0:
Initially, those 16 code arrays, each of which owns only one bit 1 in the IB part, are chosen and included in the set PO, as shown in Figure 5.
Step 1:
Sequentially add each code array in the set PO to T. Among those resultant arrays, let T′ be the resultant array with the smallest Hamming weight and T′ = c T for some code array c. If the Hamming weight of T′ is smaller than that of T, then replace T with T′, remove c from PO, and repeat Step 1. Otherwise, go to Step 2.
Step 2:
T is the found toggle array with a smaller Hamming weight.
Note, all the above three methods are categorized as the 2-D toggle syndrome-based embedding scheme, and the 2-D syndrome S(X) is the unique embedding channel with 33 bits in total in this kind of scheme.

4. An Improved Product Code-Based Data Hiding Scheme

Inspired by the ideas of [5,6] and [11], in this section, we eventually design a sub-optimal scheme having three embedding channels to find a better solution with low computational complexity.
First, we propose a pure 1-D toggle syndrome-based scheme (1DTS-1) with two embedding channels, as shown in the Appendix A. Based on the one-off decision technique that was proposed in 1DTS-1, we then propose a better sub-optimal scheme (2DTS-1) with three embedding channels. In 2DTS-1, there are two phases in dealing with the construction of the toggle array. In the first phase (Step 1~Step 5), based on the concept of 1-D toggle syndrome and the properties (Property 1 and the Property 2), a toggle array T′ with better structure is generated, which is more suitable for being assigned as the initial toggle array in the weighted approximation embedding scheme. In the second phase (Step 6), based on the Property 2 and the concept of 2-D toggle syndrome, the number of 1s in T′ can be further reduced through the technique of the weighted approximation embedding scheme to obtain the final toggle array T″.

4.1. Embedding

Step 1:
Calculate the syndromes of the last four rows in the cover array X, i.e., si = [xi+3,1 xi+3,2xi+3,7] × HT, i = 1~4, where (s1, s2, s3, s4) is the first embedding channel with 12 bits in total. The toggle syndrome tsi = si mi, i = 1~4. From Table 1, respectively, find the corresponding coset leaders ei (i.e., the toggle sequence ti), i = 1~4. The four toggle sequences constitute a 4 × 7 array with each column denoted as fi, i = 1~7. Denote [f4f5f6f7] as F.
Step 2:
Calculate the syndromes of the last four columns in X, i.e., si = [x1,i−1 x2,i−1x7,i−1] × HT, i = 5~8. ( s 5 T , s 6 T , s 7 T , s 8 T ) is the second embedding channel with 12 bits in total. The toggle syndrome tsi = si mi, i = 5~8.
Step 3:
Make the syndromes of the last four rows and the last four columns of the resultant stego array after embedding respectively equal m1, m2, m3, m4, and m5, m6, m7, m8. This can be done through Table 2 (instead of finding the coset leader) to find the toggle sequence ti (under the constraint the last four bits of ti and the four bits of fi−1 are equal) with its toggle syndrome equal to tsi, i = 5~8.
Step 4:
First, calculate the CCH part of the parity P(XIB F) denoted as P(XIB F)CCH, then we obtain the syndrome of size 3 × 3 which equals to P(XIB F)CCH XCCH. Let the three columns of the syndrome be denoted, respectively, as s i T , 9 ≤ i ≤ 11, where ( s 9 T , s 10 T , s 11 T ) is the third embedding channel with nine bits in total. Second, calculate the toggle syndrome t s i T , which equals to s i T m i T , 9 ≤ i ≤ 11. Third, those column matrices fi, i = 1~3, t i T , 5 i 8 , and t s i T , i = 9~11, constitute the toggle array T, as shown in Figure 6.
Step 5:
To reduce the number of 1s in T, first check the last four columns of T and whether there is more than one column with a Hamming weight in each column of greater than 2. If it does not exist, just skip this step. Otherwise, take the element-wise OR operation among those columns to obtain a new vector u. Then, using the lookup of Table 1, find a codeword c, which is closest to u in terms of minimal Hamming distance. Add (XOR operation) the codeword c to each of those columns. Then, it is very likely some of the rows of T have been changed. Let w be the induced non-zero vector with the non-zero component denoting the changed position of any changed row. From Table 1, find the coset leader e of the coset to which the vector w belongs. Hence, to keep the syndrome of the toggle array unchanged, we need to add e respectively to those changed rows. Suppose that the bit 1 is located in the i-th component of e, once codeword c is also added into the i-th column of T, then the syndrome of the new toggle array remains the same as T. Denote the new toggle array as T′. If the Hamming weight of T′ is not smaller than that of T, T′ is changed back to T.
Step 6:
Utilize the technique of weight approximation to further reduce the number of 1s in T′ to get the toggle array T″.
Step 7:
Perform X T″ = Y to finish the embedding.
Theorem 2.
The technique described in Step 5 can guarantee the syndrome of T′ will be the same as that of T.
Proof. 
In Step 5, first the task of adding e respectively to those changed rows can be easily accomplished by adding the codeword c into the i-th column of T; second, w e is a codeword. Then, the net vector added into any row or column of T is a codeword; hence, the syndrome remains unchanged.□
Suppose the probability of each secret bit with a value of 1 or 0 equals 1/2 (this can be done easily by encrypting the secret bit sequence with a pseudo-random bit sequence by the XOR operation). Whatever the probability of each cover bit 1 or 0, the probability of each toggle syndrome bit with the value of 1 or 0 will equal 1/2. That is, each coset leader will be evenly selected. Hence, in Figure 6, the last four rows of T (i.e., the four coset leaders) will most likely differ. That is, the last four bits of each column of the rightmost four columns in the toggle array T own at most one bit 1. Then, we have:
Property 1.
For each of the four toggle sequences t i T , 5 i 8 , in upright form, most of the bits 1 are concentrated in the top three bits. Hence, the resultant sequence constructed by performing the component-wise OR operation on the toggle sequences with the Hamming weight greater than 2 is almost the same as each of the original toggle sequences. Therefore, the number of 1s in T can be reduced almost at each time through the technique described in Step 5 and most of the bits (1s) are located in the upper left corner of 3 × 3 sub-array of the new toggle array T′.
Further, due to the property 2, while applying the technique of weight approximation to the toggle array T′, the number of 1s in T′ can be further reduced.
Property 2.
For each of the 16 chosen code arrays shown in Figure 5, the bits in the upper left corner of 3 × 3 sub-array of the code array have a higher density of 1.

4.2. Extracting

The procedure of extraction is the same as that in Section 3.2.

4.3. Example

Given X and M, and they are respectively as follows:
[ 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 ] , [ 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 ] .

4.3.1. Embedding

Step 1:
From (s1, s2, s3, s4) = (010, 011, 010, 000) and (m1, m2, m3, m4) = (011, 111, 101, 011), we obtain (ts1, ts2, ts3, ts4) = (s1, s2, s3, s4) (m1, m2, m3, m4) = (001, 100, 111, 011). Hence, (e1, e2, e3, e4) = (0010000, 1000000, 0000010, 0000100). Then,
[ f 1 f 2 f 3 f 4 f 5 f 6 f 7 ] = [ 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 ]   and   F = [ 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 ] .
Step 2:
Since (s5, s6, s7, s8) = (001, 000, 010, 111) and (m5, m6, m7, m8) = (100, 010, 110, 101), therefore (ts5, ts6, ts7, ts8) = (s5, s6, s7, s8) (m5, m6, m7, m8) = (101, 010, 100, 010).
Step 3:
For each i, 5 ≤ i ≤ 8, given tsi and fi−1, ti can be obtained respectively through the lookup in Table 2 as follows: t5 = [1010000], t6 = [1110001], t7 = [0110010], t8 = [0100000].
Step 4:
XIB, XIB F, P(XIB F)CCH, XCCH, and P(XIB F)CCH XCCH are respectively as follows:
[ 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 ] ,   [ 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 ] ,   [ 1 1 1 1 1 1 1 0 1 ] ,   [ 0 1 0 1 1 0 0 0 1 ] ,   [ 1 0 1 0 0 1 1 0 0 ]
Since (s9, s10, s11) = (101, 000, 110) and (m9, m10, m11) = (100, 011, 000), therefore (ts9, ts10, ts11) = (s9, s10, s11) (m9, m10, m11) = (001, 011, 110).
Now,
T = [ 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 ] .
Step 5:
For the last four columns of T, the fifth and sixth columns, of each has a Hamming weight of greater than 2. Take the element-wise OR operation between both columns, we obtain u = (1110011). c = (1110010) is the closest codeword to u. Then, c (in the form of column vector) is added sequentially to the fifth and sixth columns. This is equivalent to vector w = (0000110) being added implicitly into the first, second, third, and sixth rows. The coset leader e = (1000000) of the coset to which w belongs is determined and the bit 1 is located in the first component. Therefore, the codeword c is also added to the 1st column of T. Now, the toggle array T is updated as T′ with a smaller Hamming weight.
T = [ 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 ]
Note
S ( T ) = P ( T IB ) T P = [ 1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 ] [ 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 ] = [ 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 ] .
S ( T ) = P ( T IB ) T P = [ 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 ] [ 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 ] = [ 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 ] .
Hence, S(T) = S(T′) = TS, where
S ( X ) = P ( X IB ) X P = [ 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 ] [ 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 ] = [ 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 ]
and
T S = S ( X ) M = [ 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 ] .
Step 6:
T′ is further refined as T″ by adding the 4th code array in the first round to the toggle array T′ while combining the technique of the weight approximation embedding scheme. In the second round, there are no code arrays remaining in set PO, which can be further used to refine the toggle array T″.
T = [ 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 ] [ 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] = [ 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 ]
Step 7:
Finally, the stego array Y is obtained by adding T″ to X.

4.3.2. Extracting

Y, P(YIB), and S(Y), i.e., message M are respectively as follows:
[ 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 ] , [ 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 ] , [ 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 ] .

5. Proposed Scheme Combined with Hamming+1

Zhang et al. [14] proposed the Hamming+1 concept in 2007 to increase the embedding rate and the embedding efficiency. For the Hamming code (2t − 1, 2tt − 1) with the strategy of Hamming+1, through checking (1a) and (1b), the secret message m = (m1, m2, …, mt+1) of t + 1 bits can be hidden into 2t pixels of that pixel values equal ( p 1 , , p 2 t ) , and at most, one pixel value will be changed by increasing or decreasing one:
[ m 1 , , m t ] = [ LSB ( p 1 ) ,   LSB ( p 2 ) ,   ,   LSB ( p 2 t 1 ) ] × H T
m t + 1 = SLSB ( p 1 ) SLSB ( p 2 ) SLSB ( p 2 t 1 ) LSB ( p 2 t )
where LSB(.) and SLSB(.) respectively represent the first and the second LSB slicing of the pixel value, and represents the bit-wise exclusive-or operation. When only (1a) does not hold, the lowest bit of a certain pixel value pi needs to be changed to make (1a) hold, where 1 ≤ i ≤ 2t − 1, and the status of (1-2) is not affected. When only (1b) does not hold, the lowest bit of the pixel value p 2 t needs to be changed. When neither of (1a) and (1b) hold, once a certain pixel value pi, 1 ≤ i ≤ 2t − 1, is increased or decreased by one, then (1a) and (1b) hold simultaneously. Here, t = 3.
Suppose the proposed scheme introduced in the previous section allows for modification to the other bit of the pixel. We consider the block of 7 × 8 pixels formed by adding one more pixel for each row of the original 7 × 7 block. For the 7 × 8 block, the Hamming+1 technique can be used to let each row hide one more secret bit and the overall distortion is usually not increased, that is the value of the new pixel is unchanged.
Let the additional seven secret bits be denoted as (m1, m2, …, m7). Let PX be the cover array of 7 × 8 pixels, i.e., [pxi,j]7×8, where 1 ≤ i ≤ 7 and 1 ≤ j ≤ 8. Let the second LSB of each pixel in the first seven columns of PX be denoted as sxi,j, and the LSB of each pixel in the last column of PX be denoted as xi,8, where 1 ≤ i ≤ 7 and 1 ≤ j ≤ 7. Let PY be the stego array of 7 × 8 pixels, i.e., [pyi,j]7×8, where 1 ≤ i ≤ 7 and 1 ≤ j ≤ 8. Let the second LSB of each pixel in the first seven columns of PY be denoted as syi,j, and the LSB of each pixel in the last column of PY be denoted as yi,8, where 1 ≤ i ≤ 7 and 1 ≤ j ≤ 7.
According to the toggle array T″ that is described in step 6 of the embedding process in Section 4.1, the non-zero element of the toggle array T″ implies the LSB of the corresponding pixel must be changed and its second LSB can also be changed simultaneously by increasing or decreasing the pixel value by one if necessary. Hence, we form Equation (2).
z i = s x i , 1 s x i , 2 s x i , 7 x i , 8 ,   1 i 7 .
(z1, z2, …, z7) is the fourth embedding channel which can be used to embed another seven secret bits.
<Embedding>
  For i = 1 to 7
   If (there exists at least one bit 1 in the row i of T″)
    If (zi and mi are not equal)
        randomly choose a pixel, said pi,k that must be changed //suppose we choose the first one
  If (LSB(pi,k)==1) pi,k = pi,k + 1
  Else pi,k = pi,k − 1
  mark the pixel
  Else
     If (zi and mi are not equal)
  change the LSB of pi,8
  For i = 1 to 7
     For j = 1 to 7
  If (T″ij==1) and (pi,j is not marked) // T″ijdenotes the element of i-th row and j-th column of T″
change the LSB of pi,j
<Extracting>
Step 1:
(m1, m2, …, m11) is extracted by the same extracting process of Section 4.2.
Step 2:
m i = s y i , 1 s y i , 2 s y i , 7 y i , 8 ,   1 i 7 .
Example 1.
The additional seven secret bits (m1, m2, …, m7) = (0, 0, 1, 0, 0, 1, 0). The cover array of 7 × 8 pixels, the array of LSB slicing bits for the last column of PX, and the array of SLSB slicing bits for the first seven columns of PX are respectively as follows:
PX = [ 80 81 82 82 83 80 81 81 81 81 80 81 81 81 82 82 80 80 81 81 81 81 82 82 81 80 81 84 84 83 84 84 81 81 82 84 84 84 85 85 80 80 82 83 83 83 84 83 81 81 82 83 82 82 84 83 ] , X 8 = [ 1 0 0 0 1 1 1 ] ,   SX = [ 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 ] .
<Embedding>
From Equation (2), we have (z1, z2, …, z7) = (0, 1, 1, 1, 0, 1, 1). Since m2z2, m4z4, and m7z7, so the three pixels p2,2, p4,1, and p7,5 are marked; and p2,2 = p2,2 + 1, p4,1 = p4,1 + 1, and p7,5 = p7,5 − 1. Then, according to the toggle array T″, the LSBs of the other pixels are modified accordingly. Further, there exists at least one bit 1 in each row of T″, so all of the pixel values in the last column of PX do not need to be changed. Now, we have
PY = [ 80 81 82 83 ¯ 83 81 ¯ 80 ¯ 81 81 82 = 80 81 81 81 82 82 80 81 ¯ 81 80 ¯ 81 81 82 82 82 = 80 81 84 84 83 85 ¯ 84 80 ¯ 81 82 84 84 84 85 85 81 ¯ 80 82 83 82 ¯ 83 84 83 81 81 82 83 81 = 82 84 83 ] .
<Extracting>
Step 1: From message block M of Section 4.3.2, (m1, m2, m3, m4, m5, m6, m7, m8, m9) = (011, 111, 101, 011, 100, 010, 110, 101, 100, 011, 000).
Step 2: From Equation (3), the additional secret bit vector (m1, m2, …, m7) = (0, 0, 1, 0, 0, 1, 0) is obtained.
Property 3.
Usually, there is at least one bit 1 in each row of toggle array T′′ obtained in the proposed 2DTS-1 scheme, hence the additional cover pixels don’t need to be modified.

6. Experimental Results

In the experiment, each embedding scheme was performed for a total of 1 million times. At each time, 49 (or 56) LSB slicing bits, 49 SLSB slicing bits, and 33 (or 40) secret message bits were pseudo-randomly generated.
Let R be the embedding rate (R = 33/49 = 0.673) defined by the number of embedding bits per pixel (bpp) and Ma be the expected number of changed bits per embedding. Hence, the average modification for each bit denoted as D equals Ma/49. Then, the embedding efficiency α defined as the expected hidden bits per embedding modification equals R/D, and the PSNR (Peak Signal to Noise Ratio) equals 10 × log10(2552/D).

6.1. Computational Complexity

For the proposed 1-D Toggle Syndrome-based embedding scheme (1DTS-1) shown in the Appendix A.1, Table 3 shows the average number of different row combinations, that is the average number of times that the loop in Step 4 will run. If all of the row combinations are considered in Step 4, then there will be C 2 N + C 3 N + + C N N different row combinations and a more complicated scheme denoted as 1DTS-2 will have about one more loop than 1DTS-1 to get a gain of about 4 percent in embedding efficiency.
For the proposed hybrid 1-D/2-D Toggle Syndrome-based embedding scheme (2DTS-1) that is presented in Section 4, Table 4 shows the average number of different row combinations that is the average number of times the Step 5 of Section 4.1 will perform. Similar to the 1DTS-2 scheme (here, N [2…4]), if all kinds of combination are considered, then a more complicated scheme denoted as 2DTS-2 will have about two times the computational complexity of 2DTS-1. However, the gain in the embedding efficiency is only 0.0227. Thus, 2DTS-1 is preferred and the primary scheme with good embedding efficiency and low computational complexity.

6.2. Performance

In Table 5, except the last solution, the embedding rate for each solution is equal to 33/49 (≈0.6735) for fair comparison. In the original row-column scheme [5], after embedding in each row, only the first three columns are further used to embed data, whereas we adopt the first four columns in our implementation of [5] to enhance the embedding rate, but with larger distortion. The resultant algorithm is termed as Row-Column. Further, the one-off decision technique proposed in Step 4 of Appendix A.1.1 is used to reduce the distortion and the resultant algorithms are respectively termed as 1DTS-1 and 1DTS-2. In the original row-column scheme, R and D respectively equal 30/49 (≈0.6122) and 0.212 for x = y = 3. When x = 2 and y = 8, R and D respectively equal about 0.6771 and 0.252. The performance in terms of embedding efficiency for this scheme and 1DTS-2 are close to each other. For the former, they divided the pixels of cover image into disjoint matrix blocks of skew and large size 255 × 3, whereas matrix block of small size 7 × 7 is adopted in the latter one.
From the results of Table 5, the embedding efficiency of the 2-D or hybrid 1-D/2-D Toggle Syndrome-based embedding scheme is much higher than that of the 1-D Toggle Syndrome-based embedding scheme. Hence, the former one is preferred. Our proposed scheme (2DTS-1) reduces the average number of modification bits per embedding by 0.4938 when compared to [11]. That is, the average number of hidden bits per embedding modification is increased by 0.1149. Further, due to Property 3, the embedding efficiency can be significantly enhanced when combined with the strategy of Hamming+1.

6.3. Practical Examples

The secret image shown in Figure 7 is independently embedded into six cover images that are respectively shown in Figure 8 by 2DTS-1, and the stego images are shown in Figure 9. The embedding rate equals 0.6685 bpp and the PSNR values of all stego images are around 54.39 dB, as shown in Table 6.

7. Conclusions

For the product code-based data hiding scheme, in constructing a toggle array, although the optimal solution can be obtained by directly finding the corresponding coset leader for a 2-D toggle syndrome in 2-D linear codes, the computational complexity is rather tremendous. Usually, it is infeasible. Instead of only utilizing the concept of 2-D toggle syndrome to find the globally optimal solution, we propose a sub-optimal solution with reasonable computational complexity by utilizing the concepts of 1-D toggle syndrome and 2-D toggle syndrome.
First, we utilize the concepts of 1-D toggle syndrome and the algebraic structure of 1-D linear code to build a rough toggle array T. Second, the proposed one-off decision technique is used to reduce the number of 1s in T in order to obtain a new toggle array T′. Finally, due to the property of the structure of T′, it is more suitable for applying the strategy of the weighted approximation embedding scheme (2-D toggle syndrome-based) to further refine the toggle array.

Author Contributions

W.-R.Z. conceived and performed the experiments; Y.-M.H. conceived, validated, and wrote the paper.

Funding

This research is funded by the National Science Council, Taiwan, under Grant MOST 104-2221-E-260-007.

Conflicts of Interest

The authors declare no conflict of interest.

Appendix A

The secret message M with 33 bits is arranged as 11 groups, m1, m2, …, m11, where each mi (1 ≤ i ≤ 11) is an array of size 1 × 3.

Appendix A.1. 1-D Toggle Syndrome-based Embedding Scheme (1DTS-1)

Appendix A.1.1. Embedding

Step 1:
Calculate the syndromes of the seven rows in X, i.e., si = [xi,1 xi,2xi,7] × HT, i = 1~7, where (s1,s2,s3,s4,s5,s6,s7) is the first embedding channel with 21 bits in total. The toggle syndrome tsi = si mi, i = 1~7.
Step 2:
Calculate the syndromes of the first four columns in X, i.e., si = [x1,i−7 x2,i−7x7,i−7] × HT, i = 8~11. ( s 8 T , s 9 T , s 10 T , s 11 T ) is the second embedding channel with 12 bits in total. The toggle syndrome tsi = si mi, i = 8~11. From Table 1, respectively find the corresponding coset leaders ei (i.e., the toggle sequence ti), i = 8~11. The four toggle sequences (placed in an upright form) constitute a 7 × 4 array with each row denoted as fi, i = 1~7.
Step 3:
Make the syndromes of the seven rows and the first four columns of the resultant stego array after embedding respectively equal m1, m2, m3, m4, m5, m6, m7, and m8, m9, m10, m11. For the toggle sequence ti, i = 1~7, instead of finding the coset leaders of the cosets to which tsi, i = 1~7, respectively belongs, they are found by the lookup of Table A1 with the rule that the first four bits of ti and the four bits of fi are equal. Those seven toggle sequence ti, i = 1~7, constitute a toggle array T of size 7 × 7.
// The following proposed one-off decision technique is used to reduce the number of 1s in T.
Step 4:
To reduce the number of 1s in T, first check the seven rows of T and whether there is more than one row with a Hamming weight in each row of greater than 2. If it does not exist, jump out to the next step. Otherwise, suppose there are N rows (N [2…7]), each of which has a Hamming weight greater than 2, and two rows are chosen randomly at a time. Hence, there are C 2 N different row combinations. For each of those row combinations, do:
Take the component-wise OR operation among those rows to obtain a new vector u. Then, utilizing the lookup of Table 1, find a codeword c which is closest to u in terms of minimal Hamming distance. Add sequentially the codeword c to each of those rows. Then, it is very likely some of the first four columns of T have been changed. Let w be the induced non-zero vector with the non-zero component denoting the changed position of any changed column. From Table 1, find the coset leader e of the coset to which the vector w belongs. Hence, to keep the syndromes unchanged for the first four columns of the toggle array, we need to add e respectively to those changed columns. Suppose the bit 1 is located in the i-th component of e, hence once codeword c is also added into the i-th row of T, then all of the syndromes of the seven rows and the first four columns of the new toggle array remain the same as T. Denote the new toggle array as T′.
Among those new toggle arrays T′s found in the above loop, choose the new toggle array denoted as T m i n with the minimum Hamming weight. If the Hamming weight of T m i n is smaller than that of T, replace T with T m i n .
Step 5:
Perform the element-wise XOR operation between X and T to get the stego array Y, i.e., Y= X T.

Appendix A.1.2. Extracting

In the receiving end, once the 7 × 7 slicing bits (Y) of the stego image block is got, the secret messages m1, m2, m3, m4, m5, m6, m7, and m8, m9, m10, m11 can be extracted easily by respectively calculating the syndromes of the seven rows of Y and the first four columns of Y.

Appendix A.2. Example

Given the same X and M show in Section 4.3, but here M is not arranged as a L-shaped block.

Appendix A.2.1. Embedding

Step 1:
From (s1, s2, s3, s4, s5, s6, s7) = (100, 100, 011, 010, 011, 010, 000) and (m1, m2, m3, m4, m5, m6, m7) = (011, 111, 101, 011, 100, 010, 110), we obtain (ts1, ts2, ts3, ts4, ts5, ts6, ts7) = (111, 011, 110, 001, 111, 000, 110).
Step 2:
From (s8, s9, s10, s11) = (010, 000, 111, 001) and (m8, m9, m10, m11) = (101, 100, 011, 000), we have (ts8, ts9, ts10, ts11) = (111, 100, 100, 001). Hence, (t8, t9, t10, t11) = (e8, e9, e10, e11) = (0000010, 1000000, 1000000, 0010000). Then,
[ f 1 T f 2 T f 3 T f 4 T f 5 T f 6 T f 7 T ] = [ 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 ]
Step 3:
For each i = 1~7, given tsi and fi, ti can be obtained respectively through the lookup in Table A1 as follows: t1 = [0110110], t2 = [0000100], t3 = [0001000], t4 = [0000111], t5 = [0000010], t6 = [1000110], t7 = [0000101]. Now,
T = [ 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 ] .
Step 4:
For the seven rows of T, the first, forth, and sixth rows, each of which has a Hamming weight greater than 2. Suppose we choose the first and forth rows, take the element-wise OR operation between both rows, we obtain u = (0110111). c = (0010111) is the closest codeword to u. Then, c is added sequentially to the first and forth rows. This is equivalent to vector w = (1001000) being added implicitly into the 3rd, 5th, 6th, and 7th columns. The coset leader e = (0100000) of the coset to which w belongs is determined and the bit 1 is located in the second component. Therefore, the codeword c is also added to the 2nd row of T. Now, the toggle array T is updated as T′ with smaller Hamming weight.
T = [ 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 ]
Step 5:
Finally, the stego array Y is obtained by adding T′ to X.
Y = [ 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1 ]

Appendix A.2.2. Extracting

The syndromes of the seven rows of Y and the first four columns of Y can be obtained respectively as (011, 111, 101, 011, 100, 010, 110) and (101, 100, 011, 000).
Table A1. Toggle sequence ti, i = 1~7.
Table A1. Toggle sequence ti, i = 1~7.
fitsi
000001010011100101110111
000000000000000111000001100001000000110000000100001010000010
000100011010001010000111000010010001011000110000010000001111
001000101110010000001010000100110010001001011000100100010101
001100110100011101001100100111100011100001101100111110011000
010001000110100100010000001001110100101010001001001100100001
010101011100101001010110101010100101000010111101010110101100
011001101000110011011011101100000110010011010101100010110110
011101110010111110011101001111010111111011100001111000111011
100010001101000001100010110000101000000100011110000111000100
100110010111001100100100010011111001101100101010011101001001
101010100011010110101001010101011010111101000010101001010011
101110111001011011101111110110001011010101110110110011011110
110011001011100010110011011000011100011110010011000001100111
110111010001101111110101111011001101110110100111011011101010
111011100101110101111000111101101110100111001111101111110000
111111111111111000111110011110111111001111111011110101111101

References

  1. Crandall, R. Some notes on Steganography. Posted on Steganography Mailing List. 1998. Available online: http://dde.binghamton.edu/download/Crandall_matrix.pdf (accessed on 30 October 2018).
  2. Westfeld, A. F5—A steganographic algorithm. In Proceedings of the 4th International Workshop on Information Hiding (IHW’01), Pittsburgh, PA, USA, 25–27 April 2001; Volume 2137, pp. 289–302. [Google Scholar]
  3. Bierbrauer, J.; Fridrich, J. Constructing good covering codes for applications in steganography. In Transactions on Data Hiding and Multimedia Security III; Springer: Berlin/Heidelberg, Germany, 2008; Volume 4920, pp. 1–22. [Google Scholar]
  4. Zhang, W.; Li, S. A coding problem in steganography. Des. Codes Cryptogr. 2008, 46, 68–81. [Google Scholar] [CrossRef]
  5. Rifa-Pous, H.; Rifa, J. Product perfect codes and steganography. Dig. Signal Process. 2009, 19, 764–769. [Google Scholar] [CrossRef] [Green Version]
  6. Zhao, Z.; Gao, F. An improved steganographic method of product perfect codes. In Proceedings of the IEEE International Conference on Signal Processing, Communications and Computing (ICSPCC), Xi’an, China, 14–16 September 2011. [Google Scholar]
  7. Rifa-Pous, H.; Rifa, J.; Ronquillo, L. Perfect Z2Z4-linear codes in steganography. February 2010. Available online: https://arxiv.org/pdf/1002.0026.pdf (accessed on 30 October 2018).
  8. Rifa, J.; Ronquillo, L. Product Perfect Z2Z4-linear codes in steganography. In Proceedings of the 2010 International Symposium on Information Theory and its Applications, Taiwan, 17–20 October 2010; pp. 696–701. [Google Scholar]
  9. Borges, J.; Fernandez, C.; Pujol, J.; Rifa, J.; Villanueva, M. Z2Z4-linear codes: generator matrices and duality. Des. Codes Cryptogr. 2010, 54, 167–179. [Google Scholar] [CrossRef]
  10. Rifa, J.; Zinoviev, V.A. New completely regular q-ary codes based on Kronecker products. IEEE Trans. Inf. Theory 2010, 56, 266–272. [Google Scholar] [CrossRef]
  11. Wang, J.J.; Chen, H.; Chang, W.W. Binary data hiding using product code with sub-optimal algorithm. In Proceedings of the National Symposium on Telecommunications, Taiwan, 3–4 December 2010. [Google Scholar]
  12. Zhang, L.; Li, H. A product code in steganography with improved embedding rate. In Proceedings of the 2016 IEEE Information Technology, Networking, Electronic and Automation Control Conference, Chongqing, China, 20–22 May 2016; pp. 246–250. [Google Scholar]
  13. Lin, S.; Costello, D.J. Error Control Coding: Fundamental and Applications; Pearson Prentice Hall: Upper Saddle River, NJ, USA, 2004. [Google Scholar]
  14. Zhang, W.; Wang, S.; Zhang, X. Improving embedding efficiency of covering codes for applications in steganography. IEEE Commun. Lett. 2007, 11, 680–682. [Google Scholar] [CrossRef]
Figure 1. (a) Generator matrix G; and, (b) Parity check matrix H of a (7, 4) Hamming code.
Figure 1. (a) Generator matrix G; and, (b) Parity check matrix H of a (7, 4) Hamming code.
Applsci 08 02119 g001
Figure 2. Code array of size n2 × n1 for an (n1 × n2, k1 × k2) product code.
Figure 2. Code array of size n2 × n1 for an (n1 × n2, k1 × k2) product code.
Applsci 08 02119 g002
Figure 3. (a) XP part of the cover array X (b) Secret message block M.
Figure 3. (a) XP part of the cover array X (b) Secret message block M.
Applsci 08 02119 g003
Figure 4. (a) Toggle syndrome TS (b) Toggle array T (c) Stego array Y.
Figure 4. (a) Toggle syndrome TS (b) Toggle array T (c) Stego array Y.
Applsci 08 02119 g004
Figure 5. 16 chosen code arrays of the (49, 16) product code.
Figure 5. 16 chosen code arrays of the (49, 16) product code.
Applsci 08 02119 g005
Figure 6. Toggle array T.
Figure 6. Toggle array T.
Applsci 08 02119 g006
Figure 7. Secret image Finger (148 × 148).
Figure 7. Secret image Finger (148 × 148).
Applsci 08 02119 g007
Figure 8. Cover images (512 × 512): Baboon, Boat, Cameraman, Goldhill, Lena, and Peppers.
Figure 8. Cover images (512 × 512): Baboon, Boat, Cameraman, Goldhill, Lena, and Peppers.
Applsci 08 02119 g008
Figure 9. Stego images (512 × 512): Baboon, Boat, Cameraman, Goldhill, Lena, and Peppers.
Figure 9. Stego images (512 × 512): Baboon, Boat, Cameraman, Goldhill, Lena, and Peppers.
Applsci 08 02119 g009
Table 1. The standard array of size 23 × 24 for a (7, 4) Hamming code.
Table 1. The standard array of size 23 × 24 for a (7, 4) Hamming code.
Syndrome
Coset Leader
0000000000 1101000 0110100 1011100 1110010 0011010 1000110 0101110 1010001 0111001 1100101 0001101 0100011 1001011 0010111 1111111
1001000000 0101000 1110100 0011100 0110010 1011010 0000110 1101110 0010001 1111001 0100101 1001101 1100011 0001011 1010111 0111111
0100100000 1001000 0010100 1111100 1010010 0111010 1100110 0001110 1110001 0011001 1000101 0101101 0000011 1101011 0110111 1011111
0010010000 1111000 0100100 1001100 1100010 0001010 1010110 0111110 1000001 0101001 1110101 0011101 0110011 1011011 0000111 1101111
1100001000 1100000 0111100 1010100 1111010 0010010 1001110 0100110 1011001 0110001 1101101 0000101 0101011 1000011 0011111 1110111
0110000100 1101100 0110000 1011000 1110110 0011110 1000010 0101010 1010101 0111101 1100001 0001001 0100111 1001111 0010011 1111011
1110000010 1101010 0110110 1011110 1110000 0011000 1000100 0101100 1010011 0111011 1100111 0001111 0100001 1001001 0010101 1111101
1010000001 1101001 0110101 1011101 1110011 0011011 1000111 0101111 1010000 0111000 1100100 0001100 0100010 1001010 0010110 1111110
Table 2. Toggle sequence ti, i = 5~8.
Table 2. Toggle sequence ti, i = 5~8.
f i 1 T tsi
000001010011100101110111
000000000000010000010000001100001000000101000011000001110000
000110100011000001111000111000010010001000000101100010100001
001011100101100010101001010000100110010010001000100100000010
001101000110110011000001100100111100011111001110000111010011
010001101000100100001010000001001110100110010010101001000100
010111001011110101100010110101010100101011010100001010010101
011010001101010110110011011101100000110001011001001100110110
011100101110000111011011101001111010111100011111101111100111
100011010001111000100100010110000101000011100000010000011000
100101110010101001001100100010011111001110100110110011001001
101000110100001010011101001010101011010100101011110101101010
101110010111011011110101111110110001011001101101010110111011
110010111001001100111110011011000011100000110001111000101100
110100011010011101010110101111011001101101110111011011111101
111001011100111110000111000111101101110111111010011101011110
111111111111101111101111110011110111111010111100111110001111
Table 3. Comparisons of computational complexity between 1DTS-1 and 1DTS-2.
Table 3. Comparisons of computational complexity between 1DTS-1 and 1DTS-2.
1-D Toggle Syndrome-Based Embedding SchemeThe Average Number of Different Row Combinationsα
1DTS-1 (with C 2 N different combinations)2.14542.5744
1DTS-2 (with C 2 N + C 3 N + + C N N different combinations)3.15292.6767
Table 4. Comparison of computational complexity between 2DTS-1 and 2DTS-2.
Table 4. Comparison of computational complexity between 2DTS-1 and 2DTS-2.
1-D/2-D Toggle Syndrome-Based Embedding SchemeThe Average Number of Different Row Combinationsα
2DTS-1 (with only one combination)0.46752.8261
2DTS-2 (with C 2 N + C 3 N + + C N N different combinations)0.84952.8488
Table 5. Comparison of embedding efficiency among all schemes.
Table 5. Comparison of embedding efficiency among all schemes.
Embedding SchemesRMaDαAverage PSNR (dB)
1-D Toggle Syndrome-basedRow-Column33/4913.30840.27162.479653.7915
Ours (1DTS-1)33/4912.82090.26162.574453.9544
Ours (1DTS-2)33/4912.32970.25162.676754.1237
2-D Toggle Syndrome-basedWeight Approximation [11]33/4912.17250.24842.711254.1793
1-D/2-D Toggle Syndrome-basedOurs (2DTS-1)33/4911.67860.23832.826154.3596
Ours (2DTS-2)33/4911.58540.23642.848854.3943
Optimal solution33/4910.28120.20983.210054.9128
Ours(2DTS-1) + (Hamming+1)40/5611.96990.21373.342454.8328
Table 6. Stego Image Quality.
Table 6. Stego Image Quality.
Tested ImageBaboonBoatCameramanGoldhillLenaPeppers
PSNR54.401854.392354.385054.395554.401854.3716

Share and Cite

MDPI and ACS Style

Zhang, W.-R.; Huang, Y.-M. An Improved Product Code-Based Data Hiding Scheme. Appl. Sci. 2018, 8, 2119. https://doi.org/10.3390/app8112119

AMA Style

Zhang W-R, Huang Y-M. An Improved Product Code-Based Data Hiding Scheme. Applied Sciences. 2018; 8(11):2119. https://doi.org/10.3390/app8112119

Chicago/Turabian Style

Zhang, Wen-Rong, and Yuh-Ming Huang. 2018. "An Improved Product Code-Based Data Hiding Scheme" Applied Sciences 8, no. 11: 2119. https://doi.org/10.3390/app8112119

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop