Salut tous,
je vous écris car je manipule des images (mais ne les modifient pas) avec des fonctions matlab toutes prêtes mais le soucis est que j'aimerais bien comprendre ce qui se passe derrière car je n'y connais grand chose et ça m'ennuie d'utiliser des trucs tout près sans comprendre.
pouvais vous me dire ce qui est faux dans ce que je dis ci dessous et compléter les choses que je ne comprends pas svp ?
- Une image couleur est définie par une matrice <740x379x3 uint8>, 740x379 est la taille de l'image car chaque composante représente un pixel. <3 uint8> veut dire que c'est une matrice 3D que l'on a car chaque pixel à trois composantes (rouge vert bleu) qui peuvent prendre comme valeurs 0 à 255 (entier codé sur 8 bytes: 8 valeurs prenant 0 ou 1).
- la fonction rgb2gray permet de convertir la cette matrice en une matrice <740x379 uint8> mais comment convertir nos 3 valeurs de couleur en niveau de gris ?
- j'ai eu à utiliser la fonction im2double mais je ne me rappel plus pourquoi... je comprends que ça sert à avoir des composantes doubles mais qu'elle intérêt ?? et comment convertir un nombre (vecteur) RGB en double ???
- im2bw : ceci permet de convertir une image RGB ou GREY en binaire, chaque pixel de la matrice <740x379> vaut 0 ou 1 selon un seuil de niveau de gris que l'on aura déterminé (on ne peut utiliser cette fonction qu'a partir d'une image grey donc).
- gradient : cette fonction fait un calcul de différence fini entre les pixel pour une expression du gradient en tout pixel. ça sert par exemple à amplifier les contours.
Maintenant côté pratique :
- lorsque je fais du traitement d'image je m'intéresse à détecter des contours ou des trucs dans ce style mais par contre je n'ai jamais modifié une image, dans le principe je pense comprendre: il suffit de modifier les valeurs associées à chaque pixel mais contre comment on le fait en pratique ?
- j'y suis arrivé sur un cas simple :
mais par contre j'ai essayé de faire la même chose en niveau de gris et couleur mais je n'y suis pas arrivé.... car il n'y a pas de fonction "double2grey" et "double2rgb" ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 A=load('clown.mat'); matriceImg=(A.X); matriceImg(:,100)=0.9 image(matriceImg);
- et dernière question: pourquoi utiliser parfois les images avec "image()" et parfois "imshow" ? Le code précédent fonction avec imshow mais l'image est toute blanche*...
j'espère que vous pourrez m'éclaircir sur toute ceci, je vous remercie par avance !
Partager