^{1}

^{2}

^{*}

The main purpose in developing the steganographic algorithms lies in achieving most of the steganographic objectives which comprise the embedding capacity, imperceptibility, security, robustness and complexity. In this paper, we propose a high quality steganographic algorithm using new block structure which makes a good use of both modulus function and pixel-value differencing, namely, MF-PVD. We have made many experiments with various test images from several galleries, such as USC-SIPI and UWATERLOO-LINK. The performance of our proposed algorithm is verified using three different performance metrics which include peak signal-to-noise ratio (PSNR), structural similarity index measure (SSIM), and embedding capacity (EC). Experimental results and comparisons with six pertinent state-of-art algorithms are given to prove the validation and efficiency of the proposed algorithm.

Nowadays, digital communications become an essential part of our daily life [

In security systems, data hiding is a common discipline to protect data. Data hiding, which concerned by concealing a message (a sequence of bits) in a digital object or cover, has two important sub-disciplines: steganography and watermarking [

The steganography term is not new concept [

Generally, the algorithms used in steganography are based on the fact that the modifications occurred in texts, images, audio files and video files are not detected by human visual or auditory systems [

The first pixel-value differencing (PVD) steganographic algorithm was introduced by [_{i} is a sub-block of I, which has two consecutive pixels p_{i} and p_{i}_{+1} broken down by partitioning I in raster scan order such that_{i} between p_{i} and p_{i}_{+1} can be derived by using the following equation:

On the other hand, in PVD method a range table has been designed with n contiguous sub-ranges R_{j} (i.e._{i}. The lower and upper bound values are called by _{j} has width W_{j} which is selected to be a power of 2 and can be calculated by using this equation:

However, using the width W_{j} of each R_{j} they can obtain the hiding capacity of two consecutive pixels by using:

According to the above equation, t_{i} means the number of bits that can be hidden in each B_{i}. Read t_{i} bits from the binary secret bit-stream and it will be transform into its integer value b_{i}. For example, if t_{i} bits = “100”, then the converted value of b_{i} = 4. Now, a new difference value _{j} and b_{i} together where:

You should notice that the calculated _{i}. Finally, the secret data can be hidden into B_{i} by modifying its pixel values p_{i}_{ }and p_{i}_{+1} as follows:

where:

Maleki, et al in [_{1}, R_{2}, v_{1}, v_{2} and T, where v_{1} ≥ 1, v_{2} ≥ 1 and (v_{1} + v_{2} < 6). First of all, two parameters K_{r} and K_{c} are generated using H_{r}(R_{1}, v_{1}) and H_{c}(R_{2}, v_{2}), respectively. Then, they calculate the average difference value D of 4-neighborhing pixels in a block as follows:

According to a threshold secret key T, they classify the current block into edge region or smooth region. Pixels in edge regions are embedding with a larger number of bits than that belongs to smooth regions. On the other words, If D ≤ T that means the block belongs to smooth regions and then Q = v_{1} bits will be embedded in that block. Otherwise, the block belongs to edge regions and then Q = v_{1} + v_{2}. They have to determine if the current block is an error block or not by using this condition:

The main goal of the overlapping PVD (OPVD) method is to maximize the embedding capacity of the original PVD while maintaining acceptable image quality [

To overcome the limitation of embedding capacity in PVD method, there are some PVD-based steganographic methods used a combination of PVD and LSB to dramatically enlarge the embedding capacity of secret data [

Wang, et al in [

Joo, et al. in [

Chen in [_{B} in B-ary notational system. In Chen method, the cover-image is partitioned into 2 × 2 embedding cells for embedding by random embedding arrangements. To increase the random embedding characteristic, two reference tables are created. This random mechanism raises the security of the embedded data from detection and other steganalysis attacks. The major contributions of this approach are that: (1) PPM was utilized thus more data was concealed than original PVD, (2) Effectively decreasing the falling-off-boundary problem by manipulating only on Pivot Embedding Unit (PEU). (3) The secret data was concealed based on two reference tables which raised the random characteristic and the visual quality. (4) This method is harder to be detected since its difference histogram demonstrates that the values of the stego-image are very close to the values of the cover-image. Comparison this method with [

The embedding phase for our proposed algorithm used the same equations as employed in [

Input: Cover-image CI, secret data S, and secret keys (R_{1}, R_{2}, α, β).

Output: Stego-image SI.

Step 1. The cover-image is dividing into non-overlapping two-pixel blocks_{i} and p_{i}_{+1}, and their corresponding gray values are g_{0} and g_{1}, respectively.

Step 2. Transform S into a binary bitstream S'.

Step 3. As explained previously, H_{r}(R_{1}, α) and H_{c}(R_{2}, β) are used to generate two binary sets K_{r} and_{ }K_{c}, respectively.

Step 4. Calculate Q as follows:

Step 5. For the first pixel p_{i} in the block, S_{Q} = Q bits of binary bitstream S'. After that, this S_{Q} is divided into two sub-sets S_{Q}_{1} and_{ }S_{Q}_{2}, where S_{Q}_{1} has α bits and S_{Q}_{2} has β bits.

Step 6. Find the indices i and j using S_{Q}_{1} = K_{ri} and S_{Q}_{2} = K_{cj}, where K_{ri} and K_{cj} are ith and jth binary elements in K_{r} and_{ }K_{c} sets, respectively.

Step 7. Compute y as follows:

Step 8. Generate a pixel group G which is a subset of the pixel intensity set

Thus, the pixel group G is an ordered set

Step 9. For reducing perceptual distortion between the cover and stego images, we use “error reducing process”. Let L ^{Q}. After that, calculate

Consequently, we get three values for_{i}. Thus, the final value for the corresponding stego-pixel

Step 10. Until now, we embed Q bits in the first pixel in the block B_{i}. Now, compute the difference value between _{i}_{+1} in B_{i} as follows:

Step 11. Find the corresponding sub-range _{i} from the dividing range table that is shown in _{i} and u_{i} are the lower and higher bounds for sub-range R_{i}.

Step 12. If R_{i} belongs to the lower-level, then 3 secret data bits will be embedded in the second pixel p_{i}_{+1}. Unless 4 secret data bits will be embedded in the second pixel p_{i}_{+1}. By considering t_{i} is the number of embedded secret data bits, then, read t_{i} bits from the binary bitstream S' and convert it into its decimal value s_{t}.

Step 13. Compute the new difference value dd_{i} as follows:

Step 14. Calculate the stego pixel value _{i}_{+1} in the block B_{i} using the following formula:

Step 15. Now, we are getting the stego-block consisting

Respect to the side information used in MF-PVD algorithm, they are offline, except the amount of the payload which takes 32 bits from the embedding capacity.

・ Embedding Phase: Example

An illustration of the data embedding phase is shown in Figures 3(a)-(h). Suppose that the simple block is comprised by p_{1} and p_{2} and their corresponding grey values are (47, 48) as shown in _{1} = 2 and R_{2} = 2020.

§ Before the actual embedding, we generate the K_{r} using H_{r} (2, 1) and the K_{c} using H_{c} (2020, 3). All permutations generated by H_{r} and H_{c} for K_{r} and K_{c}, respectively, are shown in _{r} = {1, 0} and K_{c} = {001, 010, 101, 000, 011, 100, 110, 111}.

§ The first pixel is embedded with Q = 4 bits of secret data. Thus, S_{Q} = “1000” will be separated into two sub-strings S_{Q}_{1} = “1” and S_{Q}_{2} = “000”.

§ After that, we find the indices i and j where S_{Q}_{1} = K_{ri} and S_{Q}_{2} = K_{cj}. Therefore,_{ }i = 1 and j = 4.

§ Using the values of i, j and β to compute y = 2^{β} × (i − 1) + j = 2^{3} × (1 − 1) + 4 = 4.

§ Next, the pixel group G is created as shown in _{4} = 35).

§ To reduce the distortion, we use the error reducing process. As shown in

§ Now, we compute the difference value between _{2} as follows: _{1} = [0, 7] and t_{1} = 3 bits. Thus, s_{t} = 3.

§ Next, the new difference value is computed as follows: dd = s_{t} + 0 = 3

§ Finally, according to step 14, the stego-pixel

Hence, the block after embedding the secret data will be as shown in

The details of extracting phase to extract the secret data S are described as follows:

Input: Stego-image SI, and secret keys (R_{1}, R_{2}, α, β).

Output: Secret data S.

Step 1. Similar to the embedding phase, first of all, partition the SI into two-pixel non-overlapping blocks. In each block, there are two neighboring pixels

Step 2. Using H_{r}(R_{1}, α) and H_{c}(R_{2}, β) to generate two binary sets K_{r} and_{ }K_{c}, respectively.

Step 3. Through sets K_{r} and K_{c}, form a Cartesian product K_{r} _{c}. K_{r} _{c} creates an ordered set of combinations of K_{r} and K_{c} with 2^{α} × 2^{β} = 2^{α}^{+β} elements. Each component of the variant Cartesian product K_{r} _{c} is binary string concatenation which includes the two binary strings K_{ri} and K_{cj} jointly to form one string which has the length (α + β) bits

For example, assume α = 1, β = 3, R_{1} = 2 and R_{2} = 2020. We generate the K_{r} using H_{r}(2, 1) and the K_{c} using H_{c}(2020, 3). Thus, K_{r} = {1, 0} and K_{c} = {001, 010, 101, 000, 011, 100, 110, 111}. We produce the variant Cartesian product K_{r} _{c} as follows: {1001, 1010, 1101, 1000, ∙∙∙, 0011, 0100, 0110, 0111}

Step 4. Calculate Q as was in the Equation (7)

Step 5. For the first pixel _{y} (i.e. _{y}, where n = 2^{Q}).

Step 6. Use the Cartesian product of K_{r} and K_{c}(K_{r} _{c}) to extract the yth element which is the secret embedded bits with Q bits, we called this first piece of secret data by S_{Q}.

Step 7. Find the difference value between the first and second pixels in the block where

Step 8. Find the corresponding range

Step 9. Extract the second piece of secret data S_{t} by using:

Step 10. Transform S_{t} into its binary value.

Step 11. Move to next block and repeat Steps from 5 to 11 until all the pieces of secret data are completely extracted. Then, concatenate all the pieces of secret data sub-bitstreams in order to recover the required hidden secret data S.

The error reducing process in our algorithm can work correctly since it is do not change the hidden secret data. To prove that, remember step 5 in the extracting phase. We mentioned that _{y} where n = 2^{Q}, if we applying the following equation: ^{Q}), (^{Q}).

All these resulted values have the same reminder to n. Consequently, in the extracting phase, using each of these three values will lead to extract the same secret data correctly. Detection process for secret data in our method is very difficult to any unauthorized users due to existing many permutations (K_{r} has 2^{α}!), (K_{c} has 2^{β}!) and (K_{r} _{c} has 2^{α}! × 2^{β}!). Thus, an attacker will face more difficult in guessing the secret data.

All our experiments are developed using MATLAB 8.2.0.701 (R2013b) software on Windows 7 platform with an Intel Core i7-4600U CPU working at 2.1 GHz with a 4 MB cache and 4 GB RAM. We used different benchmark gray level images with size 512 × 512 from various databases such as (USC-SIPI Image Database) and (UWATERLOO-LINKS Image Repository) [

The effectiveness of our proposed algorithm is verified using different performance metrics such as PSNR and structural similarity index measure (SSIM). In general, PSNR and SSIM are used evaluate the overall image quality. PSNR is computed using the following equation [

where I_{max} equals to 255 for 8-bit gray level images, which means the maximum intensity value of each pixel. Mean square error (MSE) is calculated using:

where MN is the total number of pixels for both cover and stego images. x_{ij} and

where _{bpp} is the number of bits per pixel).

The maximum embedding capacity (EC) in our algorithm can be computed by using the following equation:

where N_{fp} is the number of first pixel blocks, N_{sp}_{1} is the number of the second pixel blocks that belongs to the lower-level and N_{sp}_{2} is the number of the second pixel blocks that belongs to the higher-level.

We have implemented using a series of α and β secret keys. The value we got from adding α and β values will be embedded in the first pixel in each block (i.e. α + β bits).

Elaine Cover Image

Stego Elaine with α = 1 and β = 1

Stego Elaine with α = 2 and β = 1

Stego Elaine with α = 2 and β = 2

Splash Cover Image

Stego Splash with α = 1 and β = 1

Stego Splash with α = 2 and β = 1

Stego Splash with α = 2 and β = 2

Tables 1(a)-1(c) shows the results of our adaptive algorithm in terms of the maximum embedding capacity, SSIM and PSNR values. As shown in ^{2}), which is less than or equals to 59 s.

Our algorithm outperforms Maleki, et al. scheme [

Results shown in

Cover image name | α = 1, β = 1 | α = 1, β = 2 | ||||||
---|---|---|---|---|---|---|---|---|

EC (bits) | ER (bpp) | SSIM | PSNR (dB) | EC (bits) | ER (bpp) | SSIM | PSNR (dB) | |

Panel a | ||||||||

Lena | 667,947 | 2.548 | 0.9943 | 39.26 | 799,802 | 3.051 | 0.9912 | 38.11 |

Peppers | 665,818 | 2.530 | 0.9944 | 38.58 | 797,937 | 3.044 | 0.9919 | 37.57 |

Boat | 674,691 | 2.574 | 0.9938 | 37.32 | 806,296 | 3.076 | 0.9918 | 36.63 |

Jet | 665,409 | 2.538 | 0.9929 | 38.28 | 796,637 | 3.039 | 0.9883 | 37.48 |

Splash | 658,841 | 2.513 | 0.9914 | 38.16 | 790,046 | 3.014 | 0.9861 | 37.32 |

Baboon | 699,727 | 2.669 | 0.9956 | 35.97 | 831,709 | 3.173 | 0.9946 | 35.43 |

Tiffany | 665,562 | 2.539 | 0.9924 | 39.29 | 796,903 | 3.040 | 0.9924 | 38.25 |

Elaine | 669,477 | 2.554 | 0.9947 | 39.68 | 801,186 | 3.056 | 0.9927 | 38.54 |

Couple | 675,311 | 2.576 | 0.9952 | 37.97 | 806,691 | 3.077 | 0.9934 | 37.14 |

Average | 671,420 | 2.560 | 0.9939 | 38.28 | 803,023 | 3.063 | 0.9914 | 37.39 |

Cover image name | α = 1, β = 3 | α = 2, β = 1 | ||||||

EC (bits) | ER (bpp) | SSIM | PSNR(dB) | EC (bits) | ER (bpp) | SSIM | PSNR (dB) | |

Panel b | ||||||||

Lena | 935,756 | 3.570 | 0.9808 | 35.35 | 799,796 | 3.051 | 0.9912 | 38.15 |

Peppers | 934,567 | 3.565 | 0.9825 | 35.12 | 797,927 | 3.044 | 0.9917 | 37.59 |

Boat | 940,248 | 3.587 | 0.9847 | 34.55 | 806,216 | 3.075 | 0.9919 | 36.61 |

Jet | 928,517 | 3.542 | 0.9706 | 35.05 | 796,643 | 3.039 | 0.9882 | 37.45 |

Splash | 921,817 | 3.516 | 0.9683 | 34.95 | 790,005 | 3.014 | 0.9861 | 37.29 |

Baboon | 960,037 | 3.662 | 0.9907 | 33.79 | 831,288 | 3.171 | 0.9946 | 35.46 |

Tiffany | 929,241 | 3.545 | 0.9746 | 35.54 | 796,893 | 3.040 | 0.9883 | 38.25 |

Elaine | 935,520 | 3.569 | 0.9854 | 35.69 | 801,306 | 3.057 | 0.9926 | 38.51 |

Couple | 939,471 | 3.584 | 0.9873 | 34.94 | 806,727 | 3.077 | 0.9935 | 37.10 |

Average | 936,130 | 3.571 | 0.9805 | 35.00 | 802,978 | 3.063 | 0.9909 | 37.38 |

Cover image name | α = 2, β = 2 | α = 3, β = 1 | ||||||

EC (bits) | ER (bpp) | SSIM | PSNR (dB) | EC (bits) | ER (bpp) | SSIM | PSNR (dB) | |

Panel c | ||||||||

Lena | 935,830 | 3.570 | 0.9808 | 35.39 | 935,721 | 3.569 | 0.9807 | 35.38 |

Peppers | 930,307 | 3.549 | 0.9826 | 35.24 | 930,439 | 3.549 | 0.9825 | 35.23 |

Boat | 940,185 | 3.587 | 0.9843 | 34.55 | 940,190 | 3.587 | 0.9846 | 34.59 |

Jet | 928,554 | 3.542 | 0.9701 | 35.02 | 928,518 | 3.542 | 0.9705 | 35.02 |

Splash | 921,888 | 3.517 | 0.9685 | 34.96 | 921,880 | 3.517 | 0.9686 | 34.96 |

Baboon | 960,035 | 3.662 | 0.9908 | 33.84 | 964,208 | 3.678 | 0.9908 | 33.78 |

Tiffany | 929,242 | 3.545 | 0.9746 | 35.53 | 929,185 | 3.545 | 0.9746 | 35.33 |

Elaine | 935,455 | 3.568 | 0.9854 | 35.68 | 935,387 | 3.568 | 0.9853 | 35.69 |

Couple | 939,466 | 3.584 | 0.9873 | 34.87 | 939,535 | 3.584 | 0.9873 | 34.88 |

Average | 935,662 | 3.569 | 0.9805 | 35.01 | 936,118 | 3.571 | 0.9805 | 34.98 |

Cover image name | Maleki 1 - 2, T = 3 | Our method α = 1, β = 1 | Maleki 2 - 3, T = 5 | Our method α = 2, β = 1 | ||||
---|---|---|---|---|---|---|---|---|

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel a | ||||||||

Lena | 455,908 | 46.66 | 667,947 | 39.26 | 661,852 | 41.89 | 799,796 | 38.15 |

Peppers | 467,264 | 46.53 | 665,818 | 38.58 | 670,300 | 41.56 | 797,927 | 37.59 |

Boat | 486,960 | 46.50 | 674,691 | 37.32 | 703,840 | 41.18 | 806,216 | 36.61 |

Jet | 393,888 | 47.54 | 665,409 | 38.28 | 613,560 | 43.05 | 796,643 | 37.45 |

Splash | 404,948 | 47.13 | 658,841 | 38.16 | 598,144 | 43.06 | 790,005 | 37.29 |

Baboon | 514,252 | 46.36 | 699,727 | 35.97 | 758,984 | 40.81 | 831,288 | 35.46 |

Tiffany | 436,584 | 46.87 | 665,562 | 39.29 | 642,692 | 42.24 | 796,893 | 38.25 |

Elaine | 493,948 | 46.51 | 669,477 | 39.68 | 718,440 | 41.06 | 801,306 | 38.51 |

Couple | 479,912 | 46.53 | 675,311 | 37.97 | 693,864 | 41.43 | 806,727 | 37.10 |

Average | 459,296 | 46.74 | 671,420 | 38.28 | 673,520 | 41.81 | 802,978 | 37.38 |

Cover image name | Maleki 2 - 4, T = 6 | Our method α = 2, β = 2 | Maleki 3 - 4, T = 15 | Our method α = 3, β = 1 | ||||

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel b | ||||||||

Lena | 760,952 | 36.41 | 935,830 | 35.39 | 834,264 | 38.37 | 935,721 | 35.38 |

Peppers | 766,792 | 36.06 | 930,307 | 35.24 | 824,100 | 38.73 | 930,439 | 35.23 |

Boat | 800,040 | 35.48 | 940,185 | 34.55 | 846,968 | 37.82 | 940,190 | 34.59 |

Jet | 680,088 | 38.23 | 928,554 | 35.02 | 824,148 | 38.88 | 928,518 | 35.02 |

Splash | 633,016 | 38.80 | 921,888 | 34.96 | 802,052 | 39.71 | 921,880 | 34.96 |

Baboon | 800,032 | 35.52 | 960,035 | 33.84 | 926,840 | 35.98 | 964,208 | 33.78 |

Tiffany | 726,376 | 37.12 | 929,242 | 35.53 | 823,408 | 38.78 | 929,185 | 35.33 |

Elaine | 800,032 | 35.23 | 935,455 | 35.68 | 831,240 | 38.03 | 935,387 | 35.69 |

Couple | 800,032 | 35.88 | 939,466 | 34.87 | 856,396 | 37.68 | 939,535 | 34.88 |

Average | 751,929 | 36.53 | 935,662 | 35.01 | 841,046 | 38.22 | 936,118 | 34.98 |

Cover image name | El-Alfy and Al-Sadi method [ | Our method α = 3, β = 1 | ||
---|---|---|---|---|

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel a | ||||

Lena | 820,150 | 35.56 | 935,721 | 35.38 |

Peppers | 815,337 | 35.05 | 930,439 | 35.23 |

Boat | 845,209 | 33.34 | 940,190 | 34.59 |

Baboon | 921,399 | 29.90 | 964,208 | 33.78 |

Elaine | 820,296 | 36.42 | 935,387 | 35.69 |

Average | 844,478 | 34.05 | 941,189 | 34.93 |

Cover image name | Khodaei and Faez method using first range table and k = 3 bits [ | Our method α = 2, β = 1 | ||

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel b | ||||

Lena | 788,407 | 37.35 | 799,796 | 38.15 |

Peppers | 787,506 | 35.68 | 797,927 | 37.59 |

Boat | 792,319 | 36.09 | 806,216 | 36.61 |

Jet | 788,685 | 36.81 | 796,643 | 37.45 |

Baboon | 806,411 | 34.45 | 831,288 | 35.46 |

Tiffany | 787,389 | 37.63 | 796,893 | 38.25 |

Average | 791,786 | 36.34 | 804,794 | 37.25 |

algorithm does not greatly increase the embedding capacity than Khodaei and Faez, our algorithm does not degrade on the image quality and it provides higher level of security. The level of security in our proposed algorithm is high, due to two reasons, which are: 1) We have two methods to individually embed each pixel in a block, 2) Our algorithm provides hard detection for the hidden secret data bits due to existing: many permutations and dividing range table.

We have proposed a new block-based steganographic algirthm using PVD and modulus function techniques, namely, MF-PVD. To evaluate the performance of MF-PVD algorithm, we compare it with six pertinent state-of-art algorithms,

Cover image name | Wang, et al. method [ | Our method α = 1, β = 1 | ||
---|---|---|---|---|

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel a | ||||

Lena | 409,752 | 44.15 | 667,947 | 39.26 |

Peppers | 407,256 | 43.28 | 665,818 | 38.58 |

Boat | 421,080 | 42.14 | 674,691 | 37.32 |

Jet | 421,080 | 42.14 | 665,409 | 38.28 |

Splash | 389,459 | 44.34 | 658,841 | 38.16 |

Baboon | 457,168 | 40.32 | 699,727 | 35.97 |

Tiffany | 407,360 | 43.80 | 665,562 | 39.29 |

Elaine | 408,592 | 44.74 | 669,477 | 39.68 |

Couple | 412,824 | 43.25 | 675,311 | 37.97 |

Average | 414,952 | 43.13 | 671,420 | 38.28 |

Cover image name | Joo, et al. method [ | Chen method [ | ||

EC (bits) | PSNR (dB) | EC (bits) | PSNR (dB) | |

Panel b | ||||

Lena | 409,785 | 43.90 | 419,340 | 47.50 |

Peppers | 407,256 | 43.10 | 436,808 | 47.30 |

Boat | 421,083 | 41.90 | 429,744 | 47.40 |

Jet | 409,818 | 43.30 | 426,320 | 47.40 |

Baboon | 457,169 | 40.20 | 459,792 | 47.10 |

Elaine | 408,594 | 44.80 | 434,128 | 47.40 |

Average | 418,951 | 42.87 | 434,355 | 47.35 |

which are existed in [

Many trends can be given for further improvements to the proposed algorithm. The algorithm’s framework can be extended to the RGB color images for improving the capability of embedding. Moreover, it can be a good addition to develop an approach that takes into account the hybrid domain. As well, there are future plans to develop modulus function-based schemes for another media such as audios and videos.

Al-Dhamari, A.K. and Darabkh, K.A. (2017) Block-Based Steganographic Algorithm Using Modulus Function and Pixel-Value Differencing. Journal of Software Engineering and Applications, 10, 56-77. http://dx.doi.org/10.4236/jsea.2017.101004