---
title: INFO911 (3c) Contraste, Histogramme, Egalisation
type: slide
slideOptions:
transition: slide
progress: true
slideNumber: true
---
# Contraste, Histogramme, Egalisation
## (Traitement et Analyse d'Image 3c)
> [name=Jacques-Olivier Lachaud][time=Novembre 2020][color=#907bf7]
> (Les images peuvent être soumises à des droits d'auteur. Elles sont utilisées ici exclusivement dans un but pédagogique)
###### tags: `info911`
Retour à [INFO911 (Main) Traitement et analyse d'image](https://codimd.math.cnrs.fr/s/UE_B59gMy)
---
# Contraste des images
Quantifie la différence de luminosité entre les parties claires et sombres d'une image $I$
==contraste== $C=\frac{I_{max}-I_{min}}{I_{max}+I_{min}}$
$C$ varie donc entre 0: pas de contraste et 1: contraste maximum Noir/Blanc
Pas très utile globalement, seulement localement, car pas représentative de la proportion de toutes les intensités intermédiaires.
---
# Histogramme d'images Noir et Blanc
Espace discret de valeurs, $V=\{0,1,2,\ldots, 255\}$, un domaine $R$
L'==histogramme $h_I$== mesure la proportion de pixels de $I$ qui ont une même valeur:
$\forall v \in V, h_I[v] = \# \{ p \in R, I[p] = v \}~/~\#\{R\}$
$\forall v \in V, H_I[v] = \sum_{ i=0, i \le v} h_I[i]$
$h_I[v]$=probabilité qu'un pixel de $I$ ait la valeur $v$
$H_I[v]$=probabilité qu'un pixel de $I$ ait une valeur $\le v$
|  |  |  |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |:-------------------------------------------------------------------------------------------------------:|
| Image | Histogramme $h_I$ | Histogramme cummulé $H_I$ |
---
# Exposition et histogrammes

---
# Histogrammes mal/bien équilibrés
|  |  |  |
| ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --- |
| Image faible dynamique | Histogramme | Histogramme équilibré |
==Idée== : étaler l'histogramme pour mieux répartir la dynamique
---
### Egalisation d'histogramme
|  |  |  |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| input $h_I$, $H_I$ | $h_J$, $H_J$ égalisé | output image $J$ |
On cherche $f: V \rightarrow V$ tel que $J = f \circ I$, pixels $p \in R$
$$
\frac{v}{255} = H_{f \circ I}[v] = \frac{\#\{p \in R, f \circ I[p] \le v \}}{\#\{p \in R\}} = \frac{\#\{p \in R, I[p] \le f^{-1}[v] \}}{\#\{p\in R\}} = H_{I}[ f^{-1}[v]]
$$
Soit $w=f^{-1}[v]$, on a $v=f[w]$, il vient $\frac{f[w]}{255}=H_I[w]$, i.e. $f[w] = 255 \cdot H_I[w]$
On applique $f$ sur tous les pixels de $I$ pour obtenir $J$
---
# Exercices
## Exercice 1: égalisation d'image binaire
Peut-on obtenir des résultats intéressants en égalisant des images binaires (i.e. intensité 0 ou 255) ?
## Exercice 2: Spécialisation d'histogramme
A partir de deux images $I$ et $K$, on veut fabriquer une image $I' = h \circ I$ qui a la même dynamique que l'image $K$.
Proposez une méthode en se basant sur le principe de l'égalisation d'histogramme.
---
# Histogramme d'images quantifiés / locaux
### Histogrammes quantifiés
On peut aussi se donner un ensemble de "bins" qui partitionne $V$
Par exemple, quantification en 16 bins $B_i = \{16*i, \ldots, 16*i+15 \}$
$\forall i, 0 \le i < 16, h_I[i] = \# \{ p \in R, I[p] \in B_i \} / \#\{R\}$
$\forall i, 0 \le i < 16, H_I[i] = \sum_{j=0}^{i} h_I[j]$
### Histogrammes locaux
On peut calculer un histogramme sur une simple zone
=> extrait des informations statistiques locales
=> égalisation/spécialisation locale pour améliorer le contraste d'une région
=> comparaisons d'histogrammes pour évaluer les ressemblances
---
# Histogramme d'images couleurs
1. soit extraction d'un canal (souvent V de HSV) => ==égalisation== de ce canal ou ==rehaussement de contraste==
|  |  |
| ---- | -------- |
| Input image | Image égalisée sur canal V |
`video-equalization`
---
# Histogramme d'images couleurs
2. soit quantification de RGB/HSV en bins
=> ==comparaisons== ou ==transport== de couleur
distances/similarité entre distributions
:::warning
Distance entre 2 couleurs $\neq$ distance entre 2 distributions de couleurs.
:::
`video-color-distribution`
---
# Comparaisons d'histogrammes
On définit plusieurs distances entre histogrammes, ce qui permet de comparer la ressemblance ou la dissemblance entre des images ou des régions.


En fait $h_I$ est une probabilité (discrète) et $H_I$ est sa fonction de répartition, donc les outils classiques de probabilités/statistiques sont utilisables.
Par exemple l'espérance de $h_I$ est bien la moyenne de $I$
---
# Notes: espérance de h_I = moyenne de I
Si $R$ est le domaine de l'image, $v$ désigne des valeurs, $p$ des pixels
$$
\begin{align}
E[h_I] &= \sum_{v=0}^{255} v \cdot P(h_I=v) \\
&= \sum_{v=0}^{255} v \cdot \frac{\#\{p, I(p)=v\}}{\#\{R\}} \\
&= \frac{1}{\#\{R\}} \sum_{v=0}^{255} v \cdot \#\{p, I(p)=v\} \\
&=\frac{1}{\#\{R\}} \sum_{p \in R} I(p)
\end{align}
$$