Comment réduire la taille de l'image dans le traitement de l'image (scipy/numpy/python)
Bonjour, j'ai une image ( 1024 x 1024) et j'ai utilisé "fromfile de la commande" dans numpy pour mettre chaque pixel de cette image dans une matrice.
Comment puis-je réduire la taille de l'image ( ex. 512 x 512) par modifier que la matrice a?
a = numpy.fromfile(( - path - ,'uint8').reshape((1024,1024))
Je n'ai aucune idée de comment modifier la matrice, afin de réduire la taille de l'image. Donc, si quelqu'un a une idée, merci de partager vos connaissances et je vais être apprécié. Grâce
EDIT:
Quand je regarde le résultat, j'ai trouvé que le lecteur j'ai eu lecture de l'image et la mettre dans une "matrice". J'ai donc changé le "tableau" de la matrice.
José m'a dit que je ne peut prendre que même colonne et de la même ligne et la mettre dans une nouvelle matrice . Qui permettront de réduire l'image à la moitié de la taille. Quelle commande dans scipy/numpy dois-je utiliser pour faire cela?
Grâce
La réponse longue est que cela dépend du type d'image que vous venez de lire. La réponse courte/la question est "pourquoi ne pouvez-vous pas utiliser une bibliothèque?". Êtes-vous en mesure d'avoir PIL redimensionner et puis vous pouvez appeler numpy.reshape()?
l'image est en .dat fichier de l'extension, et le lecteur, je me suis peut lire l'image et la mettre dans une matrice. J'ai fait une erreur donc j'ai édité le post et le changement "tableau" à "matrice" puisqu'il est mis sous forme matricielle.
Maintenant ce que j'ai le problème est de savoir comment prendre seulement la même ligne et la même colonne de la matrice. Existe-il une fonction dans scipy ou numpy qui peut faire cela?
OriginalL'auteur Hold_My_Anger | 2011-05-22
Vous devez vous connecter pour publier un commentaire.
Je pense que le easyiest façon est de prendre seulement quelques colonnes et des lignes de l'image. Grâce à un échantillon de la matrice. Prenons, par exemple, seuls les même lignes et des colonnes, le mettre dans un nouveau tableau et vous avez une demi-taille de la nouvelle image.
C'est aussi simple que
y = x[::2, ::2]
(ou::3
si vous voulait que chaque troisième ligne, etc). Juste être conscient que ce sera la cause de l'aliasing problèmes, comme c'est essentiellement juste "plus proche voisin" interpolation (c'est très, très rapide, bien). @tillsten la réponse est beaucoup mieux en général, mais aura plus de frais généraux. Tout dépend exactement ce que vous devez faire.Kingston portant - grâce. y = x[::2, ::2] est le premier "::2" signifie obtenir toutes les 2 Lignes et la seconde "::2" signifie obtenir tous les 2 COLONNES? et x est la matrice de la que j'ai à l'origine, et y est la nouvelle matrice?
Oui je l'ai essayé et à l'origine, la taille est de 2048 x 2048. Maintenant, il est de 1024 x 1024. Merci beaucoup
c'est la mauvaise façon de le redimensionner. Si votre image contient en noir et blanc des lignes alternativement sur chaque pixel de la colonne et de la ligne sage, vous allez vous retrouver avec un complet noir ou blanc de l'image à la fin. La bonne façon est d'utiliser l'interpolation comme décrit ci-dessous.
OriginalL'auteur José Carlos Méndez
Si vous souhaitez redimensionner à la résolution spécifique, utilisez scipy.misc.imresize:
il est déconseillé dans scipy 1.0.0, skimage.transformer.redimensionner doit être utilisé
Malheureusement, le skimage alternative n'est pas actuellement un "plus proche voisin" option, si vous avez besoin, par exemple, réduire les données du capteur de 1280 à 224, vous aurez besoin de faire d'extra-mathématiques-vous.
OriginalL'auteur Mika Vatanen
Utiliser la fonction zoom de scipy:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.zoom.html#scipy.ndimage.zoom
OriginalL'auteur tillsten