La plupart des schémas de stéganographie sont conçus de sorte  à minimiser une 
fonction de distorsion. Dans les exemples du chapitre précédent, 
ces fonctions de distorsion sont construites dans l'objectif de préserver 
les caractéristiques de l'images. 
On comprend aisément que dans des régions uniformes ou sur des bords clairement définis,
une modification même mineure de l'image est facilement détectable.
Au contraire les textures, le bruit ou les régions chaotiques 
sont  difficiles à modéliser. Les caractéristiques des images 
dont ces zones ont été modifiées sont ainsi similaires à celles
des images initiales.

Ces régions sont caractérisées par des courbes de niveau très perturbées.
Ce chapitre présente une nouvelle fonction de distorsion pour la stéganographie 
qui est basée sur les dérivées du second ordre, l'outil mathématique usuel 
pour les courbes de niveau.

Pour peu qu'on sache définir une fonction $P$ 
qui associe à chaque pixel $(x,y)$ sa valeur $P(x,y)$,
les pixels tels que les dérivées secondes de $P$ ont des valeurs élevées 
sont des bons candidats pour contenir un bit du message.
Cependant, une telle fonction $P$ n'est connue que de manière discrète,
\textit{i.e.}, en un nombre fini de points. 
Les dérivées premières et secondes ne peuvent donc pas être évaluées mathématiquement.
Au mieux, on peut construire une fonction qui approxime les 
dérivées de $P$ sur cet ensemble 
de pixels. Ordonner alors les pixels selon la matrice hessienne 
(\textit{i.e.}, la matrice des dérivées secondes) n'est pas trivial puisque celle-ci 
contient de nombreuses valeurs pour un seul pixel donné. 

On verra dans ce chapitre comment des approximations des dérivées 
premières et secondes pour des images numériques (Section~\ref{sec:gradient}) 
ont pu être
obtenues.
Deux propositions de dérivées secondes sont ensuite 
données et prouvées (Section~\ref{sec:second} et Section~\ref{sec:poly}).
Une adaptation d'une fonction de distorsion existante est étudiée
en Section~\ref{sec:distortion} et des expériences sont présentées 
en Section~\ref{sec:experiments}.
Ce chapitre a été publié dans~\cite{ccfg16:ip}.



\section{Des dérivées dans une image}\label{sec:gradient}

Cette section rappelle d'abord les liens entre lignes de niveau, gradient et 
matrice hessienne puis analyse ensuite leur construction à l'aide
de noyaux de la théorie du signal.


\subsection{Matrice hessienne}\label{sub:general}
On considère qu'une image peut être assimilée à une fonction de $\R^+\times \R^+$
dans $\R^+$ telle que la valeur $P(x,y)$ est associée à chaque  pixel de coordonnées $(x,y)$.
Les variations d'une telle fonction en $(x_0,y_0)$ peuvent être évaluées 
grâce au gradient 
$\nabla{P}(x_0,y_0) = \left(\frac{\partial P}{\partial x}(x_0,y_0),\frac{\partial P}{\partial y}(x_0,y_0)\right).
$
Le vecteur gradient pointe dans la direction où la fonction a le plus fort accroissement.
Des pixels ayant des valeurs voisines sont sur des lignes de niveaux qui sont orthogonales
à ce vecteur.

Les variations du vecteur gradient s'expriment usuellement à l'aide de la matrice
hessienne $H$ des dérivées partielles de second ordre de $P$.
\[
H = \begin{bmatrix} 
\dfrac{\partial^2 P}{\partial x^2} & 
\dfrac{\partial^2 P}{\partial x \partial y} \\
\dfrac{\partial^2 P}{\partial y \partial x} & 
\dfrac{\partial^2 P}{\partial y^2} \\
\end{bmatrix}. 
\]

En un pixel $(x_0,y_0)$, plus les valeurs de cette matrice sont éloignées de zéro,
plus le gradient varie en ce point. Évaluer ce type de matrice est ainsi primordial
en stéganographie. Cependant cette tâche n'est pas aussi triviale qu'elle n'y 
paraît puisque les images naturelles ne sont pas  définies à l'aide 
de fonction différentiables de $\R^+\times \R^+$
dans $\R^+$. 
La suite montre comment obtenir des approximations de telles matrices. 

\subsection{Approches classiques pour évaluer le gradient dans des images}\label{sub:class:1}
Dans ce contexte, les approches les plus utilisées pour évaluer un gradient 
sont ``Sobel'', ``Prewitt'', ``Différence centrale'' et `` Différence intermédiaire''.
Chacune de ces  approches applique un produit de convolution $*$ entre un noyau $K$
(rappelé dans le tableau~\ref{table:kernels:usual}) et une fenêtre $A$ de taille 
$3\times 3$. Le résultat 
 $A * K$ est une approximation du gradient horizontal
\textit{i.e.}, $\dfrac{\partial P}{\partial x}$.
Soit $K'$ le résultat de la rotation d'un angle $\pi/2$ appliquée à $K$.
La composante verticale du gradient,  $\dfrac{\partial P}{\partial y}$ est obtenue 
de manière similaire en évaluant $A * K'$. Lorsqu'on applique ceci sur toute 
la matrice image, on obtient  une matrice de même taille pour chacune des 
dérivées partielles. 

Les deux éléments de la première colonne (respectivement de la seconde) 
de la matrice hessienne
sont le résultat du calcul du gradient sur la matrice $\dfrac{\partial P}{\partial x}$
(resp. sur la matrice  $\dfrac{\partial P}{\partial y}$).


\begin{table}[ht]
\caption{Noyaux usuels pour évaluer des gradients d'images\label{table:kernels:usual}
}
\centering
\begin{tabular}{|c|c|c|}
    \hline
    Nom&   Sobel & Prewitt \\
    \hline
    Noyau & $\textit{Ks}= \begin{bmatrix} -1 & 0 & +1 \\ -2 & 0 & +2 \\ -1 & 0 & +1 \end{bmatrix} $ &
    $\textit{Kp}= \begin{bmatrix} -1 & 0 & +1 \\ -1 & 0 & +1 \\ -1 & 0 & +1 \end{bmatrix} $\\
    \hline\hline
    Nom & Différence  & Différence  \\
            & centrale & Intermédiaire \\ 
    \hline
    Noyau & $\textit{Kc}= \begin{bmatrix} 0&0&0 \\ -\dfrac{1}{2} & 0 & +\dfrac{1}{2} \\ 0&0&0 \end{bmatrix} $ &
    $\textit{Ki}= \begin{bmatrix} 0&0&0 \\ 0 & -1 & 1 \\ 0&0&0 \end{bmatrix} $ \\
    \hline
\end{tabular}
\end{table}




\subsection{Matrices hessiennes induites  par des approches 
de gradient d'images}\label{sub:class:2}
Il est connu que  
$\dfrac{\partial^2 P}{\partial x \partial y} $ est égal à 
$\dfrac{\partial^2 P}{\partial y \partial x}$ si 
les méthode qui calculent le gradient et le gradient du gradient (la matrice hessienne)
sont les mêmes.
Le tableau~\ref{table:hessian:usual} résume les les noyaux 
$K_{x^2}''$ et
$K_{xy}''$  
qui permettent de calculer respectivement 
$\dfrac{\partial^2 P}{\partial x^2}$ et 
$\dfrac{\partial^2 P}{\partial x \partial y}$ comme un produit de convolution 
pour chacun des opérateurs de gradient rappelés à la section précédente.


\begin{table}[ht]
\caption{Noyaux usuels pour évaluer des gradients de second ordre d'images
\label{table:hessian:usual}
}\centering
\begin{tabular}{|c|c|}
    \hline
    Sobel & Prewitt \\
    \hline
    $
    \textit{Ks}_{x^2}''= 
    \begin{bmatrix} 
    1 &  0  & -2  & 0 & 1 \\ 
    4 &  0  & -8  & 0 & 4 \\ 
    6 &  0  & -12 & 0 & 6 \\
    4 &  0  & -8  & 0 & 4 \\ 
    1 &  0  & -2  & 0 & 1 
    \end{bmatrix} 
    $
    & 
    $
    \textit{Kp}_{x^2}''= 
    \begin{bmatrix} 
    1 &  0  & -2  & 0 & 1 \\ 
    2 &  0  & -4  & 0 & 2 \\ 
    3 &  0  & -6 & 0 & 3 \\
    2 &  0  & -4  & 0 & 2 \\ 
    1 &  0  & -2  & 0 & 1 
    \end{bmatrix} 
    $
    \\
    \hline
    $
    \textit{Ks}_{xy}''=
    \begin{bmatrix} 
    -1 & -2 & 0 & 2 & 1 \\ 
    -2 & -4 & 0 & 4 & 2 \\ 
    0  & 0  & 0 & 0 & 0 \\
    2 & 4 & 0 & -4 & -2 \\ 
    1 & 2 & 0 & -2 & -1 
    \end{bmatrix} 
    $
    &
    $
    \textit{Kp}_{xy}''=
    \begin{bmatrix} 
    -1 & -1 & 0 & 1 & 1 \\ 
    -1 & -1 & 0 & 1 & 1 \\ 
    0  & 0  & 0 & 0 & 0 \\
    1 & 1 & 0 & -1 & -1 \\ 
    1 & 1 & 0 & -1 & -1 
    \end{bmatrix} 
    $ \\
    
    \hline\hline
    Différence & Différence  \\
    centrale  &intermédiaire \\ 
    \hline
    $
    \textit{Kc}_{x^2}''= 
    \begin{bmatrix} 
    0 &  0  & 0  & 0 & 0 \\ 
    0 &  0  & 0  & 0 & 0 \\ 
    \dfrac{1}{4} &  0  & -\dfrac{1}{2} & 0 & \dfrac{1}{4} \\
    0 &  0  & 0  & 0 & 0 \\ 
    0 &  0  & 0  & 0 & 0  
    \end{bmatrix} 
    $
    & 
    $
    \textit{Ki}_{x^2}''= 
    \begin{bmatrix} 
    0 &  0  & 0  & 0 & 0 \\ 
    0 &  0  & 0  & 0 & 0 \\ 
    0 &  0  & 1  & -2 & 1 \\
    0 &  0  & 0  & 0 & 0 \\ 
    0 &  0  & 0  & 0 & 0  
    \end{bmatrix} 
    $
    \\
    \hline
    $
    \textit{Kc}_{xy}''= 
    \begin{bmatrix} 
     -\dfrac{1}{4}  & 0 & \dfrac{1}{4}\\ 
     0  & 0 & 0 \\ 
     \dfrac{1}{4} & 0 &  -\dfrac{1}{4} 
    \end{bmatrix} 
    $
    & 
    $
    \textit{Ki}_{xy}''= 
    \begin{bmatrix} 
     0  & -1 & 1 \\ 
     0  & 1 & -1 \\ 
     0  &  0 & 0 
    \end{bmatrix} 
    $\\
    \hline
\end{tabular}

\end{table}

Le noyau $\textit{Ks}_{x^2}''$ permet de détecter si le 
pixel central appartient à un bord ``vertical'', même si celui contient du bruit,
en considérant ces voisins verticaux. Ces derniers sont vraiment 
pertinents dans un objectif de détecter les bords. Cependant, leur lien avec 
les lignes de niveau n'est pas direct. De plus tous les pixels qui sont dans la 
deuxième et la quatrième colonne de ce noyau sont ignorés.
Le noyau de Prewitt a des propriétés similaires.
Le noyau de différence centrale $\textit{Kc}_{x^2}''$ n'est pas influencé par les 
voisins verticaux du pixel central et peu paraître plus adapté ici.
Cependant, le noyau $\textit{Kc}_{xy}''$ perd aussi les valeurs des pixels 
qui sont alignés verticalement et diagonalement avec le pixel central.
Enfin, le noyau de différence intermédiaire  $\textit{Ki}_{x^2}''$ décale
à gauche la valeur des variations horizontales de $\dfrac{\partial P}{\partial x}$:
Le pixel central  $(0,0)$ reçoit  exactement la valeur 
$\dfrac{P(0,2)-P(0,1)}{1} - \dfrac{P(0,1)-P(0,0)}{1}$,
qui est une approximation de 
$\dfrac{\partial P}{\partial x}(0,1)$ et non de 
$\dfrac{\partial P}{\partial x}(0,0)$.
De plus, le noyau de différence intermédiaire $\textit{Ki}_{xy}''$ ne concerne 
que les pixels du coin supérieur droit, en perdant toutes les autres informations.
La section suivante propose une autre approche pour calculer les lignes de niveau avec une précision accrue.

\section{Des noyaux pour des lignes de niveau}\label{sec:second}
On ne restreint pas aux noyaux de taille fixe (comme  $3\times3$ or $5 \times 5$ 
dans les schémas précédents). Au contraire, on considère des noyaux de taille variable  
$(2n+1)\times (2n+1)$, $n \in \{1,2,\dots,N\}$, où
$N$ est un paramètre de l'approche.
Les variations horizontales du gradient sont extraites grâce au noyau de taille $(2n+1)\times (2n+1)$: 
\[
\arraycolsep=1.4pt
\def\arraystretch{1.4}
\def\arraystretch{1.4}
    \textit{Ky}_{x^2}''=
    \left(
    \begin{array}{ccccccccc}
         0           & & & & \dots& & & & 0  \\
         \vdots      & & & & & & & & \vdots \\
         0           & & & & \dots & & & & 0  \\
         \dfrac{1}{2n}& 0 & \dots & 0  & -\dfrac{2}{2n} & 0  & \dots & 0& \dfrac{1}{2n} \\
         0           & & & & \dots& & & & 0  \\
        \vdots      & & & & & & & & \vdots \\
         0           & & & & \dots & & & & 0  
    \end{array}
    \right)
\]

Lorsque le produit de convolution est appliqué sur une fenêtre $(2n+1)\times(2n+1)$,
le résultat est 
$\dfrac{1}{2}\left(\dfrac{P(0,n)-P(0,0)}{n} - \dfrac{P(0,0)-P(0,-n)}{n}\right)$, 
qui représente en effet les variation horizontales de la partie horizontale 
du gradient autour du pixel central. On obtient donc bien une approximation de 
$\dfrac{\partial^2 P}{\partial x^2}$.
Lorsque $n$ vaut 1, ce noyau est une version centrée du noyau horizontal de différence 
intermédiaires. $\textit{Ki}_{x^2}''$ à un facteur  $1/2$ près).
Lorsque $n$ vaut 2, on retrouve $\textit{Kc}_{x^2}''$.

Les variations verticales du gradient sont aussi obtenues en faisant subir 
à $\textit{Ky}_{x^2}''$ une rotation d'angle  $\pi/2$.
Les variations diagonales sont obtenues à l'aide du gradient 
$\textit{Ky}_{xy}''$ défini par:

\[
\arraycolsep=1.4pt
\def\arraystretch{1.4}
\textit{Ky}_{xy}'' = \dfrac{1}{4}
\left(
    \begin{array}{ccccccccc}
     \frac{1}{n^2}& \dots & \frac{1}{2n} & \frac{1}{n} 
     & 0 &
     -\frac{1}{n}&-\frac{1}{2n} & \dots &  -\frac{1}{n^2} 
     \\
     \vdots & 0     &    &
     & \dots &
      &  &  0 & \vdots 
     \\
     \frac{1}{2n} & 0 &        &
     & \dots &
        &  & 0& -\frac{1}{2n} 
     \\
     \frac{1}{n} & 0 &    &    
     & \dots &
      &  & 0 &  -\frac{1}{n}
     \\
     0      &      & & & \dots& & & & 0  \\
     -\frac{1}{n} & 0 &        &
     & \dots &
        &  &0 & \frac{1}{n}
     \\
     -\frac{1}{2n} & 0 &       &
     & \dots &
      &  & 0 &  \frac{1}{2n} 
     \\
      \vdots & 0 &    &    
     & \dots &
        &  & 0& \vdots 
     \\
     -\frac{1}{n^2}&  \dots & -\frac{1}{2n} & -\frac{1}{n} 
     & 0 &
     \frac{1}{n}& \frac{1}{2n} & \dots  & \frac{1}{n^2}
    \end{array}
    \right).
\]



En effet, lorsque  $n$ vaut 1, $\textit{Ky}_{xy}''$ se retrouve en calculant la moyenne
des variations horizontales de la composante verticale du gradient calculé à l'aide de 
$\textit{Ky}_{y}'$. Pour cette valeur de $n$, on a
$\textit{Ky}_{xy}'' =   \textit{Kc}_{xy}''$. 
Pour chaque nombre  $n$, $1 <  n \le N$, $\textit{Ky}_{xy}''$ se retrouve de la même
manière, c'est-à-dire en effectuant des moyennes de variations. 
Une preuve de la construction se trouve dans l'article~\cite{ccfg16:ip}.



L'objectif est de détecter les grandes variations des dérivées premières. 
Ainsi les dérivées secondes seront approximées comme les maximums des 
matrices hessiennes  obtenues lorsque $n$ varie entre  $1$ et $ N$.

La dérivée partielle $\dfrac{\partial^2 P}{\partial x^2}$ est définie par 

\begin{equation}
\dfrac{\partial^2 P}{\partial x^2}
= \max \left\{ 
\abs{\dfrac{\partial^2 P}{\partial x^2}_1}, \dots, \abs{\dfrac{\partial^2 P}{\partial x^2}_N}
\right \}. 
\label{eq:d2p_dx2}
\end{equation}
où $\dfrac{\partial^2 P}{\partial x^2}_n$ est le résultat de l'application 
du noyau $\textit{Ky}_{x^2}''$ de taille $(2n+1)\times (2n+1)$.
La même approche itérative est appliquée pour construire les 
approximations de 
$\dfrac{\partial^2 P}{\partial y \partial x}$ 
et de 
$\dfrac{\partial^2 P}{\partial y^2}$.

La section suivante étudie la pertinence d'interpoler une image par un polynome 
lorsqu'on cherche a obtenir ces dérivées secondes.


\section{Interpolation polynomiale pour le calcul de la matrice hessienne}\label{sec:poly}
Soit $P(x,y)$ la  valeur du pixel $(x,y)$ et soit  $n$, $1 \le n \le N$, 
tel que l'objectif est de trouver un polynome d'interpolation dans la fenêtre de taille  
$(2n+1)\times(2n+1)$ dont le pixel central a pour indice $(0,0)$.  
Il existe un unique polynôme $L : \R\times \R \to \R$ 
de degré $(2n+1)\times(2n+1)$ tel que  $L(x,y)=P(x,y)$ pour chaque pixel  
$(x,y)$ de cette fenêtre et ce polynome est défini par  
\begin{equation}
\begin{array}{l}
L(x,y) =  
\sum_{i=-n}^{n}
\sum_{j=-n}^{n}P(i,j)
\left( 
\prod_{\stackrel{-n\leq j'\leq n}{j'\neq j}}
\frac{x-j'}{i-j'}
\right)
\left( 
\prod_{\stackrel{-n\leq i'\leq n}{i'\neq i}}
\frac{x-i'}{i-i'}
\right)
\end{array}
\end{equation}
On peut facilement prouver que la dérivée partielle  de $L$ selon $x$ est 
\begin{equation}
\begin{array}{l}
\dfrac{\partial L}{\partial x} =  
\sum_{i=-n}^{n}
\sum_{j=-n}^{n} 
P(i,j)
\left( 
\prod_{\stackrel{-n\leq j'\leq n}{j'\neq j}}
\frac{y-j'}{j-j'}
\right)
\left( 
\sum_{\stackrel{-n\leq i'\leq n}{i'\neq i}}
\frac{1}{i-i'}
\prod_{\stackrel{-n\leq i''\leq n}{i''\neq i,i'}}
\frac{x-i''}{i-i''}
\right)
\end{array}
\end{equation}
\noindent et ainsi en déduire que les dérivées partielles de second ordre 
sont 
\begin{eqnarray}
\dfrac{\partial^2 L}{\partial x^2} &=&  
\sum_{i=-n}^{n}
\sum_{j=-n}^{n} 
P(i,j)
\left( 
\prod_{\stackrel{-n\leq j'\leq n}{j'\neq j}}
\frac{y-j'}{j-j'}
\right) 
\left( 
\sum_{\stackrel{-n\leq i'\leq n}{i'\neq i}}
\frac{1}{i-i'}
\sum_{\stackrel{-n\leq i''\leq n}{i''\neq i,i'}}
\frac{1}{i-i''}
\prod_{\stackrel{-n\leq i'''\leq n}{i'''\neq i,i',i''}}
\frac{x-i'''}{i-i'''}
\right)
\label{eq:deriv:poly:x2} \\
\dfrac{\partial^2 L}{\partial y \partial x} &= & 
\sum_{i=-n}^{n}
P(i,j) 
\left( 
\sum_{\stackrel{-n\leq j'\leq n}{j'\neq j}}
\frac{1}{j-j'}
\prod_{\stackrel{-n\leq j''\leq n}{j''\neq j, j'}}
\frac{y-j''}{j-j''}
\right)
\left( 
\sum_{\stackrel{-n\leq i'\leq n}{i'\neq i}}
\frac{1}{i-i'}
\prod_{\stackrel{-n\leq i''\leq n}{i''\neq i, i'}}
\frac{x-i''}{i-i''}
\right)
\label{eq:deriv:poly:yx}
\end{eqnarray}
Ces dérivées secondes sont calculées pour chaque pixel central, \textit{i.e.} le pixel dont l'indice est  $(0,0)$ dans la fenêtre.
En considérant cette particularisation, l'équation~(\ref{eq:deriv:poly:x2}) 
se simplifie en 

\begin{equation}
\begin{array}{l}
\dfrac{\partial^2 L}{\partial x^2} =  
\sum_{i=-n}^{n}
P(i,0)
\left( 
\sum_{\stackrel{-n\leq i' < i'' \le n}{i',i''\neq i}}
\frac{2}{(i-i')(i-i'')}
\prod_{\stackrel{-n\leq i'''\leq n}{i'''\neq i,i',i''}}
\frac{i'''}{i'''-i}
\right).
\end{array}
\label{eq:deriv:poly:x2:simpl:2}
\end{equation}

\begin{table}[ht]
    \caption{Noyaux $Ko''_{x^2}$ pour  calculer des dérivées de second ordre à partir d'interpolation polynomiale}
    \centering
\def\arraystretch{1.4}
    \begin{tabular}{|c|c|}
         \hline
         $n$ & $Ko''_{x^2}$ \\
         \hline
         $2$ & $\left[\dfrac{-1}{12}, \dfrac{4}{3} , \dfrac{-5}{2}, \dfrac{4}{3} \dfrac{-1}{12}\right]$ \\
         \hline
         $3$ & $\left[\dfrac{1}{90}, \dfrac{-3}{20}, \dfrac{3}{2}, \dfrac{-49}{18}, \dfrac{3}{2}, \dfrac{-3}{20}, \dfrac{1}{90}\right]$ \\
         \hline
         $4$ & $\left[\dfrac{-1}{560}, \dfrac{8}{315}, \dfrac{-1}{5}, \dfrac{8}{5}, \dfrac{-205}{72}, \dfrac{8}{5}, \dfrac{-1}{5}, \dfrac{8}{315}, \dfrac{-1}{560}\right]$\\
         \hline
         %$5$ & $\left[\dfrac{1}{3150}, \dfrac{-5}{1008}, \dfrac{5}{126}, %\dfrac{-5}{21}, \dfrac{5}{3}, \dfrac{-5269}{1800}, \dfrac{5}{3}, %\dfrac{-5}{21}, \dfrac{5}{126}, \dfrac{-5}{1008}, \dfrac{1}{3150}\right]$\\
         %\hline
    \end{tabular}

    \label{table:sod:hori:poly}
\end{table}


\begin{table}[ht]
\caption{ Noyaux pour les dérivées secondes en $x$ et $y$ lors de l'interpolation polynomiale\label{table:sod:diag:poly}
}
\centering
%\scriptsize
\def\arraystretch{1.5}
\begin{tabular}{|c|c|}
    \hline
    $n$ & $Ko''_{xy}$\\
    \hline
    2 & $
\begin{bmatrix} 
\dfrac{1}{4} & 0 &  \dfrac{-1}{4}\\
 0 & 0 &0\\
\dfrac{-1}{4} & 0 &  \dfrac{1}{4}\\
\end{bmatrix}
$
 \\   
 \hline
   3 &  
   $\begin{bmatrix} 
\dfrac{1}{144} & \dfrac{-1}{18} & 0 & \dfrac{1}{18} & \dfrac{-1}{144}\\
\dfrac{-1}{18} & \dfrac{4}{9} & 0 & \dfrac{-4}{9} & \dfrac{1}{18}\\
0 & 0 & 0 & 0 &0\\
\dfrac{1}{18} & \dfrac{-4}{9} & 0 & \dfrac{4}{9} & \dfrac{-1}{18}\\
\dfrac{-1}{144} & \dfrac{1}{18} & 0 & \dfrac{-1}{18} & \dfrac{1}{144}
\end{bmatrix}
$\\
  \hline
\end{tabular}
\end{table}

Cette dérivée partielle peut s'écrire comme un produit de convolution avec un noyau
noté $Ko''_{x^2}$. Des instances de tels noyaux, pour $n=2$, $3$ et  $4$
sont données au tableau~\ref{table:sod:hori:poly}. De manière similaire,  
le tableau~\ref{table:sod:diag:poly} donne deux exemples pour $n=1$ et $n=2$ 
de noyaux $Ko''_{xy}$ permettant de calculer directement les dérivées 
de second ordre selon $x$ et $y$ en $(0,0)$.
On remarque que pour $n=1$, le noyau est égal à $Kc''_{xy}$. 







\section{Fonction de distorsion}\label{sec:distortion}
Une fonction de distorsion associe à chaque pixel  $(i,j)$ 
le coût $\rho_{ij}$ du modification  par $\pm 1$. L'objectif est d'associer une 
valeur faible aux pixels dont toutes les dérivées secondes sont éloignées de 0 
et une valeur rédhibitoire sinon.
Dans WOW comme dans  UNIWARD la fonction de distorsion est définie par 
\[
\rho_{ij}^w = 
\left(
\abs{\xi_{ij}^h}^{p} +
\abs{\xi_{ij}^v}^{p} +
\abs{\xi_{ij}^d}^{p} 
\right)^{-\frac{1}{p}}
\]
où $p$ est un nombre négatif et  
$\xi_{ij}^h$ (resp. $\xi_{ij}^v$ et $\xi_{ij}^d$)
représentent la pertinence horizontale (resp. verticale et diagonale) de modification.
Une faible pertinence dans une direction signifie que l'embarquement 
dans ce pixel est inapproprié.
La fonction de distorsion que l'on a retenu est une particularisation ($p=-1$) 
de cette dernière:
\[
\rho_{ij} = 
\left(
\abs{\dfrac{\partial^2 P}{\partial x^2}(i,j)}^{-1} +
\abs{\dfrac{\partial^2 P}{\partial y^2}(i,j)}^{-1} +
\abs{\dfrac{\partial^2 P}{\partial y \partial x}(i,j)}^{-1}
\right)
\]


\section{Expérimentations}\label{sec:experiments}

Tout d'abord, l'ensemble du code est accessible en ligne\footnote{\url{https://github.com/stego-content/SOS}}.
La Figure~\ref{fig:oneimage} représente les résultats d'embarquement de données dans 
l'image 38 du challenge BOSS~\cite{Boss10} en suivant les deux schémas basés 
sur les dérivées secondes présentés dans ce chapitre.
Le taux d'embarquement $\alpha$ est fixé à 0.4 bits par pixel et les noyaux sont 
construits avec $N=4$. On remarque bien que les pixels dans les zones uniformes 
et les pixels dans les bords bien définis ne sont pas modifiés par l'approche tandis 
qu'au contraire les zones peu prévisibles (le monument par exemple) 
concentrent les changements.




\begin{figure}[ht]
    \centering
    \begin{tabular}{|c|c|c|}
    \hline
    Schéma & Image. Stego. & Différence avec le support \\
    \hline
    Approche à base de $Ky$  &\includegraphics[scale=0.20]{images/38_dp}&
    \includegraphics[scale=0.20]{images/38_dp_diff} \\
    \hline
    Approche à base de  $Ko$  & \includegraphics[scale=0.20]{images/38_poly} &
    \includegraphics[scale=0.20]{images/38_poly_diff} \\
    \hline
    \end{tabular}
    \caption{Exemple de changements dus à un embarquement avec  $\alpha = 0.4$}
    \label{fig:oneimage}
\end{figure}





\subsection{Choix des paramètres}

Les deux méthodes présentées ici dépendent de noyaux dont la taille va jusqu'à  
$(2N+1)\times(2N+1)$. Cette section montre comment évaluer $N$ pour maximiser 
le niveau de sécurité.
Pour chaque approche, 1,000 images stégos avec  
$N=2$, $4$, $6$, $8$, $10$, $12$ et $14$ et dont les supports appartiennent 
à l'ensemble des 10000 images du challenge BOSS. 
La sécurité de l'approche a été évaluée avec le stéganalyseur 
Ensemble Classifier~\cite{DBLP:journals/tifs/KodovskyFH12}.
Pour un taux d'embarquement   $\alpha$ égal soit à  $0.1$ ou soit à  $0.4$, 
l'erreur moyenne de test (exprimée en pourcentage) a été calculée. 
Le tableau~\ref{table:choice:parameter} synthétise les résultats.
On observe que la taille $N=4$ (respectivement $N=12$) 
permet d'obtenir des erreurs suffisamment élevées pour l'approche basée sur $Ky$  
(resp. pour celle basée sur  $Ko$). 
Ces deux valeurs de paramètre sont retenues par la suite.

\begin{table}[ht]
\caption{Erreur moyenne de test en fonction de la taille du noyau}
\centering
\setlength{\tabcolsep}{3pt} 
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\cline{2-9}
\multicolumn{1}{c|}{} & \multirow{2}{*}{$\alpha$} & \multicolumn{7}{c|}{$N$} \\
\cline{3-9}
\multicolumn{1}{c|}{}&  & $2$ & $4$&  $6$&  $8$& $10$& $12$ & $14$ \\
\hline{}
Erreur moyenne    
& \textit{0.1} & 39& 40.2&  39.7&  39.8& 40.1& $39.9$&  $39.8$  \\
\cline{2-9}
de test pour le noyau $K_y$ & \textit{0.4}& 15& 18.8& 19.1&  19.0& 18.6& 18.7 & 18.7 \\
\hline
Erreur moyenne    & \textit{0.1} & 35.2 & 36.6&  36.7&  36.6& 37.1& 37.2 & 37.2 \\
\cline{2-9}
de test pour le noyau $K_o$ & \textit{0.4}  & 5.2 & 6.8& 7.5 & 7.9 & 8.1 & 8.2 & 7.6 \\
\hline
\end{tabular}
\label{table:choice:parameter}

\end{table}


\subsection{Évaluation de la sécurité}
Comme dans ce qui précède, la base du challenge BOSS a été retenue.
Ici c'est cependant l'ensemble des 10000 images qui a été utilisé pour évaluer 
la sécurité.
C'est aussi les caractéristiques SRM et Ensemble Classifier qui ont été utilisées 
pour évaluer la sécurité de l'approche..
Quatre taux d'embarquement  0.1, 0.2, 0.3 et  0.4
ont été retenus. Pour chaque expérience, 
l'aire sous la courbe de ROC (AUC),
l'erreur moyenne de test (ATE), 
l'erreur OOB (OOB) sont données et tous les résultats sont synthétisés 
dans le tableau~\ref{table:experiments:summary}.
Même si la sécurité est souvent plus faible que celle observée 
pour les outils les plus récents, 
les résultats concernant $K_y$ sont encourageants car ils ne sont pas éloignés de 
ceux de l'état de l'art sans aucune optimisation.
Enfin la faible sécurité de $K_o$ s'explique par le fait que le polynôme interpole 
exactement l'image en tous les points de la fenêtre, mais il ne tient pas forcément 
compte des variations dans celle-ci. Les dérivées secondes sont certes faciles 
à exprimer, mais elles ne représentent pas nécessairement fidèlement celles de l'image.

\begin{table}
\caption{Évaluation de la sécurité}\label{table:experiments:summary}
\centering
\begin{tabular}{|l|l|l|l|l|}
\hline
 & Taux & AUC & ATE   &  OOB \\ \hline
{WOW}   
            & 0.1 & 0.6501 & 0.4304 & 0.3974\\
            & 0.2 & 0.7583 & 0.3613 & 0.3169\\
            & 0.3 & 0.8355 & 0.2982 & 0.2488\\
            & 0.4 & 0.8876 & 0.2449 & 0.1978\\ 
                                       \hline

{SUNIWARD}  & 0.1 & 0.6542 & 0.4212 & 0.3972\\
            & 0.2 & 0.7607 & 0.3493 & 0.3170\\
            & 0.3 & 0.8390 & 0.2863 & 0.2511\\
            & 0.4 & 0.8916 & 0.2319 & 0.1977\\ 
 \hline
 {MVG}      & 0.1 & 0.6340 & 0.4310 &0.4124 \\
            & 0.2 & 0.7271 & 0.3726 &0.3399 \\
            & 0.3 & 0.7962 & 0.3185& 0.2858\\
            & 0.4 & 0.8486& 0.2719& 0.2353 \\ 
 \hline
  {HUGO}    & 0.1 & 0.6967 & 0.3982 & 0.3626 \\
            & 0.2 & 0.8012 & 0.3197 & 0.2847 \\
            & 0.3 & 0.8720 & 0.2557 & 0.2212 \\
            & 0.4 & 0.9517 & 0.1472 & 0.1230 \\ 
 \hline
{Approche à base de $Ky$} 
            & 0.1 & 0.7378 & 0.3768 & 0.3306 \\
            & 0.2 & 0.8568 & 0.2839 & 0.2408 \\
            & 0.3 & 0.9176 & 0.2156 & 0.1710 \\
            & 0.4 & 0.9473 & 0.1638 & 0.1324\\
 \hline
{Approche à base de $Ko$} 
            & 0.1 & 0.6831 & 0.3696  & 0.3450 \\
            & 0.2 & 0.8524 & 0.1302  & 0.2408 \\
            & 0.3 & 0.9132 & 0.1023  & 0.1045 \\
            & 0.4 & 0.9890 & 0.0880  & 0.0570 \\
                              \hline 
                              
\end{tabular}
\end{table}


%\begin{figure}[ht]
%\centering
%\includegraphics[width=9cm]{22} 
%\caption{Average Testing Error(ATE) } 
%\label{fig1}
%\end{figure}

%\begin{figure}[ht]
%\centering
%\includegraphics[width=9cm]{11} 
%\caption{Out of Bag($E_{\textit{OOB}}$)} 
%\label{fig2}
%\end{figure}

%\begin{figure}[ht]
%\centering
%\includegraphics[width=9cm]{33} 
%\caption{Area Under Curve(AUC)} %\label{fig3}
%\end{figure}


\section{Conclusion}
La principale contribution de ce chapitre est de proposer des 
fonctions de distorsion basées sur des approximations de dérivées 
secondes, l'idée sous-jacente étant qu'une zone où les lignes de niveau 
ne sont pas clairement définies est peu prévisible.
Deux approches d'approximation ont été présentées.
La première  basée 
sur un produit de convolution, exploite des noyaux déjà intégrés dans des
algorithmes de détection de bords.
La seconde s'appuie sur une interpolation polynomiale de l'image.
Ces deux méthodes ont été complètement implantées et leur sécurité 
face à des stéganalyseurs a été étudiée. Les résultats encouragent 
à poursuivre dans cette direction.