[python]diviser array de image par 255

numpy, opencv

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’ai vu dans de nombreux tutoriels sur la reconnaissance d’image que les auteurs divisaient les valeurs contenu dans leurs arrays d’image par 255, (comme ici dans la partie "Two options to preprocess the data" par exemple). Pourriez vous m’expliquer le but de cette opération s’il vous plait ? Le but est il d’obtenir des valeurs valant seulement 0 ou 1 ?

Si jamais c’est bien le but, cela veut donc dire que lorsqu’on traite une image avant l’identification il faut la faire passer dans un filtre convertissant les couleurs en un noir ou un blanc absolue ?

Merci d’avance pour votre aide :)

+0 -0

Salut,

Pourriez vous m’expliquer le but de cette opération s’il vous plait ? Le but est il d’obtenir des valeurs valant seulement 0 ou 1 ?

Multiplier par 1. / 255 (ou même 1 / 255 en Python 3) va donner un flottant entre 0 et 1 plutôt que 0 ou 1. C’est probablement simplement parce que la librairie de traitement utilisée attend une entrée normalisée de cette façon plutôt que des valeurs entières de 0 à 255.

+3 -0

Bonjour,

Merci pour ton aide,grâce à tes explications je crois que j’ai compris:

Du coup ça veut dire que puisqu’on va avoir des valeurs en entier plutôt qu’en flottant, toutes les valeurs vont être arrondies à 0 ou 1 et il n’y aura pas de risque d’avoir une valeur à 0.55 par exemple.

Cela évite donc de devoir d’abord forcer tous les pixels à 0 ou 255 pour avoir une image en noir ou blanc pure puis de les diviser par 255 pour les avoir entre 0 et 1. Par contre, comme l’image est en couleur et que les pixels à 255 sont rare, il n’y a pas de risque de n’avoir presque que des pixels à 0 ?

Sinon par rapport au tutoriel, je crois que si on saute cette étape, on peut quand même compiler le modèle mais en faisant cette étape, on accélère le calcul, mais je ne suis pas sûr à 100%

Du coup ça veut dire que puisqu’on va avoir des valeurs en entier plutôt qu’en flottant, toutes les valeurs vont être arrondies à 0 ou 1 et il n’y aura pas de risque d’avoir une valeur à 0.55 par exemple.

Je ne vois pas comment tu conclues ça à partir de mon message, je dis exactement le contraire. Tu vas transformer chaque byte de ton image de départ en une valeur flottante entre 0 et 1 au lieu d’en entier entre 0 et 255. J’imagine que la raison derrière est que tu peux représenter plus de valeurs intermédiaires et donc limiter les effets d’arrondis lors des divers calculs.

Sinon par rapport au tutoriel, je crois que si on saute cette étape, on peut quand même compiler le modèle mais en faisant cette étape, on accélère le calcul, mais je ne suis pas sûr à 100%

Marty_and_Doc

C’est bien possible, mais ça c’est plutôt de l’ordre du détail de l’implémentation interne de la bibliothèque utilisée et ce qu’elle fait avec différents formats d’entrée. Honnêtement, je ne trouve pas le tuto très clair ni informatif sur ce qui se passe, mais ça vient peut être juste que je ne fais pas de traitement d’image.

+1 -0

Je ne vois pas comment tu conclues ça à partir de mon message, je dis exactement le contraire. Tu vas transformer chaque byte de ton image de départ en une valeur flottante entre 0 et 1 au lieu d’en entier entre 0 et 255. J’imagine que la raison derrière est que tu peux représenter plus de valeurs intermédiaires et donc limiter les effets d’arrondis lors des divers calculs.

Ah d’accord, je n’avais pas compris, avec ta seconde explication c’est plus clair dans ma tête merci. Maintenant que j’ai la réponse à ma question je me permet de mettre le sujet en résolue, encore une fois merci pour ton aide :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte