Salut à tous,
Après plusieurs heures passé sans en voir le bout du tunnel je requière un petit peu d'aide.
Voilà je dois faire un programme en 4 grande étapes :
- cacher une image pixeliser dans une image couleur et la decoder.
-cacher une image en gray dans une image couleur et la decoder.
-cacher une image en couleur dans une image en couleur.
-cacher un son dans une image.
Toute en utilisant la technique du LSB c'est a dire remplacer le bit de poid faible pour que lors de l'affichage cela ne ce remarque pas.
Après avoir fait un bout de chaque partie (:s) je bloque souvent sur la partie decodage.
Un probleme que je ne comprend pas est lors de mon script CodageNoirBlanc une erreur m'indiquant 'Binary string may consist only of characters 0 and 1' or je suis sur de n'avoir que des 0 et des 1.
Codage noir et blanc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 imgporteuse=imread('Koala.bmp'); imgpixel=imread('test.bmp'); Rchat=imgpixel(:,:,1); Rchat_pixel=Rchat>128;%pixelise l'image blanc si <128 et noir si sup Rchat_colonne=Rchat(:);%ecrit l'image en une seule colonne imgporteuse_Bin=dec2bin(imgporteuse(:));%converti l'image porteuse en matrice binaire imgporteuse_Bin(1:length(Rchat_colonne),8)=Rchat_colonne;% remplace le bit de poid faible par l'image pixeliser imgporteuse_Dec=bin2dec(imgporteuse_Bin);
Pour ma partie coder une image couleur dans une image en couleur j'ai fini le partie cryptage :
L'astuce ici est de derouler une premiere fois l'image a cacher de la convertire en binaire et de la derouler une deuxieme fois pour avoir une seule colonne et pouvoir la remplacer par les LSB. l'inconvenient est que l'image porteuse doit obligatoirement etre 8 fois plus grande que l'image cache.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 imgporteuse=imread('Koala.bmp');% Lecture image porteuse imgcache=imread('test.bmp');% Lecture image cachée imgcache_bin=dec2bin(imgcache); imgcache_bin_colonne=imgcache_bin(:); imgporteuse_bin=dec2bin(imgporteuse); imgporteuse_bin(1:size(imgcache_bin_colonne),8)=imgcache_bin_colonne; imgporteuse_Dec=bin2dec(imgporteuse_bin); img_porteuse=reshape(imgporteuse_Dec,size(imgporteuse)); afficheimage=uint8(img_porteuse); figure;subplot(1,2,1);imshow(afficheimage); imwrite(uint8(afficheimage),'Cryptecouleur.jpg','jpeg','Quality',100);
Pour mon code de decodage :
On peut voir mes très nombreux essai en commentaire car je bloque et sa m’énerve donc je recommence a zéro sa fait une bonne 10ene d'heure que je bloque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 img=imread('Cryptecouleur.jpg'); Matrice1=img(:); Matrice1=dec2bin(Matrice1); Matrice2=Matrice1(1:(20*22*3*8),8);%L*l*P*8bit c'est a dire la taille de la colonne de l'image a decrypter Matrice2=reshape(Matrice2,(20*22*3),8); Matrice2=bin2dec(Matrice2); Matrice2=reshape(Matrice2,20,22,3); Matrice2=uint8(Matrice2); imshow(Matrice2); %crypte=imread('Cryptecouleur.jpg');% Lecture image porteuse %colonne_crypte=crypte(:); %colonne_crypte_huit=dec2bin(colonne_crypte,8); %imgcache=colonne_crypte_huit(1:(55296),8); %imagecache_droite=reshape(imgcache,[],8); %imagecache_dec=bin2dec(imagecache_droite); %imagecrypte=reshape(imagecache_dec,48,48,3); %imshow(uint8(imagecrypte)); %orange=imread('chat.jpg');% Lecture image cachée %chat_Colonne_Dec=chat(:); %chat_Colonne_Bin=dec2bin(chat_Colonne_Dec,8); %crypte=chat_Colonne_Bin(1:(50*59*3*8),8); %image_crypte_binaire=reshape(crypte,[],8); %image_crypte=(bin2dec(image_crypte_binaire)); %image=reshape(image_crypte,50,59,3); %afficheimage=uint8(image); %imshow(afficheimage);
Si vous avez des question n'hésitez pas à les poser.
Partager