2012-12-19 4 views

Répondre

10

Les images sont des matrices (2D si en niveaux de gris, 3D si coloré) dans Matlab.

Vous pouvez utiliser x(i,j) pour accéder à un pixel à l'emplacement (i,j) dans une image en niveaux de gris.

Si l'image est colorée, vous pouvez utiliser x(i,j,:) pour accéder aux valeurs r, g, b dans un vecteur 3, respectivement. Si vous avez besoin de canaux individuels, alors vous pouvez utiliser x(i,j,1) pour le rouge par exemple.

Vous pouvez lire this page pour en savoir plus.

+0

Merci pour votre réponse. Comment puis-je récupérer les index d'image? Comme quand j'ai utilisé la commande suivante: 'p1 = I (0,0);', j'ai: '??? Tentative d'accès à I (0,0); index doit être un entier positif ou logique. – Simplicity

+0

Les indices commencent à partir de 1 et vont à la longueur de la dimension. Ce n'est pas comme dans C. – petrichor

+0

Vous avez ce que vous voulez dire. Mais, n'y at-il pas un moyen plus pratique d'obtenir toutes les valeurs de pixel sans aller index par index? Surtout que vous connaissez certaines fois, vous pouvez avoir une image avec un grand nombre de pixels, et prendrait beaucoup de temps à accéder à chaque pixel individuellement. Qu'est-ce que tu penses? Merci – Simplicity

1

Vous pouvez utiliser reshape pour extraire toutes les valeurs de pixels de l'image dans un vecteur avec des valeurs de pixels:

frame = imread('picture.jpg'); 
frame_size = size(frame); 
allpixels = reshape(frame, frame_size(1)*frame_size(2), frame_size(3)) 

Cela peut être utile lorsque vous voulez vectoriser votre code Matlab (pour éviter une boucle for que passe par chaque pixel). Pour revenir à la représentation de l'image originale:

frame2 = reshape(allpixels, frame_size); 
+0

Comment transformer les coordonnées de la "requête" en pixels? Par exemple, je veux connaître les valeurs aux pixels (1,1) et (20,20). Comment est-ce que je l'écris? –

0

pour obtenir les valeurs à pixel(1,1) nous écrivons simplement image(1,1).

Questions connexes