# A Robust and Secure Watermarking Approach Based on Hermite Transform and SVD-DCT
## 4 Proposed HT, DCT, and SVD and Block-Based Watermarking Method
### Watermarking Insertion Process
Each one is a matrix \(I_{o,p-o}(x,y)\) of size \(m_{2}\times n_{2}\), where \(m_{2}=\frac{m_{1}}{T}\) and \(n_{2}=\frac{n_{1}}{T}\), where \(T\) is a sub-sampling factor, e.g., \(T=2\). * Select the low-spatial-frequency Hermite coefficient \(M=I_{0,0}\) to embed the watermarks \(W_{1}\) and \(W_{2}\). * Divide \(M\) into blocks of size \(b\times b\), obtaining the multidimensional array \(B\) composed of \(L=\frac{m_{2}}{b}\times\frac{n_{2}}{b}\) blocks. * Apply the HVS analysis to each block of matrix \(B\) through Equation (19), obtaining HVS\({}_{B}\). * Sort each value of HVS\({}_{B}\) in ascending order, storing the position idx\({}_{HVS}\) of each ordered block, where the lowest values of HVS\({}_{B}\) correspond to the best embedding regions. * Apply the DCT to each block of \(B\), obtaining \(C=\text{DCT}\{B\}\), where \(C\in\mathbb{R}^{b\times b\times L}\) and \(L\) is the number of blocks of size \(b\times b\). * SVD-based insertion process:
* Embed the watermarks \(W_{1}\) and \(W_{2}\) using the SVD-based Algorithm 1, with blocks of \(b\times b=4\times 4\), obtaining the multidimensional output array \(C^{\prime}\). * To fully embed the LOGO and image MetaData within the host image, the following relation must be satisfied: \[L_{bin}\leq L.\] (21)
* Making the watermarking image:
* Apply the inverse DCT to each block of \(C^{\prime}\), obtaining \(M^{\prime}=\text{DCT}^{-1}\{C^{\prime}\}\). * Substitute the low-spatial-frequency Hermite coefficient of \(I_{o,p-o}(x,y)\): \(I_{0,0}(x,y)=M^{\prime}\). * Perform the inverse Hermite transform of \(I_{o,p-o}(x,y)\) to obtain \(I(x,y)_{\text{marked}}\). ```
Input:\(C\in\mathbb{R}^{4\times 4\times L}\), \(\text{idx}_{HVS}\in\mathbb{R}^{1\times L}\), \(W_{1}\in\mathbb{R}^{1\times L_{\text{kin}}}\), \(W_{2}\in\mathbb{R}^{1\times L_{\text{kin}}}\), \(\alpha\) Output:\(C^{\prime}\in\mathbb{R}^{4\times 4\times L}\) /* Multidimensional output array initialization \(C^{\prime}\): */ C' \(\leftarrow\) C; /* Counter initialization: */ \(j\gets 1\); while\(j\leq L_{\text{bin}}\)do /* Reading the HSV indexes: */ \(i\leftarrow\text{idx}_{HVS}(j)\); /* Reading each block to mark: */ temp \(\leftarrow\) C{i};  Divide temp \(\in\mathbb{R}^{4\times 4}\) into four sub-blocks of \(2\times 2\): temp \(\leftarrow\) \(\left[ \begin{smallmatrix}b_{1}&b_{2}\\ b_{3}&b_{4}\end{smallmatrix} \right]\); /* First singular-value decomposition: */ \([U_{1},S_{1},V_{1}]\gets SVD(b_{1})\); \([U_{2},S_{2},V_{2}]\gets SVD(b_{2})\); \([U_{3},S_{3},V_{3}]\gets SVD(b_{3})\); \([U_{4},S_{4},V_{4}]\gets SVD(b_{4})\); /* Embedding bit \(W_{1}(i)\) of the LOGO into the \(b_{1}\) and \(b_{4}\) sub-blocks: */ \(SW_{1}\gets S1+\alpha*(W_{1}(i)*\left[ \begin{smallmatrix}1&1\\ 1&1\\ 1&1\\ 1&1\\ \end{smallmatrix} \right])\); \(SW_{4}\gets S4+\alpha*(W_{1}(i)*\left[ \begin{smallmatrix}1&1\\ 1&1\\ 1&1\\ 1&1\\ \end{smallmatrix} \right])\); /* Singular-value decomposition of \(SW_{1}\) and \(SW_{4}\): */ \([U_{12},S_{1,2},V_{1,2}]\gets SVD(SW_{1})\); \([U_{4,2},S_{4,2},V_{4,2}]\gets SVD(SW_{4})\); /* Matrices reconstruction from SVD: */ \(WM_{1}\gets U_{1}*S_{1,2}*V_{1}^{\top}\); \(WM_{4}\gets U_{4}*S_{4,2}*V_{4}^{\top}\); /* Embedding bit \(W_{2}(i)\) of the image MetaData into the \(b_{2}\) and \(b_{3}\) sub-blocks: */ \(SW_{2}\gets S2+\alpha*(W_{2}(i)*\left[ \begin{smallmatrix}1&1\\ 1&1\\ 1&1\\ \end{smallmatrix} \right])\); \(SW_{3}\gets S3+\alpha*(W_{2}(i)*\left[ \begin{smallmatrix}1&1\\ 1&1\\ 1&1\\ \end{smallmatrix} \right])\); /* Singular-value decomposition of \(SW_{2}\) and \(SW_{3}\): */ \([U_{2,2},S_{2},V_{2,2}]\gets SVD(SW_{2})\); \([U_{3,2},S_{3,2},V_{3,2}]\gets SVD(SW_{3})\); /* Matrices; reconstruction from SVD: */ \(WM_{2}\gets U_{2}*S_{2,2}*V_{2}^{\top}\); \(WM_{3}\gets U_{3}*S_{3,2}*V_{3}^{\top}\); /* Ensembling the marked block: */ \(C^{\prime}\{i\}\leftarrow\left[ \begin{smallmatrix}WM_{1}&WM_{2}\\ WM_{3}&WM_{4}\end{smallmatrix}