A Multiple-Format Steganography Algorithm for Color Images

This paper presents an image Steganography algorithm that can work for cover images of multiple formats. Having a single algorithm for multiple image types provides several advantages. For example, we can apply uniform security policies across all image formats, we can adaptively select the most suitable cover image based on data length, network bandwidth and allowable distortions, etc. We present our algorithm based on the abstract concept of image components that can be adapted for JPEG, Bitmap, TIFF and PNG cover images. To the best of our knowledge, the proposed algorithm is the first Steganography algorithm that can work for multiple cover image formats. In addition, we have utilized concepts like capacity pre-estimation, adaptive partition schemes and data spreading to embed secret data with enhanced security. The proposed method is tested for robustness against Steganalysis with favorable results. Moreover, comparative results for the proposed algorithm are very promising for three different cover image formats.


I. INTRODUCTION
The area of Steganography generally covers techniques that try to hide information in some media file being transmitted. The goal of Steganography is to ensure that an adversary should not suspect the presence of a hidden message. Text, image, audio or video files can be used as media to conceal the secret message. In Image Steganography, after Steganography operations, nobody should be able to notice the visual difference between original image (called cover image) and the resultant image (called stego image). Text, image, audio or video files can all be treated as sequence of data bits and can be transmitted by hiding in cover images using image Steganography. Data bits are also called payload data, secret data, data object and hidden data.
With the best of our knowledge, the reported results for image Steganography focus on cover images of some particular format. Out of the numerous image Steganography algorithms, there are works that use cover images of type JPEG [7]- [9], [18], [21], PNG [11]- [14], [30] and RGB [1]- [6], [19], [20]. In this paper, we present a Generic Steganography The associate editor coordinating the review of this manuscript and approving it for publication was Vicente Alarcon-Aquino .
Algorithm (called GSA) that is described for abstract image components. The novel aspect of GSA is that, we can implement GSA for all these types of cover images (i.e. JPEG, Bitmap or PNG) with trivial adaptations. In addition, we have implemented GSA for JPEG, Bitmap and PNG formats with very promising results compared to other reported methods.
At this point, the following query may come up in the mind of the reader: what is the benefit of having an image Steganography algorithm that can work for multiple cover image formats? We can answer this question by noting the following points, which also provide the motivations for the current work.
• Having the option to use any types of cover images using one algorithm provides flexibility and simplicity for a user.
• Capacity of a cover image can vary based on the image format. Based on the data length, network bandwidth and allowable distortions, GSA can adaptively select the best cover image format (for the same image) to hide data.
• Since the same algorithm is used for various cover image formats, security levels can be enhanced by modifying only a few parameters (like, using data spreading technique in GSA). In summary, the proposed method works as follows. We consider a cover image as a sequence of components C i . Each of these components C i consists of a number of parameters P i j , of which we only consider three: P i j1 , P i j2 , P i j3 . Out of these three parameters, one is selected at random as the indicator parameter. Data bits are stored in one of the remaining two parameters from P i j1 , P i j2 , P i j3 based on the concept of partition schemes. Specific adaptations of the above mentioned process for various cover image types are discussed later in this paper. As an example, a pixel in a Bitmap cover image can be considered as a component C i with P i j1 , P i j2 , P i j3 being the R, G, B intensity values.
Additionally, we use capacity pre-estimations of cover images to select the best cover image and the concept of data spreading to reduce distortions. Experimental results show that the proposed algorithm performs better compared to other reported works for various cover image types. Thus, this paper contributes to advance the state-of-art in image Steganography in two ways: • Introducing an algorithm (called GSA) that can be trivially adapted for multiple cover image formats.
• Adaptations of GSA showing promising and better results when compared with other methods. The rest of the paper is organized as follows. Section II focuses on literature review. Section III gives the abstract description of the proposed method. Section IV presents the implementation issues of our algorithm. Section V describes the adaptations of the proposed algorithm for different cover image formats. Section VI deals with experimental results. Finally, we conclude the work in Section VII.

II. RELATED WORKS
There are a lot of works reported in image Steganography. In this section, we briefly review some of the works related to our approach.
Before we discuss different works, it is good to discuss some factors that we should consider while evaluating a Steganography algorithm. Fig. 1 illustrates some essential factors in Steganography. In confidentiality, the Stego image transmission must be confidential, where only the authorized person must be able to read the message, while others should not even suspect it. Integrity means that only an authorized person would be able to modify or change the message. Robustness is the ability of stego image to resist manipulations like filtering or compression. Hiding Capacity is the amount of information hidden in the cover image media. It is measured as bpp (bits per pixel) or bpc (bits per coefficient). In Authentication, the origin of the message is recognized correctly with an assurance that identity is not false. Perceptibility implies that the Stego image must be same like cover image without visual difference and hidden message should not to be detectable by eyes.
PSNR (Peak Signal to Noise Ratio) is a visual quality estimator for stego images. It is used to measure the perceptible quality of the modified Steganography image in decibels (dB). A high value for PSNR indicates higher quality of an image. MSE (Mean Square Error) is an estimate for error between the original cover image and the output stego (reconstructed) images. There is an inverse relationship between PSNR and MSE, a lower MSE value indicates lower difference between input and output images. If MSE value is less than one, it implies that modified image has been properly restored. Stego key is a key that is embedded into the cover media along with the secret data to retrieve the embedded secret data back correctly (explained in detail in Section III). The various image Steganography algorithms attempt to optimize one or more of these factors.

A. SPATIAL DOMAIN (RGB/BITMAP) STEGANOGRAPHY
Algorithms for bitmap images work in spatial domain, using direct modifications in the cover image pixels. RGB algorithms provide high capacity but less security because image pixels can be modified directly as per the scene's curves and edges. Examples of RGB algorithms are LSB (least significant bit) substitution method, pixel indicator technique, optimal pixel adjustment procedure, secure key based image realization Steganography, etc.
The techniques in [3], [4], [6], [33], [34] are all LSB substitution based methods, where the basic idea is to embed the message into the right most bits of the pixel array sequentially or randomly without disturbing the original pixel values much. Pixel indicator techniques are based on the concept of an indicator channel and an embedding channel [1]. Amirtharajan et al. [2] used both LSB and pixel indicator techniques to enhance security.

B. FREQUENCY DOMAIN (JPEG) STEGANOGRAPHY
JPEG image format algorithms work in the frequency transform domain (they work on the rate at which the pixel values are changing in the spatial domain). Frequency transform domain is divided into two categories: high-frequency domain (deals with edges) and low-frequency domain (deals with smooth and plane area). Changes in low frequencies can be more apparent. Both DCT (Discrete Cosine Transform) and DWT (Discrete Wavelet Transform) can be used to embed the secret data into the image coefficients. The frequency domain Steganography approaches were shown be more secured compared to the spatial domain methods [22].
The methods reported in [2], [7], [18], [21], [23] are based on DCT. These methods uses relationships between the DCT coefficients and STCs. Yang et.al. [8] proposed simple DCT method to insert confidential data into zero coefficients in a zigzag sequence of 8×8 DCT blocks. In [17], the method uses bit-plane encoding procedure multiple times and a redundancy evaluation approach to increase hiding capacity. The work proposed in [11] is based on Integer Wavelet Transform (IWT). A careful review of various image Steganography algorithms can reveal that algorithms for JPEG cover images performs better in security aspects compared to all other image formats [22].

C. PNG (PALETTE BASE/IMAGE DATA BASE) STEGANOGRAPHY
There are generally two approaches to embed data bits in PNG images: one can insert data bits into palettes or one can insert data bits into the image data [11]. The first method (palette-mode) is probably the easier to implement, but has less capacity to store data depending on the palette size. In this approach, it is difficult to store even one bit per image component, since it is easy to distinguish images with and without secret message. In contrast, the second method (image-mode) offers more capacity, although this approach has difficulty in ensuring security. It is possible to embed one bit, 2 bits, 3 bits, and up to 7 bits per pixel of image data without distorting the image. In our work, we will use image data based approach to insert data bits into PNG image to have increased capacity (explained later). As discussed later, we try to overcome the security issues by spreading data unevenly and using variable bits partition scheme. Works proposed in [11], [12], [14] are palette-mode methods; whereas [13] is an image-mode method.

III. ALGORITHMIC FORMULATIONS
In this section, we present the proposed algorithm in abstract mathematical terms. Specific implementations for different image types will be discussed later. Fig. 2 illustrates the main modules in the proposed method. A cover image passes through capacity pre-estimation procedure to select the best cover image for the secret data bits. Once a cover image is selected, concepts like partition schemes are used to store data in image components. In the following sections, each of these modules will be described in details.

A. BASIC DEFINITIONS
An image is a visual representation of an entity. We can consider an image I as a two dimensional matrix of finite number of elements or components. Let C x,y be a component of the image I , x = 1, 2, . . . , r and y = 1, 2, . . . , c, where r and c denote the number of rows and columns in the matrix representation of I . For example, this C x,y can be an intensity value in a gray scale image, or it can represent color intensity values in some color image formats or can be some sort of coefficient values in other image formats.
Each of the (r × c) components C x,y consists of a number of parameters P i x,y , i = 1, 2, . . . , p. For example, parameters P i x,y could be the color component values in some image formats. In JPEG images, C x,y consists of coefficient values as parameters.
In our approach, we divide the image matrix I into a series of n × n blocks. Through experimentations, we found that n = 8 gave the best results, as blocks with size less than (8×8) does not have enough capacity for hiding data. On the other hand, blocks with size greater than (8×8) may sharply reduce the overall capacity of the cover image. Therefore, for n = 8, we can have a total of ((r × c) /64) blocks. Now, we define a triode T as a group of three elements, where a triode element can be either a parameter in a component or a component itself. In the first case, we denote the triode T as T P , whereas in the second case, T is denoted by T C . Assume that the three elements of a triode T are denoted as e 1 , e 2 and e 3 . Our proposed method works at the triode level, either using T P or T C , based on the cover image format. The proposed method selects one triode at a time and makes one element in that triode as an indicator randomly (discussed next). Then secret data bits are stored in one of the two remaining elements in that triode based on element values. Fig. 3 illustrates the use of triodes for data hiding in image component blocks. Note that, not all possible triodes in a component block may be used for hiding data. For example, in our algorithm for JPEG cover images, only four triodes per 8 × 8 component block are used (Fig. 3(b)). In other case, 64 triodes per component block can be used using T P . In general, our algorithm considers m number of different triodes in each component block, labelled as triode 1, triode 2, . . . , triode m.
In summary, Generic Stenography Algorithm (called GSA) hides data by altering some element values in each triode of each component block for a given cover of a particular format.

B. TRIODE INDICATORS
As discussed above, out of three elements e 1 , e 2 and e 3 in a triode T , one of them is selected as indicator. The idea here is that only one of the triode elements will store data. This way, we can keep the distortion level low with increased security. To find out which triode element will store data, we identify one of the e 1 , e 2 or e 3 as indicator. Say, e in is the indicator element. This selection of e in is done randomly using a random number generator (RNG) for security purpose. During data extraction, the receiver must know the exact e in used in a triode at the sender side. For this reason, both sender and receiver must agree on a shared key for the RNG.
Now, e in is used to indicate which of the other triode elements will store data. Suppose e j and e k are the two elements in T other than e in . Data will be stored in e j if the numeric value of e j is lower than e k . Otherwise, e k will store the data. The number of bits to be stored in either e j or e k is decided using the concept of partition schemes, to be discussed next.

C. PARTITION SCHEMES
In general, a partition scheme is a mapping that decides the number of bits to be stored in a selected element of a triode in a cover image. For the discussion purpose, we assume that the element in a triode T that will store data is denoted by e data .
We first define partition schemes in general terms. Generic Variable Bit Adaptive Partition Schemes (GVBAPS) can be defined as sequence of schemes (S i ), i = 0, 1, . . . , k, where each (S i ) allows a triode element to store a maximum of (n − k + i) bits of data, for some k, n > 0. For a particular element, only one scheme can be utilized based on the element value. Table 2 illustrates GVBAPS for k = 7 and n = 8.
The goal of a partition scheme is to allow variable number of bits to store in a triode element, based on the value of the element. Some partition schemes allow larger number bits to be stored in a triode element compared to other schemes. The partition schemes are called adaptive, since the best partition scheme is adaptively selected for a given cover image I and some secret data D. To accomplish this, an estimation of the capacity of I is needed. Assume that the estimated capacity of I is I cap . Now, we select a partition scheme (S i ) that can ensure that D can be stored in I with the maximum number of components of I being used (called data spreading in this paper). Therefore, we next discuss the estimation of capacity of a cover image and the concept of data spreading.

D. CAPACITY ESTIMATION AND DATA SPREADING
For the estimation of the capacity of a given cover image, our algorithm uses a value called Maximum Constant, M C . The value M C is estimated experimentally as follows. For a cover image I of a particular format (say JPEG) and for some random data bits, we insert d bits into each triode of a component block, starting with d = 1. Gradually the value of d is increased until the quality of the stego image gets badly affected (which roughly corresponds to a PSNR value less than 48 dB). Thus, M C is estimated approximately as 12.5 for each block in JPEG images. With M C more than 12.5, the PSNR of the stego image reduces significantly (for example, for 'Pepper' image, PSNR is 57.7dB at M C ∼12.5, whereas PSNR goes down to 48.45dB at M C ∼14). Then, the expected capacity of a I is: Here, E cap is the expected capacity of a cover image with (r × c) components and 8 × 8 component blocks.
If the amount of secret data is less and capacity of cover image under consideration is high, then instead of embedding secret data in less number of image components, we attempt to scatter it throughout the entire image components. This technique can help reduce the distortions in stego images. This goal is achieved by selecting the partition scheme that allows minimum amount of changes per triode element. To improve security further, our algorithm uses interleaved selection of blocks (alternate blocks) for storing data bits. Now, let the total number of image components/parameters utilized to hide data with data spreading be C. Let X be the number of utilized components/parameters without data spreading. Then, C − X is the amount of extra components/parameters utilized (called ECU), Hence %Extra Component/ parameter Utilised, ECU = (C − X ) × 100%. We attempt to maximize ECU for given data bits and a cover image. This is done with the help of Decision Factor, defined as follows.
Decision factor D f is defined as a ratio of the difference between the expected capacity of a cover image and secret data length in bits, to the total number of blocks in the cover image. Therefore, decision factor D f = floor (Data difference / Total number of 8 ×8 blocks). Here, Data difference = Expected Capacity of Cover Image -Secret Data length and Total number of component blocks = ((r × c) /64) × s, where s is a constant value (1 or 1.5) depending on the image format. Therefore, a lower decision factor value means that the capacity of the cover image is close to the length of the secret data and thus less amount of data spreading is possible. Table 3 illustrates an example for embedding data in the parameter/component using Generic Variable Bit Adaptive Partition Schemes (GVBAPS). Say, x, y, and z denote three parameters/components (i.e. elements) with values 154, 152, and 140 respectively in any one of the triodes. For example, these three parameters can be the RGB values in a pixel or three DCT coefficients. The values of the elements are selected randomly and the following steps are applicable for any values of the elements. To simplify the process, parameters/components are sequenced in a cyclic order, like x → y → z → x. In the following, the 'steps' refer to the step numbers mentioned in Table 3.

E. EMBEDDING EXAMPLE
In Step 1, element 'z' is randomly selected as an indicator, which means 'z' will not store any data. This selection of an indicator can be done using a random number generator. Now data bits are stored in one of the element other than the indicator. The selection of element that will store data bits is done in Step 2.
In Step 2, since the value of 'y' is lower than 'x', therefore 'y' is selected to store data. Once we select the element that will store data, we need to decide the number of bits that will be stored in that element. In Step 3, the number of bits to store is found based on the partition scheme and values of the parameters/components. For ease of understanding, parameter/component values in Table 3 are shown in binary. In Step 4, three secret data bits (as calculated by the partition scheme) are inserted in the lower three bits of 'y'. Now, the value of 'y' changes from 10011000 to 10011111. In Step 5, after changing the bits, the value of element 'y' changes from decimal 152 to 159.
As for the detection/retrieval phase, the following points need to be considered. Once we embed data bits in an element, the value of the element may change in a way that the rule used in Step 2 may no longer be valid. In the current example, the new value of 'y' will make the receiver confused, as now the element 'x' is lower in value compared to the new value of 'y'. Thus, in case the value of 'y becomes greater than 'x' after modification, it will be impossible to retrieve data by the receiver using the rule of Step 2 alone. Therefore, to retrieve the correct data, LSB of 'x' may need to be modified so as to correctly find (at the receiver's side) the parameter/component that stored data. The following rule is used for this purpose.
Suppose, a and b are the two elements other than the indicator element. Also, suppose b stores the data. In the example here, a is the element x and b is the element y. Now, if b comes AFTER a in the cyclic order of the parameters/components, then LSB of a will be modified so that the LSBs of a and b (after embedding) do not match. Conversely, if b comes BEFORE a in the cyclic order of parameter/component, then LSB of a will be modified so that the LSBs of a and b (after embedding) are same (either both 0 and both 1). Thus, at the receiver, only the LSBs of a and b are checked to decide which parameter/component has been used to store the secret data. Referring to Table 3, step 6, the LSB of 'x' is not changed in this case, as 'y' comes after 'x' in cyclic order and the LSBs of 'x' and 'y' (after embedding) are already different.

F. PSEUDO-CODE
Based on the discussions above, the following GSA algorithm captures the process of our proposed Generic Steganography Algorithm (GSA).

IV. IMPLEMENTATION OF PARTITION SCHEMES
Before we describe the specific adaptations of GSA for multiple image formats, we discuss how partition schemes can be devised for different types of cover images.

A. PARTITION SCHEMES FOR JPEG IMAGES
GSA is mapped to JPEG cover images by considering the DCT coefficients as image components. Based on this mapping, we can devise partition schemes for JPEG images. For JPEG images, we call GVBAPS as JPEG Variable Bit Adaptive Partition Schemes or JVBAPS. In this paper, VOLUME 8, 2020 Algorithm GSA Input: Cover Image, Secret Data, Shared key Output: Stego Image 1 Begin 2 Calculate cover image and data sizes in bits. 3 Estimate the capacity of Cover Image E cap 4 Repeat for each 8 × 8 interleaved component block and interleaved row from cover image I 5 Repeat for each Triode j where j = 1 to v (v = 4 or 64) 6 Assume that triode elements are e 1 , e 2 , and e 3 . 7 Use the shared key to find indicator element (say e in ). Let the other two elements be e j and e k . 8 Let, {q, r} ∈ {e j , e k }, where value (q) = min (value (e j ), value (e k )) and value (r) = max (value (e j ), value (e k )). 9 Calculate the number of bits n to be stored in q through partition scheme. 10 Hide data in q by replacing the lower n bits of q by the n bits from data. 11 If value (q) > value (r), adjust the last bit of r. 12 Save new values of e 1 , e 2 , and e 3 back into 8 × 8 component block. 13 Adjust unmodified elements 14 End JVBAPS are of two types: Variable Bit Adaptive Partition Scheme Part 1 (JVBAPSP1) for first three triodes and Variable Bit Adaptive Partition Scheme Part 2 (JVBAPSP2) for fourth triode (ref. Fig. 3(b)). JVBAPSP1 is mathematically defined as a sequence (S i ), i = 1, . . . , k, for the decision factor D f . By default D f = 0 and partition scheme P default stores k + 1 bits. A partition scheme (S i ) allows k bits to store per component with D f = (k − i + 1). Table 4 illustrates JVBAPSP1 for k = 8.
As can be seen in Table 4, the number of bits to be stored in the first three triode coefficients of a JPEG image depends on the decision factor value. Decision factor values allow different number of bits to be stored in selected coefficients in each triode. This approach may give more utilization of coefficients of the cover image for entire secret data. This coefficient utilization would be most under maximum estimated capacity of the cover image. In all these cases, our algorithm allows spreading of data over the cover image. JVBAPSP2 (shown in Table 5) is used for hiding data in the fourth triode of a JPEG cover image. JVBAPSP2 is defined as a sequence (S i ) , i = 0, . . . , k − 1, for the coefficient value C v . The scheme (S i ) allows to store i number of bits in the image coefficient when C v meets the certain condition.  Table 5 shows an example of JVBAPSP2 for k = 8. For example, as shown in Table 5, partition scheme (S 5 ) is selected if the coefficient value C v lies between −400 to −499, allowing 5 bpc from the secret data to be stored in a component. Triode 4 generally has high-valued (mostly negative) DCT coefficients. Based on observations, we found that we could store more bits in more negative valued DCT coefficients without compromising quality, leading to the design of JVBAPSP2 in Table 5.
JVBAPSP2 allows hiding more bits in negatively valued coefficients. As the value of a coefficient goes more negative, JVBAPSP2 allows increasing number of bits to be stored in that coefficient. In contrast, storing more number of bits into the coefficients with positive values can give rise to variation in brightness or color or produce blur effect or dots in the stego image. Positive coefficients can only store a maximum of one bit of data per component.

B. PARTITION SCHEMES FOR RGB, PNG AND TIFF
In Variable Bit Adaptive Partition Scheme (VBAPS) for RGB, PNG and TIFF images, we want to store variable number of bits according to the color intensity values of the channels. Channels with high values will store less number 83932 VOLUME 8, 2020 of bits, whereas, channels with low values will store more number of bits using partition schemes. Thus, the selection of a partition scheme depends on the intensity values of a cover image. The capacity of a cover image depends on the color intensity values of the channels being used to store data. Our partition scheme allows different number of data bits to be stored per channel based on the channel intensity values (for example, one color intensity level may allow to store 1 bits per parameter/channel (bpp) whereas, another color intensity level may allow 5 bpp).
The partition scheme decides the number of bits to be stored throughout the cover image depending on the requirements and allowable level of distortion. For example, if secret data bits are less than the estimated capacity of a cover image, only one bit or two bits per channel is used over the cover image. If the number of secret data bits to be stored is high (say, nearly equal to the estimated capacity of the cover image), then more number of bits (may be 3/4/5 bits) will be stored in each channel depending on the size of data and partition scheme. Table 6 illustrates one such VBAPS for RGB/PNG/TIFF images.

V. ADAPTATIONS FOR MULTIPLE IMAGE FORMATS
In this section, we show how GSA algorithm presented in Section III can be readily adapted for some popular cover image formats, namely JPEG, RGB, PNG and TIFF.

A. GSA FOR JPEG IMAGES
Every JPEG image consists of a header. Each header has a field named coef_arrays of size 1 × 3 cells. The 1 st cell is of size r × c where r and c are the row and column dimensions of the image under consideration. The 2 nd and 3 rd cells are of size r/2 × c/2. Hence, in the formulation of decision factor constant, s = 3/2 for JPEG format (as discussed in Section III). Our algorithm selects n × n coefficients from coefficient matrices of a JPEG cover image to be processed once at a time, where n = 8 (ref. Fig. 3(b)). Therefore, in JPEG cover images, image components refer to the coefficient values and a triode refers to a set of three coefficients. For each component block (which is an 8 × 8 block of coefficients), four triodes are considered (ref. Fig. 3(b)), named as triode 1, triode 2, triode 3 and triode 4. In each triode, we have three coefficients (Fig. 3(b)). For Capacity Estimation of Cover Image E cap , we found the value of M C as 12.5 bits per block. The following GSA_JPEG algorithm is the implementation of GSA for JPEG images.

B. GSA FOR BITMAP (RGB/PNG/TIFF) IMAGES
For Bitmap cover images, each component corresponds to an image pixel, with each pixel having three parameters: R, G and B. Therefore, an 8 × 8 component block contains a total of 64 pixels. Thus, each triode in this component block contains the parameters R, G, B; making a triode same as a pixel for a Bitmap image. For Capacity Estimation of Cover Image E cap , we found the optimum value of M C to be 192 bits per component block.
GSA for PNG (Portable Network Graphics) cover images are almost same as for RGB images. PNG is palettes based file format that supports indexed color, gray scale and RGB images. It supports palette-based images of 24 bit RGB or 32 bit RGB colors, grayscale images, and full-color non palette based RGB images. Again, M C = 192 for PNG cover images.
Similarly, TIFF (Tagged Image File Format) supports bilevel, grayscale, palette-color, and RGB full-color images. TIFF images can store 16 to 48 bit images and meta data. TIFF contains property of loss-less compression, uncompressed option, Grayscale, RGB color, 8 to 24-bit color and indexed color. Our proposed method uses the RGB color mode property of TIFF image and store secret bits as like method [2]. Our proposed method does not support TIFF 48 bit RGB data. Again, M C = 192 for TIFF cover images.
The following GSA_RPT algorithm illustrates the steps for GSA for Bitmap/PNG/TIFF cover images.

VI. EXPERIMENTAL RESULTS
We have tested the proposed algorithm (GSA) for around 100 different cover images of multiple formats. We first present some results of testing GSA for various cover images with different secret data. We then discuss Steganalysis results for the proposed method. Finally, we compare the proposed method with other reported methods for three types of cover images using some popular cover images used by other researchers.

A. GSA FOR JPEG/RGB/PNG/TIFF COVER IMAGES
We have tested our Generic Steganography Algorithm (GSA) for a number of color cover images of JPEG/BMP/PNG/TIFF formats. The output stego images for three cover images (each of them in four different formats) are shown in Fig. 4. For experimentations, we have taken the 'soldier' image (contains 35,160 bits) as a secret data (ref. Fig. 4). The detailed results for different cover images are given in Table 7. A comparative graph is shown in Fig. 5.
The data hiding capacity of a colored cover image depends on its dimension, colors, edges and fine details. For the same data length and cover image size, the PSNR values for Lena, VOLUME 8, 2020 Algorithm GSA_JPEG Input: Cover Image, Secret Data, Shared key Output: Stego Image 1 Begin 2 Calculate cover image and data sizes in bits. 3 Estimate the capacity of Cover Image E cap and Calculate Decision Factor D f 4 Repeat for each 8 × 8 interleave component block and interleaved row from image I . 5 Repeat for each Triode j where j = 1 to 4. 6 Let p1, p2, and p3 be the parameters (coefficients) in triode j 7 Use the shared key to find indicator coefficient (say p1). 8 Let, {q, t} ∈{p2, p3}, where value (q) = min (value (p2), value (p3)) and value (t) = max (value (p2), value (p3)). 9 Calculate the number of bits n to be stored in q through VBAPSP2 (j = 4) or VBAPSP1 (j = 1, 2, 3). 10 Hide data in q by replacing the lower n bits of q by the n bits from data. 11 If value (q) > value (t), adjust the last bit of t. 12 Save new values of p1, p2 and p3 back into the coefficients and save 8 × 8 coefficient block 13 Adjust unmodified elements ei. 14 End

Algorithm GSA_RPT
Input: Cover Image, Secret Data, Shared key Output: Stego Image 1 Begin 2 Calculate cover image and data sizes in bits. 3 Estimate the capacity of Cover Image E cap 4 Repeat for each 8 × 8 interleave component block and interleaved row from image I . 5 Repeat for each Triode (a pixel) j, j = 1 to 64 6 Let p1, p2, and p3 be the parameters of a component (RGB values of pixel j) 7 Use the shared key to find indicator coefficient (say p1). 8 Let, {q, t} ∈ {p2, p3}, where value (q) = min (value (p2), value (p3)) and value (t) = max (value (p2), value (p3)). 9 Calculate the number of bits n to be stored in q through partition scheme. 10 Hide data in q by replacing the lower n bits of q by the n bits from data. 11 If value (q) > value (t), adjust the last bit of t. 12 Save new values of p1, p2 and p3 back into component (pixel) and save 8 × 8 pixel block. 13 Adjust unmodified elements ei. 14 End Pepper and Baboon images are slightly different based on color or other parameters (ref. to Table 7).
As can be seen in Fig. 5, the difference between average PSNRs of JPEG cover images with any other format is nearly13 dB. A possible reason behind this difference is that in JPEG cover images, the DCT coefficients cannot be altered much. However, the capacity utilization (% component/parameter utilization) being same due to the same size of the cover images.
For the cover image number four ('doll' in Table 7), for the same data length, utilization of parameters reaches 88.4%. This high utilization of parameters can be explained as follows. The estimated capacity of the 'doll' image is 120,000 bits. In this case, our algorithm selects to maximize the data spreading throughout the image; hence, it selects to store 1 bit/component with VBAPS partition scheme to be set for only 1 bit. In this way, we get % Extra Component/parameter Utilized as given previously as: ECU = 88.4 -28.5. Here, value of X is found by experimentation with VBAPS. With ECU = 59.86, we achieve a high level of data spreading. Similarly, 96.65% and 97.14% utilizations of parameters are achieved (with data length of 4,72,928 bits) for cover images 'Earth' and 'Cake' respectively, as shown in Table 7 (serial number 10 and 11).
However, in 'Birds' image (serial number 7 in Table 7), for the data length of 7,57,953 bits, the utilization of parameters is 65.27%. This is because, for this particular cover image and given data length, the maximum level for data spreading (which is 1 bit/component) was not possible.

B. ROBUSTNESS AGAINST STEGANALYSIS
In this section, we discuss the security aspects of the proposed method based on Steganalysis. In addition, we present ideas to handle a few of the possible attacks.
Seganalysis detects the stego image when it finds some similarities or irregularities or heavily loaded areas in the  image. To achieve robustness against Steganalysis, the stego image should not have any bulky area of similarities or should not have irregularities which can be recognized by Steganalysis. In our algorithm GSA, data embedding is based on values of image elements; for example, DCT elements values ranging from −1023 to 1024, whereas bitmap image pixel values range from 0 to 255 (8 bits/pixel). We worked directly on color images without any pre-processing steps (like color conversion). Let e i denote the number of data bits embedded in an element i. In GSA, the average secret data length per element is estimated by experimentation and found to be around 3.1 bits. To test robustness of the proposed method, we vary the value of e i and test the robustness against Steganalysis attack.
In our experimentations, for e i = 0.1 to 3.1, error value ER < 1. After embedding high amount of secret data bits/element with e i > 3.1, ER becomes more than one. Therefore, the quality of the stego image starts to reduce when more than 3.1 bpc / bpp are used. For e i less than 3.1 bpc / bpp, error less than one can be tolerated and does not affect the quality of the image much. The error ER increases more after embedding more secret data bits in more positive element values as shown in Figure 6. Since the attacks are more effective on high frequency elements, so we tested our modified high frequency elements against the attack and fixed the maximum number of bits/element to be 3.1 bpc/bpp. Embedding was done in interleaved blocks for the selected triode in an element. To compensate the effect of this modification, we used the technique of counter embedding bits in other remaining elements. For ease of discussions, we refer to the elements selected by GSA as 'modified' elements and the other elements as 'unmodified' elements. Suppose, we embed α bits in each unmodified element to balance the weight of elements so that the Steganalysis does not recognize the difference between the modified and unmodified elements.
Then we compared the unmodified elements error value ER with modified element error value, AER. We have tried to keep the balance between the modified and unmodified elements to achieve the balanced error. The error value of modified elements should be nearly equal to the error value of unmodified elements so that the Steganalysis will not be able to detect the difference between modified and unmodified elements; that means the error for the α bits AER should be ∼ = ER.
We also tested the robustness of the proposed algorithm against image processing attacks. For this purpose, we used format independent rich Steganalysis model [27]. Rich model works on the coefficients/pixel perceptual weight difference error and the distortion error at different level of sensitivity. For secret data length/element e i < 3.1 bpc/bpp, the Steganalyzer found ER < 0.5. For, e i < 0.5, we got ER < 0.25 as shown in Figure 6. It means that our generic algorithm is robust against Steganalysis with e i < 3.1. We also tested the JPEG and TIFF stego images generated in our experimentations using Ben-4D specific Steganalysis tool. The results are very promising for JPEG and TIFF images as shown in Table 8.
In the following, we suggest further modifications to GSA to counter some other attacks. Other common attacks on stego images include image processing attacks, like image cropping attack, orientation (rotation) attack or clipping attack, etc. Clustering and duplication are two approaches that can be applied for each image element to get rid of orientation attack (rotation attack) and image cropping attack. Duplication of information in the image can be a good solution to tackle the cropping or cutting attack on the image. Although this is a costly approach, we can divide the cover image into four quadrants and then replicate the secret data four times in each quadrant of the cover image. Another solution against cropping attack is to embed the secret data in the 'central' area of image so that if any attacker crops the corner sides of image, secret data can be still available in the center. Also we can combine these two methods of clustering and duplication to make our algorithm GSA more secure.
It is challenging to achieve three aspects of Steganography simultaneously, such as secret data embedding capacity, perceptibility of the stego image and its robustness against Steganalysis or attack. GSA is a step towards this goal, as it provides high perceptibility, high PSNR after embedding, high capacity secret data bits and promising results against Steganalysis.

C. COMPARATIVE RESULTS
Comparative results for PSNR values of some existing works with the proposed algorithm (GSA) are illustrated in Table 9 (JPEG cover images), Table 10 (Bitmap cover images) and Table 11 (PNG cover images). In all of these comparative results, we have used Lena, Paper and Baboon as cover  images in different formats (JPEG/ BMP/ PNG) with the same dimensions and for same data length. Table 9 shows the comparative results with nine other reported works. The proposed method shows 26% -31% average improvements in terms of PNSR values for three cases. A closer look at the numbers in Table 9 reveals that, out of nine works, only one work [29], [30] reported PSNR values greater than 50 for all three images. Even for these 'best previous results', our method provides 9% -11% improvements for all three images.
Similar comments can be made from Table 10, where comparisons are made with methods that work for Bitmap cover images. Here again, nine other methods (different than the methods in Table 9) are compared with the proposed method. However, as compared with Table 9, none of the previous nine methods gives uniformly the best results for all three images. Even if we take the best previous result for each image separately, the proposed method provides higher PNSR values for each of the three cover images. Likewise, Table 11 illustrates the comparative results with five other methods for PNG cover images. In all cases, the PSNR values produced by GSA are better compared with the other methods.
All three tables (Tables 9 -11) combined, we have actually compared the proposed method with 23 other reported works! It should be noted that, each of the previous methods in these tables focuses on a single cover image type, thus optimizing  their parameters for the target image type. This means, each method needs a particular image type for data hiding; a lack of cover image of such image type requires either to convert the cover image (which is not feasible sometimes, due to quality issues) or to use another algorithm. In contrast, the proposed method can utilize any types of cover images that are available.

VII. CONCLUSION
The proposed algorithm (called GSA in this paper) features the use of different types of images as cover media by utilizing an algorithm that depends of the abstract definition of image components. In addition, we used concepts like capacity pre-estimation, partition schemes and data spreading to embed high amount of secret data. The proposed method can be further enhanced by using experimentally estimated partition schemes.
When compared with other reported works based on PSNR values, the proposed method achieved at least 26% improvements. This result is very encouraging, although only the most common cover images were used. However, the proposed method provides other benefits that are possible only due its nature. For example, to avoid Steganalysis, different parts of VOLUME 8, 2020 the data can be sent using different image types. Also, in case of necessity, larger cover images can be used to spread the data adaptively.
To the best of our knowledge, the proposed algorithm is the first Steganography algorithm that can utilize cover images of type JPEG, Bitmap, TIFF and PNG. This way, the applicability of the proposed method is much wider that other reported works.