Accés aux pixelx d'une image

Signaler
Messages postés
22
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
20 mai 2011
-
Messages postés
33
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
24 novembre 2011
-
Bonjour

je sais pas si je suis dans le bon thème pour ma question.j'aimerai savoir comment accéder aux pixels de mon image qui a été chargée avec OpenCv. je veux pas utiliser les fonctions de openCv je veux développer le code moi même.j'ai defini uchar * data = (uchar *)image_ref->imageData; . ce que je veux savoir est ce que data[i] correspond a la valeur du pixel sachant que mon image est en couleur.
en faite j'aimerai charger les pixels de mon image couleur dans un tableau pour pouvoir en faire une transformation est obtenir une image au niveau gris.
merci pour toute reponse :)

4 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut

Je n'ai jamais véritablement travaillé sur OpenCV, mais voici quelques remarques générales: data est un pointeur sur un tableau 1D ou sont stoker l'ensemble des pixels. Cependant, les pixels peuvent être de plusieurs type et le nombre de canaux peut aussi varier. En générale pour une image couleur, il y a 3 canaux R V B. Concrètement, si ton image est en 8 bits:
data[0] pixel 0 canal Bleu
data[1] pixel 0 canal Vert
data[2] pixel 0 canal Rouge
data[3] pixel 1 canal Bleu
...


A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
22
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
20 mai 2011
1
Merci d'avoir pris la peine de me repondre :)
en faite j'ai suivi ce que tu m'as dit et j'ai rempli une matrice avec les composantes BGR de chaque pixel ( i = le numero du pixel et j la composante)
  k=0;
          for (i = 0; i < width*height; i+=1)
  {
  for (j=0;j<3;j+=1)
  {
  mat[i][j]=data[k];
  printf("%d\t",mat[i][j] );
  k=k+1;
  
  }
  printf("\n");
  }


bon j'ai une autre question , comment je determine la valeur du pixel a partir des trois composants, est ce que c'est la somme?
et pour transformer au niveau gris quelle formule utiliser:
* gris= (rouge+vert+bleu)\3
* gris= 0.299 * rouge+ 0.587*vert + 0.114*bleu
* gris = 0.2125 *rouge+ 0.7154*vert + 0.0721*bleu

merci
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Moi j'utilise souvent seconde méthode. (Rec601)

Sinon, c'est le bon principe, a partir des 3 composantes RGB, tu obtiens une valeur que tu attributs au pixel.

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
33
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
24 novembre 2011

Salut a tous!!!

Apparemment tu as réussi a récupérer ta matrice de pixel, maintenant pour obtenir la matrice en niveau de gris ce que tu dois savoir c'est que ton pixel contient deux information la luminance (intensité lumineuse correspond au niveau de gris si tu veux) et la chrominance qui est en relation avec la fréquence(longueur d'onde c'est l'information de la couleur).
Bref, tu commence par calculer la luminance que tu as appeler gris par la formule, gris=(0.59*G+0.30*R+0.11*B). Maintenant il te suffit de remplir ta matrice avec les valeur de ton gris et tu la converti en image.

N.B:
1- Pour une image en noir est blanc (niveaux de gris) R=G=B=y; y est la luminance (ce que tu as appelé gris)
exemple: R=230; G=230; B=230 est un gris clair, R=G=B=20 est un gris fonce.....

2- la relation (0.59*G+0.30*R+0.11*B) a été calculée a partir de la courbe de sensibilité relative de l'œil.