Try   HackMD

TIFO: Codage, partie 2 - histogramme

Analyse globale de l'image

Histogramme

  • Recense les occurrences de chaque couleur
  • Donne une information globale sur l'image
  • Permet la realisation de petits traitement globaux
  • Peut etre calcule sur une image en couleur

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Calcul de l'histogramme
  • Code:
histogramme: tableau initalise a 0
image: l'image sour forme d'un vecteur

for (offset = 0; offset < sx*sy; ++offset)
    histogramme[image[offset]]++

Quels information peut apport l'histogramme

  • Si une image est sur-exposee
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Si une image est sous-exposee
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Si une image manque de contraste

Applications

Amelioration du contraste

Application: modification du contraste a l'aide de l'histogramme

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Correction de l'histogramme:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Etirement
    • [min,max][0,borne_sup]
    • Fonction de correction:
      f(x)=ax+b
      • a=bsupbinfmaxmin
      • b=binfax
      • Generalement
        binf=0

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Etirement du resultat
    • J'ai bien augmente le contraste
    • J'ai detruit une partie de l'information
      • On a sature des pixels, effacant des details

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Amelioration de l'image

Application: modification du contraste a l'aide de l'histogramme

image: l'image sous forme d'un vecteur for (offset = 0; offset < sx*sy; ++offset) image[offset] = f(image[offset])

Tout depend du choix de f

  • Fonction
    log
    • si
      x0
      ,
      f(x)=ln(x)lnmaxmax
    • si
      x=0
      ,
      f(x)=0
    • L'intervalle des zones sombres est augmentee
  • Fonction
    exp
    • L'intervalle des zones claires est augmentee
    • L'image est assombrie
    • Attention aux plages de valeurs (exp(255))

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Modification des couleurs de l'image

Application: calcul du negatif

  • Fonction de correction:
    f(x)=bsupx

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Amelioration du contraste

Application: amelioration du contraste a l'aide de l'histogramme cumule

  • Calcul de l'histogramme cumule
    {hc(x)=hc(x1)+h(x)pour x>0hc(x)=h(x)pour x=0

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • Essayer d'uniformiser la repartition des niveaux de gris dans l'histogramme
  • Cela revient a essayer de rendre l'histogramme cumule lineaire
    • f(x)=bsuphc(x)nbpix

Resultat:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Histogramme et images couleurs

  • Differentes manieres de calculer
    • Globale
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • Par plan
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
  • Traitements:
    • Independamment sur chaque canal
    • Changement d'espace et traitement uniquement dans le plan L ou V

Applications

Amelioration du contraste

  • Egalisation d'histogramme de couleur
    • Effectuer l'egalisation sur chaque canal ?
      • Donne de mauvais resultats en general (modification des couleurs)
        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →
    • Solution:
      • Changer d'espace de representation
    • Utilisation de HSV ?
      • Egalisation uniquement sur la valeur

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Amelioration de l'image

Specification d'histogramme

  • Imposer la forme de l'histogramme
    • (comme pour l'egalisation qui donne un histogramme plat)

Indexation

  • Distance entre histogrammes
    • Comparaison d'images
    • Segmentation automatique en plan de sequences
      • Difference entre images consecutives
  • Distances
    • Bin-by-bin distances
      • Distances de Hellinger Bhattacharyya
    • Cross-bin distances
      • Earth Mover's Distance

Diminution du nombre de couleurs

  • Pourquoi diminuer le nombre de couleurs?
    • Simplifier l'image
    • Diminuer l'espace necessaire de stockage
    • Focaliser sur les elements qui nous interessent
    • Effet artisitique
  • Pourquoi plus precsiement passer de la couleur aux niveaux de gris ?
    • Traitement de la couleur pas toujours aisee
      • Plusieurs canaux
      • Pas vraiment de relation d'ordre utilisable avec la couleur
  • Pourquoi plus precisement passer en noir et blanc ?
    • Focaliser sur les elements qui nous interessent
      • Separation fond/forme (O.C.R., )

Objectif

Reduire le nombre de couleurs utilisees tout en conservant le plus possible une image proche de l'originale

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Algorithme

  • Mediane cut
    • Basee sur l'etude de l'histogramme
  • Diffusion de l'erreur
    • Adoucit certaines erreurs pour la visualisation

Median cut algorithm

  • Reduction du nombre de couleurs
    1. Construction de l'histogramme des couleurs
    2. Elimination des extremites vides
    3. Decoupage du prallelepipede restant en 2 sous-blocs contenant autant de points
    4. Pour chaque sous bloc, recommencer jusqu'a avoir autant de sous blocs que de couleurs souhaitees
    5. Trouver pour chaque partie, une couleur representante

Diffusion de l'erreur

Le but est de compenser l'erreur commise sur un pixel en propageant cette erreur sur les pixels voisins

FloydSteinberg:1215186768...6725265789...
Ex: on fait une erreur en substituant le 12 par son representant, on propage la difference entre 12 et son representant sur son voisin 15

  1. On remplace la couleur du pixel considere par le representant
    FloydSteinberg:15186768...6725265789...

    21186768...6725265789...
  2. On calcul l'erreur commise par cette substitution en faisant la difference entre la vraie couleur et la couleur de remplacement: on trouve une erreur pour chaque canal.
    +6
  3. On repartie l'erreur estimee sur les pixels voisins
    • Les voisins en haut et a droite participent plus que les voisins en diagonales
X
7
3
5
1

FloydSteinberg:21116768...6420255789...

Ce dernier tableau etait recommande par FloydSteinberg pour la propagation de l'erreur.

X 7/16
3/16 5/16 1/16

Resultats:

Passage en noir et blanc (binarisation)

Binarisation:

  • Separation fond/forme

Seuil global:

  • Utilisation de l'histograme
    • On suppose l'histogramme bi-modal (1 mod pour le fond et 1 pour la forme)
    • Trouver le niveau de gris a la jonction entre les 2

Seuil global - resultats:

Seuil global - un algorithme simple:

  1. Supposons un seuil T initial
  2. Calculons les moyennes m1 et m2 des ensembles des pixels d'intensite inferieure a T et superieur ou egale a T respectivement
  3. Corriger T avec
    T=m1+m22
  4. Si
    T>ΔT
    continuer en 2

Seuil global - Le critere d'Otsu

  • On cherche 2 classes
    • Minimiser la variance intra-classe
    • Maximisier la variance inter-classe
  • m1(k)
    et
    m2(k)
    les moyennes des 2 classes formees par le seuil k
  • mg
    la moyenne
  • p1(k)
    et
    p2(k)
    les probabilites d'occurrence des 2 classes formees par le seuil k
  • Maximiser la variance inter-classe:
    • σ(k)2=P1(k)(m1(k)mg)2+P2(k)(m2(k)mg)2
    • Or
      P1(k)m1(k)+P2(k)m2(k)=mg
      et
      P1(k)+P2(k)=1
    • σ(k)2=P1(k)P2(k)(m1(k)m2(k))2=(mgP1(k)m1(k))2P1(k)(1P1(k))
      • Reviens a chercher le k dans l'intervale ou
        P1(k)(1P1(k))0
        rel que
        σ(k)2
        est le maximum (si plusieurs max, faire la moyenne)

Seuil global

  • Rapide et simple
  • Se calcul directement sur l'hisotgramme
  • Dans la pratique pas toujours efficace selon le contexte

Resultats

Original:

Otsu: