numérisation d'image et C++

numérisation d'image et C++ - C++ - Programmation

Marsh Posté le 09-02-2005 à 12:16:54    

Voila j'aurai besoin d'aide pour un projet que j'ai a faire pour la fac !  
On est 4 a bosser sur ce projet, et en fait notre boulot consiste a creer un logiciel capable de numeriser une photo ( bmp, jpg,gif etc), ensuite de la crypter avec un RSA ( systeme de cryptage tres connu), de simuler un envoi avec generation ou non d'erreur, et enfn de décrypter le RSA et d'afficher l'image.  
 
Notre seul probleme vient de la numérisation de l'image...le reste on sait faire.  
Ce que l'on a compris, c'est qu'une image est composé d'une entête (nom du fichier, taille de l'image etc), et du corps a proprement parlé de l'image(couleur de chaque pixel)...Il faut tout d'abord qu'on se debarasse de l'entête car si l'on genere des erreurs dans cette entete, on sait qu'a la fin on ne pourra pas réouvrir l'image, c'est une certitude.  
Puis la numérisation nous pose egalement un probleme. Comment extraire les 3 matrices rouge, verte et bleue de l'image ?  
 
Donc en bref, comment virer l'entete d'un fichier image pour ne garder que le corps et comment extraire les 3 matrices, tout cela en sachant qu'a priori on va programmer en C++ ( en assembleur ca serait trop chiant, mais si c'est plus pratique pour travailler sur du numerique) ?  
 
En esperant qu'un ptit genie de l'informatique se revele parmis vous  :)  

Reply

Marsh Posté le 09-02-2005 à 12:16:54   

Reply

Marsh Posté le 09-02-2005 à 12:30:53    

Qu'est-ce que tu appelles numériser une photo ?  
 
Sous quel environnement vous travaillez et quel environnement cible vous visez ?

Reply

Marsh Posté le 09-02-2005 à 12:34:14    

par numeriser, je veux dire qu'a partir de notre photo on veut arriver a du binaire

Reply

Marsh Posté le 09-02-2005 à 12:40:29    

Ah ouais ? Parce que ton programme manipule des données analogiques à la base ?  
 
Et d'autre part, pourquoi tu ne répond pas à toutes les questions qu'on te pose ?

Reply

Marsh Posté le 09-02-2005 à 12:41:42    

il existe des tonnes de docs sur les différents formats d'images :o
(aussi bien la composition "structurelle" de celles ci que les algos de compression/décompression toussa)
 
et en fonction du type d'image, non seulement les headers seront différents mais les infos contenues n'auront également strictement rien à voir.
 
Enfin, une image est *toujours* stockée sous forme binaire, c'est ce binaire qui est interprété en tant qu'image selon les conventions du format de la dite image [:spamafote]


Message édité par masklinn le 09-02-2005 à 12:42:11

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-02-2005 à 12:51:57    

Lam's<--- Je pense qu'on va bosser sous windows
Masklinn<---- et ou est ce que je peux trouver ces docs ,

Reply

Marsh Posté le 09-02-2005 à 12:52:03    

kayl669a a écrit :

par numeriser, je veux dire qu'a partir de notre photo on veut arriver a du binaire


tu m'étonnes, clair que c'est plus pratique que ces putains de photos à 50 Hz :fou:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-02-2005 à 12:57:28    

kayl669a a écrit :

Masklinn<---- et ou est ce que je peux trouver ces docs ,


Sur internet [:spamafote]  
 
tu googueulise un peu sur les différents formats, tu peux même utiliser les libs spécifiques (libjpeg, libpng)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-02-2005 à 12:59:31    

kayl669a a écrit :

Lam's<--- Je pense qu'on va bosser sous windows
Masklinn<---- et ou est ce que je peux trouver ces docs ,


Si tu veux pas te casser la tête, et si tu n'as pas peur de faire du code qui ne tourne que sous Windows, alors GDI+ est sans doute la solution la plus simple...
 

Code :
  1. //Pour charger une image, il suffit de:
  2. Bitmap monImage(L"monimage.gif" );
  3. //Et pour avoir accès aux 3 plans R/V/B, il suffit de:
  4. Rect rect(0, 0, monimage.GetWidth(), monimage.GetHeight());
  5. BitmapData bitmapData;
  6. monImage.LockBits(&rect,  ImageLockModeRead, PixelFormat24bppRGB, &bitmapData);
  7. // Et hop, tout est dans  bitmapData.Scan0, au format BRGBRGBRG, etc.)

Reply

Marsh Posté le 09-02-2005 à 13:01:55    

Lam's a écrit :

Si tu veux pas te casser la tête, et si tu n'as pas peur de faire du code qui ne tourne que sous Windows, alors GDI+ est sans doute la solution la plus simple...
 

Code :
  1. //Pour charger une image, il suffit de:
  2. Bitmap monImage(L"monimage.gif" );
  3. //Et pour avoir accès aux 3 plans R/V/B, il suffit de:
  4. Rect rect(0, 0, monimage.GetWidth(), monimage.GetHeight());
  5. BitmapData bitmapData;
  6. monImage.LockBits(&rect,  ImageLockModeRead, PixelFormat24bppRGB, &bitmapData);
  7. // Et hop, tout est dans  bitmapData.Scan0, au format BRGBRGBRG, etc.)



la dernière fois que j'ai essayé GDI+, elle buggait à chaque fois qu'elle rencontrait une image en couleurs indexées [:petrus75]  
 
super pratique [:petrus75]  
 
en plus je te parle même pas de sa "capacité" à créer des PNGs, on dirait du PNG poulay photoshop, mais pire


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-02-2005 à 13:01:55   

Reply

Marsh Posté le 09-02-2005 à 13:02:21    

ok merci pour tous vos conseils

Reply

Marsh Posté le 09-02-2005 à 22:27:52    

Si tu veux te documenter sur les différents formats, t'as ça : http://www.wotsit.org/
 
pis si tu veux pas te faire chier, t'as SDL IMAGE
 
@ +

Reply

Marsh Posté le 10-02-2005 à 00:13:07    

je confirme sdl image...je voulais m amuser a programmer des filtres et la sdl + 2h de reflexion m'ont permis de prendre controle tranquilement de tous les jolis pixels des bmp, jpg, png et autres, sans franchement de grosse experience en c/c++.
A remarquer que la sdl convertit elle meme entre les formats de pixels lorsqu on SDL_BlitSurface une image 16bits par exemple dans une surface 32bits.


Message édité par chewif le 10-02-2005 à 00:14:07
Reply

Marsh Posté le 10-02-2005 à 09:01:33    

Harkonnen a écrit :

tu m'étonnes, clair que c'est plus pratique que ces putains de photos à 50 Hz :fou:


 
 
Euh... c'est quoi une photo à 50Hz ?
 
Car une photo est statique alors que par définition, 50 Hertz veut dire rafraichissement (ou cycles) 50 fois par seconde ! ? ! ?


Message édité par tyrion42 le 10-02-2005 à 09:04:26
Reply

Marsh Posté le 10-02-2005 à 09:41:45    

c'était une blagounette ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed