## 3 Proposed Work
### Recovering the Original Image and Hidden Information  
In this phase, the data-embedded image \(E^{\prime}\) and the decryption key \(K\) are given as input and we try to output the original image and the hidden secret information. It should be noted that the information shared with the receiver includes the data-embedded image \(E^{\prime}\), the decryption key \(K\), and the block size for processing the image \(A\times A\). These details are essential to restore the original image and the hidden data. The receiver begins the recovery process by dividing the image \(E^{\prime}\) into \(TN\) non-overlapping blocks of size \(A\times A\). The proposed RDH scheme uses machine-learning models, such as support vector machine (SVM), convolutional neural network (CNN), and K-nearest neighbour (KNN) for image recovery. Hence, before we process the non-overlapping blocks of the image \(E^{\prime}\), the machine learning models should be trained as two-class classifiers. Please refer to the details of training the models in Section 3.3.1. Consider \(NB_{i}\) as the non-overlapping blocks at position \(i\) of the image \(E^{\prime}\). This implies,  
\[E^{\prime}=\bigcup_{i=1}^{TN}NB_{i}. \tag{8}\]  
The receiver has to recover each original block from \(NB_{i}\) and also take out the hidden data unit from that block. To achieve this, the receiver processes one block at a time. That is, a block \(NB_{i}\) is passed to the Fibonacci transform function over a set of possible values  
Figure 2: Illustration of data flow when hiding the secret information. that can be embedded into a block of size \(A\times A\) pixels. We know that the data unit that can be embedded in a block of side length \(A\) spans in the range \(\{0,1,2,\ldots,j-1\}\), where \(j\) is the period of the Fibonacci transform (refer to Equation (5)). For each value in the set \(\{0,1,2,\ldots,j-1\}\), we have a scrambled form for the block \(NB_{i}\). Let,  
\[ZZ=\{0,1,2,\ldots,j-1\}, \tag{9}\]  
and the Fibonacci transform function is \(F(x,y)\). Thus,  
\[F(NB_{i},ZZ_{l})=NB_{i,ZZ_{l}}, \tag{10}\]  
where \(i\) indicates the location of the block \(NB\) in \(E^{\prime}\), \(ZZ_{l}\) reflects each individual value from the set \(ZZ\) with \(0\leq l\leq j-1\), and \(NB_{i,ZZ_{l}}\) is the scrambled block generated by passing \(NB_{i}\) and \(ZZ_{l}\) as the arguments to the Fibonacci transform function. For example, if we assume that the block size \(A=8\), then the maximum values that the Fibonacci transform can embed in these blocks is from \(\{0,1,2,\ldots,15\}\). Hence, we perform the Fibonacci transform function on each block over this set of data and, thus, return 16 different versions of the same block. The next step in the process is to decrypt all the different \(NB_{i,l}\) blocks and to identify the original block. Let the decrypted form of the \(NB_{i,l}\) be indicated as \(DB_{i,l}\). The function of the ensemble approach is to identify the original block from the different \(DB_{i,l}\) blocks. The ensemble algorithm works in such a way that a block is taken into confidence if at least two of the models favor or classify a particular block \(DB_{i,l}\) as the original block. In practice, the SVM and KNN models take the feature vectors of the blocks to perform classification, whereas the CNN model takes in the blocks directly to extract their own features and classify the blocks. Here, the RDH scheme considers a voting point of view to find the original block. It considers a block to be original if it is classified as an original block by the majority of the working models. That is, the block is classified as original if all the three or at least two models classify it as an original block. In the worst-case scenario, the block which is classified as an encrypted block with the least confidence by the SVM and CNN models is taken into confidence. An illustrative example of the original block-recovery process at the receiver side is shown in Figure 3.  
Now, let the recovered original block be \(RB_{i}\).