Annuaire d'articles
- avant-propos
- 1. Analyse des objectifs et des besoins
- 2. Prétraitement des images
- 3. Conception d'algorithme de filigrane adaptatif
- 4. Évaluation des performances de l'algorithme de filigrane
- Ressources de disque réseau et github
- post-scriptum
avant-propos
En ce qui concerne la conception et la mise en œuvre de l'algorithme de tatouage adaptatif basé sur la transformée en cosinus discrète DCT, les codes sont tous originaux et nécessitent une certaine base pour la transformée DCT.L'idée d'auto-adaptation se traduit principalement par le fait que la position de la filigrane caché dans chaque bloc de pixels traité est différent.Oui, il peut sélectionner automatiquement un emplacement approprié pour le masquage.Cet article est un rapport de travail à grande échelle sur la technologie de masquage d'informations.Certaines connaissances pertinentes peuvent être répétées.Vous pouvez choisir les points clés et J'espère pouvoir inspirer les autres et vous apporter un peu d'inspiration.
Quel genre de fin est-il digne des hauts et des bas en cours de route?
1. Analyse des objectifs et des besoins
1.1 Objectif de conception du projet
Avec les changements rapides de l'économie sociale d'aujourd'hui, les progrès rapides de la technologie Internet, l'avènement de l'ère de l'information et le développement rapide de la technologie des réseaux informatiques, de la technologie de l'information multimédia et des disciplines connexes, les œuvres numériques telles que les images numériques, l'audio numérique et les vidéos numériques ont été largement diffusées, et progressivement intégrées dans la vie quotidienne.
Dans la vie réelle, les œuvres numériques sont omniprésentes et leurs problèmes de protection de la sécurité ont suscité une large attention. Sans l'autorisation du propriétaire, les utilisateurs de produits numériques peuvent, intentionnellement ou non, altérer, copier et diffuser les informations de travail, ce qui, dans une certaine mesure, menace la sécurité des informations de travail, et sa fiabilité est inévitable. Par conséquent, la protection de la sécurité de la diffusion d'informations multimédias numériques, la garantie raisonnable des droits d'auteur et des intérêts légaux du propriétaire et le maintien efficace de la sécurité et de la fiabilité des informations sur le travail sont devenus des problèmes urgents de sécurité de l'information à traiter dans le cadre universitaire et les milieux industriels. .
Ce projet vise à concevoir un algorithme de tatouage d'image adaptatif basé sur les connaissances apprises en classe et sur la base d'une compréhension approfondie des principes d'incorporation et d'extraction de filigrane, qui peut intégrer des informations de filigrane dans l'image tout en garantissant la qualité visuelle de l'image porteuse Dans l'image porteuse, elle peut résister dans une certaine mesure à l'attaque par filigrane et, en même temps, elle peut déterminer si l'image à identifier contient des informations de filigrane, ce qui fournit une nouvelle solution pour la propriété du droit d'auteur des images numériques.
1.2 Analyse des exigences du projet
Selon l'objectif de conception et l'objectif de réalisation, l'algorithme de tatouage que j'ai conçu doit pouvoir remplir les fonctions suivantes :
1. Il peut prétraiter l'image d'origine et la convertir en une image en niveaux de gris.
2. Il peut complètement intégrer les données du filigrane dans l'image porteuse et les extraire.
3. L'algorithme de filigrane doit contenir l'idée d'auto-adaptation, qui peut sélectionner de manière adaptative la position d'intégration des données de filigrane en fonction de l'image porteuse.
4. Le filigrane doit pouvoir résister dans une certaine mesure aux attaques de filigrane courantes.
5. Capable de juger le propriétaire du filigrane en calculant la similarité de l'image du filigrane.
2. Prétraitement des images
2.1 Le rôle du prétraitement des images
Étant donné que l'image d'origine est une image binaire en noir et blanc, si l'image d'origine est directement intégrée en tant qu'image en filigrane, non seulement la sécurité de l'image en filigrane sera réduite, mais également sa robustesse sera réduite car le binaire en noir et blanc intégré image. Si l'image d'origine est une image couleur, l'extraction directe des informations RVB de chaque pixel de l'image couleur rendra les données de filigrane à intégrer trop compliquées et les exigences relatives à la taille de l'image porteuse seront plus élevées.
Afin d'améliorer la robustesse de l'image tatouée contre les attaques, d'améliorer la sécurité du système et de prendre en compte la quantité de données embarquées dans le filigrane, j'ai adopté le brouillage logistique chaotique de la carte, le traitement des automates cellulaires et le lissage du filtre moyen en séquence, et enfin l'original Les images de nom et de numéro d'étudiant sont converties en images en niveaux de gris, et la valeur en niveaux de gris de chaque pixel de l'image en niveaux de gris est convertie en données binaires pour l'intégration, de sorte que lorsque les mauvaises informations de bit sont extraites, seule l'échelle de gris du l'image extraite verra sa valeur modifiée, ce qui améliore dans une certaine mesure la robustesse et la sécurité du filigrane.
2.2 Brouillage de la carte du chaos logistique
La carte logistique est une simple carte itérative discrète unidimensionnelle non linéaire, qui est relativement simple à mettre en œuvre et est devenue l'une des cartes chaotiques les plus largement utilisées dans les systèmes chaotiques numériques. La fonction logistique est dérivée d'un système de dynamique démographique et sa forme d'équation système est la suivante :
où est le paramètre de bifurcation, lorsque le paramètre de bifurcation passe d'environ 3,56995 à 4, la cartographie entre dans un état chaotique, calculé sous différentes conditions de paramètre de bifurcation Valeur de l'équation :
on peut voir sur la figure que lorsque le paramètre de bifurcation obtient une valeur spécifique, la carte logistique entrera dans un état chaotique. Dans le processus de mise en œuvre spécifique, j'ai utilisé le paramètre clé pour construire une séquence chaotique et brouillé l'image d'origine , lors de la conception de la clé, j'ai divisé mon numéro d'étudiant en paramètre pour obtenir la condition initiale du système chaotique. Lors du calcul de la valeur de la séquence chaotique, si la valeur de la séquence est inférieure ou égale à 127, remplacez les pixels de l'image d'origine , sinon conserver Pas de changement, l'implémentation spécifique du code est la suivante, le nombre de brouillages est fixé à 3 fois :
comparer l'image d'origine et l'image brouillée comme suit :
Grâce à la comparaison, on peut voir que l'image brouillée ne peut plus voir directement le contenu contenu dans l'image d'origine Informations sur le nom et le numéro d'étudiant, car le système chaotique est très sensible à la valeur et à la clé initiales, lorsque les conditions initiales changent, il ne pourra pas obtenir une image brouillée complètement cohérente.
Résolvez l'algorithme de brouillage à l'envers et utilisez la même clé pour restaurer l'image brouillée à l'image d'origine, ce qui ne sera pas démontré ici.
2.2 Traitement des automates cellulaires
Les automates cellulaires (automates cellulaires) sont une méthode puissante pour simuler des phénomènes complexes comprenant des structures auto-organisées, également appelées automates cellulaires (Cellular Automaton). L'idée de base du modèle d'automates cellulaires est que de nombreuses structures et processus complexes dans la nature sont finalement causés par la simple interaction d'un grand nombre d'unités constitutives de base. Les automates cellulaires étudient principalement le modèle théorique dans lequel de petits ordinateurs ou composants sont connectés à des ordinateurs ou composants plus grands qui fonctionnent en parallèle à la manière de connexions de voisinage. Il est divisé en type à valeur fixe, type périodique, type chaotique et type complexe.
Dans cette étape, j'utilise des automates cellulaires basés sur des règles de vote pour traiter l'image brouillée, et les règles spécifiques sont définies comme suit :
1. Si la cellule est à la frontière, aucun traitement n'est effectué.
2. Si la cellule n'est pas sur la bordure, calculer le nombre de pixels de gris 255 dans les 9 grilles centrées sur la cellule courante Si le nombre de pixels de gris 255 est supérieur ou égal à 5 , la cellule actuelle La valeur de gris est définie sur 255, sinon la valeur de gris de la cellule actuelle est définie sur 0.
Le code spécifique est implémenté comme suit, et le nombre de traitement des automates cellulaires est fixé à 2 fois :
comparer l'image brouillée et l'image traitée par les automates cellulaires comme suit :
Lissage du filtre moyen
L'objectif principal du lissage d'image est de convertir des images binaires en noir et blanc en images en niveaux de gris et d'améliorer la robustesse des algorithmes de filigrane. Le filtrage moyen, le filtrage par boîte, le filtrage gaussien et le filtrage médian sont des méthodes de lissage d'image couramment utilisées. Ici, le filtre moyen est utilisé pour lisser l'image.
Le filtrage moyen est un algorithme de filtrage linéaire typique, qui consiste à donner un modèle au pixel cible sur l'image, qui inclut les pixels adjacents environnants (8 pixels autour du pixel cible au centre constituent un modèle de filtrage, c'est-à-dire, y compris la cible pixel lui-même), puis remplacez la valeur de pixel d'origine par la valeur moyenne de tous les pixels du modèle. Le code spécifique est implémenté comme suit : La
comparaison des résultats après filtrage et lissage de la valeur moyenne est la suivante :
À ce stade, le la partie de prétraitement de l'image est terminée, et le niveau de gris final sera obtenu L'image est intégrée en tant qu'image en filigrane, et la conception de l'algorithme de filigrane est lancée.
3. Conception d'algorithme de filigrane adaptatif
3.1 Matrice de quantification JPEG
Lors de la compression JPEG, la matrice de quantification JPEG sera utilisée pour quantifier la matrice DCT obtenue après la transformation DCT du bloc de pixels de l'image d'origine, et les données de pixels de l'image d'origine peuvent être quantifiées via la matrice de quantification JPEG, supprimant ainsi les données indésirables dans la zone d'image d'origine Données importantes, enregistrez l'image avec des données plus petites sans modifier la qualité de l'image.
Afin de mieux résister à la compression JPEG et d'améliorer la robustesse du tatouage, l'algorithme de tatouage que j'ai conçu introduit également la matrice de quantification JPEG pour traiter la matrice de coefficients DCT, ce qui peut permettre à l'algorithme de tatouage de mieux résister aux attaques de compression JPEG.
En fait, il existe deux matrices de quantification JPEG, à savoir la matrice de quantification de luminosité standard et la matrice de quantification de différence de couleur standard.La recherche montre que par rapport à la différence de couleur, l'œil humain est plus sensible aux changements de luminosité, de sorte que la matrice de quantification de luminosité standard JPEG est sélectionné ici pour le calcul. . La table de quantification de luminosité standard et la table de quantification de différence de couleur standard sont définies comme suit :
3.2 Matrice de sensibilité en fréquence DCT
La matrice de sensibilité en fréquence DCT est une matrice définie en considérant que l'œil humain est plus sensible aux détails basse fréquence dans les coefficients de fréquence DCT chroma 8*8 qu'aux détails haute fréquence. être perçu en présence de tout bruit de masquage, des valeurs plus petites indiquant que l'œil humain est plus sensible à cette fréquence.
Dans le processus de mise en œuvre de l'algorithme de filigrane, étant donné que les données de filigrane doivent être masquées en modifiant la matrice de coefficients DCT du bloc de pixels, il n'est pas assez flexible de modifier les données en spécifiant la valeur, ce qui peut facilement conduire à une diminution de la robustesse ou la visibilité du filigrane. Par exemple, pour la région basse fréquence avec une énergie plus élevée, nous espérons modifier la valeur plus petite pour améliorer l'invisibilité du filigrane, et pour la région haute fréquence avec une énergie plus faible, nous espérons modifier la valeur plus grande pour améliorer le filigrane. robustesse, ce problème peut être bien résolu grâce à la matrice de sensibilité DCT. Étant donné que l'amplitude minimale du coefficient DCT détectable est définie dans le tableau de sensibilité de fréquence DCT, l'incorporation de filigrane peut être réalisée en ajoutant ou en soustrayant le produit de la valeur de position correspondante du tableau de sensibilité de fréquence DCT et du facteur de pondération à la position correspondante de la matrice DCT, la matrice de sensibilité en fréquence DCT est définie comme suit :
3.3 Sélection de bande de fréquence adaptative
Pour la matrice de coefficients DCT, nous savons qu'elle peut être divisée en bande haute fréquence, bande basse fréquence et bande moyenne fréquence. Du point de vue de l'invisibilité du filigrane, la bande haute fréquence est le meilleur choix pour la zone cachée du filigrane, mais les informations de la bande haute fréquence est très faible, il est facile de la supprimer par diverses compressions avec perte, ce qui rend la robustesse du filigrane difficile à satisfaire aux exigences. Du point de vue de la robustesse du filigrane, la bande basse fréquence est la meilleure zone cachée pour les informations de filigrane, car les données dans la bande basse fréquence contiennent beaucoup d'énergie et le changement est faible lorsqu'il est perturbé, ce qui peut améliorer considérablement la robustesse. du filigrane, mais le changement Les données dans la zone basse fréquence ont tendance à provoquer une grande déformation de l'image, ce qui rend difficile le respect des exigences d'invisibilité du filigrane. Par conséquent, lors de l'incorporation de données de filigrane, le filigrane dans la région de fréquence intermédiaire est souvent sélectionné pour incorporer des données de filigrane.
Et comment sélectionner la position d'un point spécifique dans la matrice DCT pour modification ? Ici, j'adopte une méthode de sélection de bande de fréquence adaptative, principalement en divisant la matrice de coefficients DCT par la matrice de quantification JPEG, et en incorporant les données de filigrane à la position où le résultat n'est pas 0 dans la matrice de drapeau obtenue. l'image est compressée par JPEG avec perte, la valeur en pixels de l'image sera quantifiée selon la matrice de quantification JPEG.La partie dont le résultat est 0 dans la matrice de drapeau est souvent écartée lors de la compression JPEG, et je passe le résultat dans le drapeau matrice.Incorporer les informations de filigrane à la position 0, et lors de l'intégration du filigrane, je modifie la valeur de la position correspondante dans la matrice DCT par le produit de la valeur de position correspondante sur la matrice de sensibilité de fréquence DCT et le facteur de pondération.Cette méthode peut sélectionner de manière adaptative chacun La position d'intégration optimale du filigrane et la quantité de modification dans une matrice DCT, au lieu d'intégrer les données de filigrane via une position spécifiée et une quantité de modification spécifiée, peuvent améliorer la robustesse de l'intégration des filigranes dans une certaine mesure.
3.4 Définition de l'algorithme de filigrane
3.4.1 Algorithme d'incorporation de filigrane
L'algorithme de filigrane que j'ai conçu est principalement mis en œuvre via la transformation DCT et la sélection de bande de fréquence adaptative, et la robustesse aux attaques de compression JPEG courantes est améliorée grâce à la matrice de quantification JPEG et au tableau de sensibilité de fréquence DCT, et il est pratique pour les images 10% de la zone ne le fait pas incorporer des données de filigrane pour améliorer la capacité du filigrane à résister aux attaques de recadrage L'algorithme d'incorporation de filigrane est défini comme suit :
1. Premièrement, l'image porteuse est divisée en blocs selon la taille de 8*8.
2. Ignorez la matrice à 10 % du bord de l'image et calculez la matrice de coefficients DCT de chacun des blocs restants.
3. Divisez la matrice de coefficients DCT obtenue par la matrice de quantification JPEG pour obtenir une matrice d'indicateurs.
4. En parcourant la matrice de drapeaux, si la position d'un certain point de la matrice de drapeaux n'est pas 0, intégrez les données de filigrane dans la matrice de coefficients DCT à la position correspondante, si les données de filigrane à intégrer sont 1, alors ajouter à la position correspondante de la matrice de coefficients DCT Le produit de la valeur de la position correspondante de la matrice de sensibilité de fréquence DCT et du facteur de pondération, si les données de filigrane à intégrer sont 0, le produit de la valeur de la position correspondante de la matrice de sensibilité de fréquence DCT et le facteur de pondération sont soustraits de la position correspondante de la matrice de coefficients DCT.
5. Continuez à traiter la matrice de pixels suivante jusqu'à ce que toutes les données de filigrane soient intégrées.
L'organigramme de l'intégration de filigrane est le suivant :
la mise en œuvre du code clé de l'algorithme d'intégration de filigrane
est la suivante : premièrement, la définition de la matrice de quantification JPEG et de la matrice de sensibilité de fréquence DCT :
la fonction principale de l'intégration de filigrane :
3.4.2 Algorithme d'extraction de filigrane
L'algorithme d'extraction de filigrane est défini comme suit :
1. L'image porteuse d'origine et l'image porteuse contenant le filigrane sont respectivement divisées en 8*8 blocs.
2. Ignorez la matrice à 10 % du bord de l'image et calculez séparément la matrice de coefficients DCT de chacun des blocs restants.
3. Divisez la matrice de coefficients DCT de l'image porteuse d'origine par la matrice de quantification JPEG pour obtenir la matrice d'indicateurs dans laquelle le filigrane est intégré.
4. Pour chaque position dans la matrice d'indicateurs qui n'est pas 0, comparez la taille de la position correspondante de la matrice de coefficients DCT de l'image porteuse d'origine et de la matrice de coefficients DCT de l'image porteuse contenant le filigrane, si la position correspondante du La matrice DCT de l'image porteuse contenant le filigrane est supérieure à l'original La position correspondante de la matrice DCT de l'image porteuse, les données de filigrane extraites sont 1, sinon les données de filigrane extraites sont 0.
5. Continuez à traiter la matrice de pixels suivante jusqu'à ce que toutes les données de filigrane soient extraites.
L'organigramme de l'extraction de filigrane est le suivant :
le code clé de l'algorithme d'extraction de filigrane est défini comme suit :
4. Évaluation des performances de l'algorithme de filigrane
4.1 Mise en œuvre de l'incorporation et de l'extraction de filigrane
Ouvrez d'abord le répertoire du projet, préparez l'image d'origine monster663.bmp et l'image porteuse lena.bmp comme suit :
Ensuite, exécutez 1 code de prétraitement d'image process.py comme suit :
quatre images traitées seront obtenues dans le répertoire courant, qui sont :
Image après brouillage : shuffleWM.bmp
Image après traitement par Cellular Automata : CellAutoImg.bmp
Image après filtrage moyen et lissage : BlurringImg.bmp
Image de restauration obtenue en utilisant la clé de brouillage : shuffleRecoverImg.bmp
Les fichiers finalement obtenus sont les suivants :
Ensuite, le gris- l'image à l'échelle obtenue après le lissage du filtre moyen est utilisée comme support d'intégration d'image de filigrane, et la conception de l'algorithme de filigrane adaptatif à 2 filigranes.py est exécutée comme suit : la comparaison entre l'
image de support d'origine obtenue et l'image de support contenant le filigrane est la suivante :
Vous pouvez voir le programme Le coefficient de corrélation calculé des deux images est d'environ 0,9988, ce qui permet de juger que la corrélation entre les deux images est extrêmement élevée et qu'il n'y a aucune différence visible à l'œil nu.
La comparaison entre l'image de filigrane intégrée et l'image de filigrane extraite est la suivante : le
coefficient de corrélation entre l'image de filigrane intégrée et l'image de filigrane extraite est d'environ 0,9999, et le taux d'erreur binaire extrait est de 0, c'est-à-dire que les deux images sont complètement cohérent, et l'algorithme réalise l'incorporation de l'image et de l'extrait de filigrane.
Le répertoire résultant est le suivant :
4.2 Attaque de filigrane et évaluation des performances
La réalisation de l'attaque de filigrane ici est principalement réalisée par le logiciel StirMark. J'ai sélectionné cinq méthodes d'attaque de filigrane typiques, à savoir l'attaque de compression JPEG, l'attaque de bruit aléatoire, l'attaque de recadrage, l'attaque de recadrage par rotation et l'attaque de suppression de ligne, et j'ai calculé le taux d'erreur binaire du filigrane les données obtenues sous différents paramètres de chaque méthode d'attaque et la similitude avec l'image originale du filigrane.
Dans l'implémentation, il vous suffit de placer l'image porteuse contenant le filigrane dans un répertoire spécifique du logiciel StirMark, c'est-à-dire .\StirMarkBenchmark\Media\Input\Images\Set1, et de définir les paramètres correspondants dans la configuration SMBsettings.ini Implémentez le style d'attaque sélectionné.
Ajustez les paramètres de chaque attaque de sorte que chaque attaque génère 10 images d'attaque, et un total de 50 images d'attaque sont générées. Le programme d'attaque est le suivant : L'image après
l'attaque est obtenue comme suit :
À ce stade, exécutez 3 performances de filigrane evaluation.py pour extraire
les filigranes par lots transporteur contient des informations de filigrane ? Ici, j'utilise une mesure du coefficient de corrélation pour convertir l'image de filigrane extraite et l'image de filigrane d'origine en une matrice de valeurs de gris, et calcule le coefficient de corrélation entre les deux matrices.La plage du coefficient de corrélation appartient à [-1,1]. Lorsque le coefficient de corrélation est -1, cela signifie que les deux images ont une corrélation négative. Lorsque le coefficient de corrélation est 1, cela signifie que les deux images ont une corrélation positive. Lorsque le coefficient de corrélation est proche de 0, cela signifie que il n'y a presque aucune corrélation entre les deux images.
Lors de l'utilisation du coefficient de corrélation pour déterminer si l'image porteuse contient des informations de filigrane, j'ai adopté les règles suivantes :
1. Lorsque le coefficient de corrélation est supérieur à 0,5, nous considérons que les informations de filigrane ont été détectées et l'algorithme de filigrane peut résister à cette attaque. .
2. Lorsque le coefficient de corrélation est compris entre 0,3 et 0,5, on considère qu'il peut y avoir des informations de filigrane, et l'algorithme de filigrane ne peut résister à l'attaque que dans une certaine mesure.
3. Lorsque le coefficient de corrélation est inférieur à 0,3, on considère que les informations de filigrane ne peuvent pas être extraites, et l'algorithme de filigrane ne peut pas du tout résister à l'attaque.
4.2.1 Attaque par compression JPEG
Les paramètres de l'attaque par compression JPEG sont configurés comme suit :
Tout d'abord, nous devons expliquer le problème du taux de compression. Le taux de compression fait ici référence au pourcentage de la qualité de l'image d'origine après compression. Par exemple, lorsque le taux de compression est de 10 %, l'image compressée ne contient que 10 % de la image d'origine. En conséquence, l'image sera déformée. D'après les résultats de comparaison réels, on peut voir que lorsque le taux de compression est de 10 %, il est évidemment plus flou que lorsque le taux de compression est de 100 %.
Dans le test réel, afin de s'assurer que l'image après l'attaque n'affecte pas la qualité visuelle, les paramètres de compression JPEG utilisés ici sont de 80 % à 98 %, avec un intervalle de 2 %. Un total de dix images après la sont générées, et la qualité de compression est de 80 % et La comparaison de l'image filigranée non attaquée est la suivante :
On peut voir qu'il n'y a pas de différence significative entre l'image avec une qualité compressée de 80 % et l'image porteuse non attaquée, et le coefficient de corrélation entre les deux images est de 0,9957. La comparaison entre le filigrane extrait de l'image porteuse avec une qualité de compression de 90% et l'image originale du filigrane est la suivante, le coefficient de corrélation des deux images est d'environ 0,67 : le taux d'erreur binaire de qualité de compression différente et le coefficient de corrélation
entre l'image de filigrane extraite et l'image de filigrane d'origine sont les suivantes
: Le graphique linéaire tiré des données du tableau ci-dessus est le suivant :
On peut voir sur la figure que lorsque la qualité de compression est supérieure à 88 %, le coefficient de corrélation peut être supérieur à 0,5, ce qui prouve que l'information de filigrane correspondante existe et est détectée dans l'image porteuse.
Conclusion : L'algorithme de filigrane peut résister à l'attaque de compression JPEG dans une certaine mesure. Lorsque la qualité de compression JPEG est supérieure à 90 %, l'algorithme peut déterminer les informations de filigrane d'origine dans l'image porteuse en fonction de la corrélation. Lorsque la qualité de compression est inférieure à 86 %, l'algorithme ne peut pas déterminer si l'image porteuse contient des informations de filigrane.
4.2.2 Attaque de bruit aléatoire
Les paramètres de l'attaque par bruit aléatoire sont configurés comme suit :
la proportion de bruit aléatoire est de 1% à 10%, avec un intervalle de 1%, et un total de dix images d'attaque sont générées.
La distorsion du bruit aléatoire ici simule la distorsion de l'image pendant la transmission. Le taux de bruit aléatoire de 10 % signifie que l'image a une perte de données de 10 %, et le taux de bruit aléatoire de 100 % signifie que les données de l'image sont complètement déformées. 10 % bruit et Le tableau de comparaison de l'image porteuse non attaquée est le suivant :
On peut voir que l'effet d'attaque du bruit aléatoire est évident et qu'il existe des différences visibles à l'œil nu. Le coefficient de corrélation des deux images est d'environ 0,7384. Les images de filigrane extraites des deux images sont les suivantes, et le coefficient de corrélation de l'image de filigrane est d'environ 0,3899 : Le taux d'erreur binaire de l'image de filigrane
extraite sous différents rapports de bruit aléatoire et le coefficient de corrélation entre l'image de filigrane extraite et l'original l'image du filigrane sont les suivantes :
selon le tableau ci-dessus, le graphique linéaire tracé par les données est le suivant : comme le
montre la figure ci-dessus, plus le rapport de bruit aléatoire est élevé, plus le taux d'erreur binaire de l'extraction du filigrane est proche de 0,5. (0,5 signifie que les informations de filigrane ne peuvent pas être extraites du tout, car le taux d'erreur binaire de l'extraction de filigrane aléatoire est également de 0,5), plus la corrélation entre l'image de filigrane extraite et l'image de filigrane d'origine est faible.
Conclusion : L'algorithme de tatouage peut être attaqué par un bruit aléatoire dans une certaine mesure. Lorsque la proportion de bruit aléatoire est inférieure à 4 %, l'algorithme peut déterminer les informations de filigrane d'origine dans l'image porteuse en fonction de la corrélation. Lorsque la proportion de bruit aléatoire Si le bruit est supérieur à 6 %, l'algorithme ne peut pas déterminer l'image porteuse. Si l'image contient des informations de filigrane.
4.2.3 Attaque de recadrage
La configuration des paramètres de l'attaque de recadrage est la suivante :
l'attaque de recadrage ici consiste principalement à commencer par le coin inférieur droit de l'image et à conserver la proportion de l'image d'origine après le recadrage. La sélection des paramètres varie de 80 % à 98 %, et l'espacement est de 2%. Pour l'image, la comparaison entre le recadrage 80% et l'image d'origine est la suivante :
On constate que la transformation de l'image est plus évidente après recadrage. La comparaison entre l'image en filigrane extraite de la réserve zone de 90 % et l'image de filigrane d'origine est la suivante. Le coefficient de corrélation entre les deux images est d'environ 0,7564 : Le
taux d'erreur sur les bits et le coefficient de corrélation de l'image de filigrane extraite sous différents paramètres sont les suivants :
Le graphique linéaire tracé selon aux données du tableau ci-dessus est la suivante : comme le
montre la figure ci-dessus, lorsque la zone réservée est supérieure à 90 %, le coefficient de corrélation est supérieur à 0,5, c'est-à-dire les informations de filigrane détectées, car lors de la conception l'algorithme de filigrane, 10% du bord de l'image n'est pas intégré avec des données de filigrane, ce qui améliore la robustesse du filigrane et la capacité à résister aux attaques de recadrage, et lorsque la zone réservée est inférieure à 90%, le coefficient de corrélation se produit mutation , le taux d'erreur sur les bits a également augmenté rapidement pour atteindre près de 0, 5. En effet, l'attaque par écrêtage a détruit les données dans certaines zones du filigrane caché, de sorte que la matrice d'origine n'était pas alignée avec la matrice extraite, et un désalignement s'est produit, entraînant un grande quantité de données de filigrane extraites.
Conclusion : L'algorithme de tatouage peut résister dans une certaine mesure aux attaques de recadrage. Lorsque la zone réservée est supérieure à 90 %, l'algorithme peut déterminer les informations de filigrane d'origine dans l'image porteuse en fonction de la corrélation. Lorsque la zone réservée est inférieure à 90 % , l'algorithme ne peut pas déterminer les informations de filigrane d'origine dans l'image porteuse. Indique s'il faut contenir des informations de filigrane.
4.2.4 Rotation et attaque de culture
La configuration des paramètres de l'attaque de rotation et de recadrage est la suivante :
l'attaque de rotation et de recadrage consiste à faire pivoter l'image selon un certain angle, et à recadrer l'image qui n'appartient pas à la zone rectangulaire d'origine après rotation. Pour une meilleure comparaison, le les angles sélectionnés ici sont tous des nombres positifs. C'est-à-dire que l'angle de rotation dans le sens des aiguilles d'une montre, la plage de rotation est de 0,02 degré à 0,2 degré et l'intervalle est de 0,2. Au total, dix images d'attaque sont générées. La comparaison entre l'angle de rotation de 0,2 et l'image porteuse d'origine est la suivante. Après rotation et recadrage, la taille de l'image a changé. Le coefficient de corrélation de l'image est d'environ 0,9658 :
comparaison de l'image du filigrane extraite de l'image porteuse et de l'image du filigrane d'origine lorsque la rotation est de 0,1 est le suivant, le coefficient de corrélation des deux images est de 0,9099 : le taux d'erreur binaire et l'extraction des données de filigrane sous différents angles de rotation Le
coefficient de corrélation entre l'image du filigrane et l'image du filigrane d'origine est le suivant :
Le graphique linéaire tracé selon les données du tableau ci-dessus est la suivante : d'après les
résultats ci-dessus, on peut voir que l'image subit un changement soudain lorsque l'angle de rotation est de 0,1 degré. Lorsque l'angle de rotation est inférieur à 0,1, l'extraction du filigrane Le taux d'erreur sur les bits est proche de 0, le coefficient de corrélation est supérieur à 0,8 et présente une forte corrélation, tandis que lorsque l'angle de rotation est supérieur à 0,1, le taux d'erreur sur les bits est proche de 0,5, le coefficient de corrélation est proche de 0, et l'image n'a aucune corrélation. La raison peut être que lorsque l'angle de rotation est supérieur à 0,1, le bloc de pixels initialement intégré dans le filigrane et le bloc de pixels extrait du filigrane présentent un décalage et une dislocation importants, ce qui rend l'extraction du filigrane complètement erronée.
Conclusion : L'algorithme de filigrane peut résister à l'attaque de rotation et de recadrage dans une certaine mesure. Lorsque l'angle de rotation est inférieur à 0,1 degré, l'algorithme de tatouage peut complètement résister à l'attaque de rotation et de recadrage. Lorsque l'angle de rotation est supérieur à 0,1 degré, le L'algorithme de filigrane ne peut pas du tout résister à l'attaque de rotation et de recadrage.
4.2.5 Attaque de suppression de ligne et de colonne
La configuration des paramètres de l'attaque de suppression de ligne et de colonne est la suivante :
le paramètre ici fait référence au rapport conservé après la suppression de la ligne et de la colonne. Après l'attaque, la taille de l'image de couverture changera. Par exemple, lorsque le paramètre est 80 %, 20 % de l'image de couverture est supprimée. Lignes et colonnes, si le paramètre d'attaque est à peu près petit, cela indique que la force d'attaque est à peu près grande, et la suppression ici n'est pas une suppression aléatoire, mais une suppression sous le principe d'assurer la qualité d'image autant que possible. Le paramètre d'attaque varie de 80 % à 98 %, avec un intervalle de 2 %. Au total, dix images d'attaque sont générées. La comparaison avec l'image porteuse d'origine lorsque la proportion de lignes réservées est de 80 % est la suivante. Le coefficient de corrélation entre les deux images est d'environ 0,05085 : on peut voir que
, La qualité visuelle de l'image attaquée est préservée, mais il n'est pas difficile de constater que l'image porteuse attaquée est plus petite que l'image d'origine, et ce changement de taille n'est pas causé par mise à l'échelle, mais en supprimant une partie de l'image, des lignes et des colonnes. La comparaison entre l'image de filigrane extraite et l'image de filigrane d'origine lorsque le rapport ligne/colonne est de 90 % est la suivante, et le coefficient de corrélation entre les deux images est d'environ -0,0053 :
Le taux d'erreur sur les bits des données de filigrane extraites sous différents paramètres d'attaque et le coefficient de corrélation entre l'image de filigrane extraite et l'image d'origine sont les suivants : Le graphique
linéaire tracé en fonction des données du tableau ci-dessus est le suivant : Comme on
peut le voir d'après la figure ci-dessus, le rapport des lignes et des colonnes réservées varie de 80 % à Dans l'intervalle de 98 %, le taux d'erreur binaire des données de filigrane extraites est toujours d'environ 0,5, et le coefficient de corrélation entre l'image de filigrane extraite et le filigrane d'origine l'image est maintenue à environ 0, indiquant que l'image de filigrane extraite et l'image de filigrane d'origine sont complètement hors de propos, et l'extraction des données de filigrane échoue. . La raison peut être qu'après avoir supprimé les lignes et les colonnes, la zone rectangulaire dans laquelle le filigrane était initialement intégré est décalée et mal placée. Étant donné que les informations du filigrane étaient initialement intégrées dans une position adaptative, les données du filigrane ne peuvent pas être extraites de la position correcte après la Bien que pour résister à l'attaque par écrêtage, les données du filigrane ne soient pas intégrées dans la zone de 10% du bord, mais comme la zone de recadrage peut être au centre ou près du centre, la zone de données du filigrane sera toujours sérieusement décalée , et les données de filigrane correctes ne peuvent pas être extraites.
Conclusion : L'algorithme résiste difficilement aux attaques de suppression de lignes et de colonnes. Lorsque le ratio de lignes et de colonnes réservées est inférieur à 98 %, l'algorithme ne sera pas en mesure d'extraire les informations de filigrane correctes de l'image porteuse et ne pourra pas déterminer si le l'image porteuse contient un filigrane.
Ressources de disque réseau et github
Tous les fichiers de code et les ressources seront open source à l'étape suivante ~
post-scriptum
Au cours de cette exploration expérimentale, j'ai conçu deux algorithmes de tatouage adaptatif, l'un est l'algorithme de sélection de la position d'échange dans la matrice DCT adaptative pensé en échangeant des données à deux positions dans la matrice DCT pour masquer les données de filigrane binaire, et le other is One est l'algorithme de filigrane adaptatif à la bande DCT via la matrice de compression JPEG et la matrice de coefficients de sensibilité DCT implémentée dans cette grande mission.Après avoir comparé les résultats des tests réels des deux, j'ai trouvé que ce dernier algorithme est moins efficace pour la compression JPEG Par conséquent, ce dernier algorithme est sélectionné comme algorithme implémenté dans le gros travail, et la conception du code d'intégration et d'extraction de filigrane est complétée en consultant les matériaux pertinents.
Dans l'évaluation des performances du filigrane, afin d'améliorer la capacité de l'algorithme de filigrane à résister aux attaques de recadrage, j'intègre les données du filigrane au centre de l'image, c'est-à-dire que la zone de 10 % du côté de l'image ne pas intégrer les données de filigrane. Après la pratique, cette méthode peut être utilisée dans une certaine mesure. Cependant, lorsque la zone recadrée est supérieure à 10 %, l'algorithme de filigrane ne pourra pas extraire les données de filigrane correctes. En même temps, je Je suis plus surpris que cet algorithme de filigrane soit presque totalement incapable de résister aux attaques de suppression de lignes et de colonnes.Quand après avoir supprimé les données de ligne et de colonne, la corrélation du filigrane extrait est fondamentalement la même que l'effet de la zone de recadrage de l'image supérieure à 10 % , ce qui m'a également fait découvrir que la caractéristique de cet algorithme est que la matrice de blocs est incrustée dans le filigrane d'origine et la zone de l'image du filigrane à extraire La matrice de blocs est alignée. Si elle n'est pas alignée, la correspondante bloc sera mal aligné et décalé, ce qui fera échouer l'extraction du filigrane.
Remarque : Les images de l'explication des principes pertinents de cette garantie de test proviennent toutes de divers excellents articles de blog sur Internet. Le code source sera en libre accès à l'étape suivante. Si vous ne comprenez pas le processus ou le code expérimental, veuillez laisser un commentaire~