# An Improved Product Code-Based Data Hiding Scheme
## 5 Proposed Scheme Combined with Hamming+1  
[PERSON] et al. [14] proposed the Hamming+1 concept in 2007 to increase the embedding rate and the embedding efficiency. For the Hamming code (\(2^{t}-1,2^{t}-t-1\)) with the strategy of Hamming+1, through checking (1a) and (1b), the secret message **m** = (\(m_{1}\), \(m_{2}\),..., \(m_{t+1}\)) of \(t+1\) bits can be hidden into \(2^{t}\) pixels of that pixel values equal \((p_{1},\ldots,p_{2^{t}})\), and at most, one pixel value will be changed by increasing or decreasing one:  
\[[m_{1},\ldots,m_{t}]=[\text{LSB}(p_{1}),\text{ LSB}(p_{2}),\ \ldots,\ \text{LSB}(p_{2^{t}-1})] \times H^{T} \tag{1a}\] \[m_{t+1}=\text{SLSB}(p_{1})\oplus\text{SLSB}(p_{2})\oplus\ldots\oplus\text{ SLSB}(p_{2^{t}-1})\oplus\text{LSB}(p_{2^{t}}) \tag{1b}\]  
where LSB(.) and SLSB(.) respectively represent the first and the second LSB slicing of the pixel value, and \(\oplus\) represents the bit-wise exclusive-or operation. When only (1a) does not hold, the lowest bit of a certain pixel value \(p_{i}\) needs to be changed to make (1a) hold, where \(1\leq i\leq 2^{t}-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 \(p_{i}\), \(1\leq i\leq 2^{t}-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\times 8\) pixels formed by adding one more pixel for each row of the original \(7\times 7\) block. For the \(7\times 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 (\(m_{1}\), \(m_{2}\),..., \(m_{7}\)). Let **PX** be the cover array of \(7\times 8\) pixels, i.e., [\(px_{i,j}\)]\({}_{7\times 8}\), where \(1\leq i\leq 7\) and \(1\leq j\leq 8\). Let the second LSB of each pixel in the first seven columns of **PX** be denoted as \(x_{i,8}\), where \(1\leq i\leq 7\) and \(1\leq j\leq 7\). Let **PY** be the stego array of \(7\times 8\) pixels, i.e., [\(py_{i,j}\)]\({}_{7\times 8}\), where \(1\leq i\leq 7\) and \(1\leq j\leq 8\). Let the second LSB of each pixel in the first seven columns of **PY** be denoted as \(sy_{i,j}\), and the LSB of each pixel in the last column of **PY** be denoted as \(y_{i,8}\), where \(1\leq i\leq 7\) and \(1\leq j\leq 7\). According to the toggle array \(\mathbb{T}^{\prime\prime}\) that is described in _step_ 6 of the embedding process in Section 4.1, the non-zero element of the toggle array \(\mathbb{T}^{\prime\prime}\) 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}=sx_{i,1}\oplus sx_{i,2}\oplus\ldots\oplus sx_{i,7}\oplus x_{i,8},\ 1 \leq i\leq 7. \tag{2}\]  
(\(z_{1}\), \(z_{2}\),..., \(z_{7}\)) is the fourth embedding channel which can be used to embed another seven secret bits.