ForHosting KIT · Images

Calculez l’histogramme de chaque canal d’une image

Le calculateur d’histogramme d’image transforme des valeurs de pixels réparties par canal en distributions de fréquences compactes.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.

Indiquez un ou plusieurs canaux nommés, choisissez le nombre de classes et obtenez une liste ordonnée de comptes pour chaque canal. Cet outil convient lorsque l’image est déjà décodée et que vous souhaitez des statistiques reproductibles sans téléverser ni réencoder le fichier d’origine. Chaque valeur est contrôlée dans la plage 8 bits, chaque pixel rejoint une seule classe et toute liste vide provoque une erreur.

Préparez les valeurs de chaque canal

Transmettez les pixels décodés dans le tableau channels. Chaque élément doit comporter un nom de canal unique et un tableau values d’intensités entières comprises entre 0 et 255. Les noms red, green, blue, alpha et gray sont courants, mais le calculateur n’impose aucun modèle colorimétrique : tout composant utilisant le même domaine 8 bits convient. L’ordre des valeurs n’influence pas l’histogramme, puisque seule leur fréquence compte. Chaque canal doit contenir au moins un pixel. La requête est refusée si la liste externe ou une liste values est vide, si un nom manque ou apparaît deux fois, ou si une valeur est décimale ou hors limites. Ces contrôles évitent qu’une source incomplète ressemble à une distribution valable. Vous pouvez fournir jusqu’à seize canaux et un million de valeurs par canal.

Comprenez le classement des intensités

Choisissez un nombre entier de classes compris entre 1 et 256, ou omettez ce réglage pour en utiliser 16. Le domaine complet des intensités 8 bits est partagé en intervalles de même largeur, de 0 à 255. Avec 16 classes, la première compte les valeurs de 0 à 15, la deuxième celles de 16 à 31 et la dernière celles de 240 à 255. En règle générale, l’indice correspond à la partie entière inférieure de la valeur multipliée par le nombre de classes puis divisée par 256. La borne supérieure est explicitement conservée dans la dernière classe, si bien que 255 n’est jamais perdu. La définition reste déterministe même si le nombre choisi ne divise pas 256 exactement. Chaque pixel incrémente un seul compteur et leur somme correspond donc à pixel_count.

Lisez, comparez et vérifiez le résultat

La réponse fournit bins, les limites fixes value_min et value_max, ainsi qu’un objet d’histogramme par canal reçu. Chaque objet conserve le nom du canal, indique pixel_count et renvoie counts par intensité croissante. La première position représente toujours l’intervalle le plus sombre et la dernière le plus clair, ce qui simplifie les graphiques et les comparaisons. Additionnez counts et vérifiez que le total égale pixel_count afin de repérer une éventuelle troncature dans votre chaîne de traitement. Un histogramme résume des fréquences, pas l’organisation spatiale : deux images visuellement différentes peuvent donc produire le même résultat. L’outil ne décode pas les fichiers, ne détermine pas l’espace colorimétrique, ne normalise pas l’exposition et ne fusionne pas les canaux. Décodez d’abord la source, puis utilisez cette capacité pour le comptage. Dans le navigateur, les données restent locales ; l’automatisation par API coûte $0.002 par requête.

Comparer les distributions colorimétriques

Produisez des comptes identiques pour le rouge, le vert et le bleu avant de mesurer les écarts entre deux images décodées.

Détecter les extrêmes d’exposition

Examinez les premières et dernières classes afin de repérer les canaux dominés par les ombres ou les hautes lumières.

Contrôler une chaîne de traitement

Enregistrez des histogrammes déterministes avant et après une transformation pour détecter toute variation tonale inattendue.

Quel est le tarif ?

Une exécution via l’API coûte $0.002 par requête. Le même calcul déterministe peut aussi être effectué dans votre navigateur.

Quelles valeurs de pixels sont acceptées ?

Chaque valeur doit être un entier compris entre 0 et 255, conformément à un canal d’image 8 bits.

Que se passe-t-il si une liste de pixels est vide ?

La requête échoue avec une erreur d’entrée incorrecte ; une liste vide ne produit jamais un histogramme rempli de zéros.

Comment classer les valeurs si le nombre de classes ne divise pas 256 ?

L’indice est la partie entière inférieure de value multipliée par bins puis divisée par 256, et 255 reste dans la dernière classe.

Cet outil décode-t-il les fichiers PNG, JPEG ou WebP ?

Non. Vous devez fournir des pixels déjà décodés et organisés en tableaux de canaux nommés.

Les canaux peuvent-ils contenir des nombres de pixels différents ?

Oui. Chaque canal est compté séparément et possède son propre pixel_count.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/image/histogram

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/image/histogram \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channels":[{"channel":"red","values":[0,15,16,127,128,240,255]},{"channel":"green","values":[0,64,64,128,192,255]}]}'
{
  "channels": [
    {
      "channel": "red",
      "values": [
        0,
        15,
        16,
        127,
        128,
        240,
        255
      ]
    },
    {
      "channel": "green",
      "values": [
        0,
        64,
        64,
        128,
        192,
        255
      ]
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "image.histogram",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_channels16
max_values_per_channel1000000
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →