Vous êtes sur la page 1sur 15

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/357204356

Segmentation d'images par la Technique Régression Linéaire

Preprint · December 2021


DOI: 10.13140/RG.2.2.17769.21607

CITATIONS READS
0 259

1 author:

Imen Chebbi
University of Nantes
43 PUBLICATIONS   4 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Approche d’Amélioration de la Visibilité des Entreprises sur Internet à base du Comportement Navigationel de l’internaute View project

E-Learning Framework and Assessment View project

All content following this page was uploaded by Imen Chebbi on 21 December 2021.

The user has requested enhancement of the downloaded file.


Segmentation d’images par la Technique
Régression Linéaire
chebbi imen, chabbiimen@yahoo.fr

 Introduction
Les images numériques ont de plus en plus de domaines d’application de nos
jours. Il convient d’ailleurs de prendre ici le mot image au sens large de
cartographie d’une propriété physique, éventuellement complexe ou vectorielle, en
tout cas non limitée à l’intensité photométrique. Ces images doivent souvent être
obtenues par le calcul, à partir de données issues de capteurs, voire à partir
d’autres images.

La segmentation d’images est un traitement de bas niveau qui consiste à créer


une partition de l'image A en sous-ensembles Ri, appelés régions tels qu’aucune
région ne soit vide, l'intersection entre deux régions soit vide et l’ensemble des
régions recouvre toute l'image. On définit une région comme un ensemble de
pixels connexes ayant des propriétés communes qui les différencient des pixels
des régions voisines. L’objectif de la segmentation est d'établir une description
compacte et représentative de son contenu informationnel, plus exploitable que
l'ensemble de ses points. A cet effet, différentes familles de méthodes sont
envisagées : méthodes basées régions, méthodes basées contour, méthodes de
seuillage (basées sur l’histogramme de l’image) et méthodes de classification.
Dans notre mini projet, nous sommes intéressés par la technique de régression
linéaire.

 Fondements théoriques
La segmentation d'image vise à partitionner une image en plusieurs régions disjointes,
chaque région correspondant à un objet visuel significatif. C'est un problème fondamental
dans le traitement d'image et la vision par ordinateur, et a de larges applications dans la
reconnaissance d'objets, le suivi de cibles, la récupération d'images basée sur le contenu et
le traitement d'images médicales.
De nombreuses méthodes existantes traitent la segmentation d'image comme un problème
de regroupement et ont été empiriquement réussies.
Les auteurs [1], ont présenté une méthode pour segmenter des images avec des régions
texturées et non texturées et ont formulé le problème de segmentation comme une
régression linéaire multivariée, où la solution est obtenue par estimation des moindres
carrés tout en approchant l'histogramme spectral local d'un emplacement de pixel par une
combinaison linéaire des caractéristiques représentatives pondérées par la couverture de
zone de chaque entité. Aussi, ils ont proposé un algorithme pour identifier
automatiquement les caractéristiques représentatives correspondant à différentes régions
homogènes et ont montré que le nombre de caractéristiques représentatives peut être
déterminé en examinant le rang effectif d'une matrice de caractéristiques.
Dans [2], l'extension des images couleur avec des images de profondeur régressées en
profondeur correspondantes, a été étudiée, pour améliorer les performances de la
segmentation sémantique. Les auteurs ont utilisé la combinaison de canaux de couleur avec
la profondeur estimée ou le canal de profondeur de vérité au sol est comparé. Ils ont utilisé
dans les expériences, deux ensembles de données RGBD populaires, à savoir, SUNRGBD
et NYUDv2, pour la segmentation sémantique de 37 et 40 classes, respectivement.
Les auteurs [3], présentent un modèle de jeu de niveaux basé sur la région locale pour la
segmentation d'image. Ils ont définit, dans chaque région locale, une énergie des moindres
carrés pondérée localement pour s'adapter à un classificateur linéaire. Avec une
représentation par jeu de niveaux, ces fonctions énergétiques locales sont ensuite intégrées
sur tout le domaine de l'image pour développer un modèle de segmentation global. La
fonction objective dans ce modèle est ensuite minimisée via l'évolution de l'ensemble de
niveaux. Dans ce processus, les paramètres liés au classificateur localement linéaire sont
estimés de manière itérative. Les auteurs ont introduit les fonctions localement linéaires
pour séparer l'arrière-plan et l'avant-plan dans les régions locales.
Dans [4], les auteurs ont proposé un algorithme de regroupement flou, pour segmenter les
images en différents tissus. Aussi, ils ont utilisé des méthodes de régression linéaire, pour
concevoir le modèle de régression basé sur la méthode d'extraction de caractéristiques et
les valeurs d'intensité de luminosité. Les résultats de l'algorithme proposé pour
l'histogramme dose-volume (DVH), les courbes isodose et l'analyse gamma ont été étudiés
à l'aide du système de planification de traitement RayPlan et du logiciel VeriSoft. En outre,
divers indices statistiques tels que l'erreur absolue moyenne (MAE), l'erreur moyenne
(ME) et l'indice de similarité structurelle (SSIM) ont été calculés.
Les auteurs [5], ont proposé une approche intégrée basée sur la régression inverse itérative
en tranches (ISIR) pour la segmentation d'images par ultrasons et résonance magnétique
(RM).Ils se sont basé sur le clustering non supervisé qui combine la mise à l'échelle
multidimensionnelle (MDS) avec des K-Means pour la réduction de dimension et donc
obtenir moins de variables représentatives comme variables d'entrée pour les K-Means.
Aussi, ils ont combiné le SIR avec le classificateur moyen le plus proche (NMC) ou la
machine vectorielle de support (SVM) pour mettre à jour de manière itérative les étiquettes
de groupe pour la segmentation supervisée.

 Algorithmes
On cherche à modéliser une variable quantitative Y en fonction de variables explicatives
quantitatives x1, x2, ..., xp.
Sous l’hypothèse gaussienne, le modèle de régression linéaire s’écrit :
(1)
avec β0, β1, ..., βp inconnus, et e1, ..., en n observations indépendantes d’une loi N(0,σ2 )
avec σ2 inconnue.

Soit un échantillon de n individus. Pour chaque individu i (i = 1,...n), on a observé


– yi la valeur de la variable quantitative y,
– xi la valeur de la variable quantitative x.

On veut étudier la relation entre ces deux variables, et en particulier, l’effet de x (variable
explicative) sur y (variable réponse). Dans un premier temps, on peut représenter
graphiquement cette relation en traçant le nuage des n points de coordonnées (xi ,yi). Dans
le cas où le nuage de points est de forme “linéaire”, on cherchera à ajuster ce nuage de
points par une droite.

La relation entre yi et xi s’écrit alors sous la forme d’un modèle de régression linéaire
simple [6]:
∀i = {1,...,n} (2)
où ei est une réalisation de Ei ∼ N(0,σ2 ), et les n v.a. Ei sont indépendantes. La première
partie du modèle β0 + β1xi représente la moyenne de yi sachant xi , et la seconde partie ei ,
la différence entre cette moyenne et la valeur observée yi . Le nuage de points est résumé
par la droite d’équation y = β0 + β1x.

Poids du courrier
Pour un xi donné, correspondent donc yi la valeur observée et β0 + β1xi la valeur prédite
par la droite.

 Expérimentations
Dans notre travail, on a utilisé ‘perturbations’,’predictions’ et ‘weights’ pour ajuster
un modèle explicable (linéaire), Un modèle de régression linéaire pondéré est
ajusté à l'aide des données des étapes précédentes (perturbations, prédictions et
poids). Étant donné que la classe que nous voulons expliquer est le labrador, lors
de l'ajustement du modèle linéaire, nous ne prenons du vecteur de prédictions que
la colonne correspondant à la classe prédite la plus élevée. Chaque coefficient du
modèle linéaire correspond à un superpixel dans l'image segmentée. Ces
coefficients représentent l'importance de chaque superpixel pour la prédiction du
labrador.

Critères d’évaluation de segmentation

On peut classer ces critères en deux grandes catégories : les critères de


contrastes et les critères d’uniformités. Les premiers recherchent une variabilité
inter-région, alors que les seconds recherchent une uniformité en intensité ou en
couleur à l’intérieur des régions. La valeur de chaque critère augmente avec la
qualité du résultat de segmentation. Ces valeurs ont été normalisées afin de
faciliter leurs comparaisons c’est-à-dire une valeur du critère proche de 1 traduit
un très bon résultat de segmentation. Les différents critères sont décrits de façon
détaillée dans [7]. Dans notre processus d’évaluation, on va intéresser aux critères
de Levine et Nazif.

 Contraste inter-région de Levine et Nazif (Inter-région) : [8]

Ce critère calcule la somme des contrastes des régions (pondérée par leur aire ( . On peut
définir le contraste d’une région à partir des contrastes existants avec les régions qui lui
sont contigües
Ou (3)

Avec

: moyenne de la région.
: Longueur de la frontière commune entre et.
: Périmètre de la région.

 Critère d’uniformité intra-région de Levine et Nazif (Intra-region) [8]:

Ce critère permet de calculer la somme des variances normalisées des régions (retranchée à
1).
L’avantage de ce critère est d’être facilement mis à jour dans les opérations de fusion ou de
division des régions.

 Combinaison disparité intra-classe et inter-classe (intra-inter): l’indice utilisé est une


version simplifiée de la méthode proposée dans [8] combinant des versions similaires du
contraste inter-région et intra-région de Levine et Nazif.

Soit D le résultat de l’évaluation

(4)

Tel que : disparité intra-classe

: disparité inter-classe

Dans le cas uniforme la disparité intraclasse d’une région est donnée par :

(5)

Moy1 : la moyenne des sommes carrées des niveaux de gris de la région examinée.

Moy2 : la moyenne des niveaux de gris de la région examinée

Cette statistique d’ordre 2 sur la dispersion des niveaux de gris d’une région est
suffisante pour caractériser la disparité intra-classe d’une région.

 Disparité interclasse
On calcule la disparité entre deux régions et de la facon suivante :

(6)

Tel que : le niveau de gris moyen de la région examinée

NG : le nombre des niveaux de gris dans l’image

L’avantage principal des critères d’évaluation non supervisés est qu’ils requièrent
seulement une métrique de mesure de qualité .Alors, ils sont automatisables et ne
nécessitent aucun expert. L’inconvénient majeur de ces critères est l’incertitude sur la
fonction de calcul de caractéristiques [10].

Pour tester notre algorithme nous avons utilisé les images Fig1 et Fig2 suivantes :

Fig1. Cameramen Fig2. Lina


Fig 3 représente
l'effet perturbation sur l’image Cameramen L’image.
Fig4 représente l'effet perturbation sur l’image Lina.

Fig3: L’effet perturbation sur Fig4: L’effet perturbation sur l’image Lina
l’image Cameramen

Fig5 représente l’effet perturbations, prédictions et weights pour ajuster un modèle


explicable (linéaire) sur l’image Cameramen :

Fig 6 représente l’effet perturbations, prédictions et weights pour ajuster un modèle


explicable (linéaire) sur l’image Lina:
Fig5 : L’effet perturbations, prédictions et weights pour ajuster un modèle explicable (linéaire)
sur l’image Cameramen

Fig6: L’effet perturbations, prédictions et weights pour ajuster un modèle explicable (linéaire)
sur l’image Lina
Pour tester notre Algorithme nous avons trouvée comme valeur de mesure Levine-Nazif :

Figure 1 Figure 2
Levine-Nazif 0,035 0,030

 Code Python
Nous avons utilisé pour la régression linéaire Google Colab et voici les
deux codes pour les deux images. On commence pour le code de régression
linéaire pour l'image Lina :

%tensorflow_version 1.x
import numpy as np
import keras
from keras.applications.imagenet_utils import decode_predictions
import skimage.io
import skimage.segmentation
import copy
import sklearn
import sklearn.metrics
from sklearn.linear_model import LinearRegression
import warnings

print('Notebook running: keras ', keras.__version__)


np.random.seed(222)

warnings.filterwarnings('ignore')
inceptionV3_model = keras.applications.inception_v3.InceptionV3() #Load pr
etrained model
from google.colab import drive
drive.mount('/content/drive')
cd drive/My Drive
Xi = skimage.io.imread("/content/drive/My Drive/lena_gray_256.jpg")
Xi = skimage.transform.resize(Xi, (299,299))
Xi = (Xi - 0.5)*2 #Inception pre-processing
skimage.io.imshow(Xi/2+0.5) # Show image before inception preprocessing
np.random.seed(222)
preds = inceptionV3_model.predict(Xi[np.newaxis,:,:,:])
decode_predictions(preds)[0] #Top 5 classes
top_pred_classes = preds[0].argsort()[-5:][::-1]
top_pred_classes #Index of top 5 classes
superpixels = skimage.segmentation.quickshift(Xi, kernel_size=4,max_dist=2
00, ratio=0.2)
num_superpixels = np.unique(superpixels).shape[0]
num_superpixels
skimage.io.imshow(skimage.segmentation.mark_boundaries(Xi/2+0.5, superpixe
ls))
num_perturb = 150
perturbations = np.random.binomial(1, 0.5, size=(num_perturb, num_superpix
els))
perturbations[0] #Show example of perturbation
def perturb_image(img,perturbation,segments):
active_pixels = np.where(perturbation == 1)[0]
mask = np.zeros(segments.shape)
for active in active_pixels:
mask[segments == active] = 1
perturbed_image = copy.deepcopy(img)
perturbed_image = perturbed_image*mask[:,:,np.newaxis]
return perturbed_image
skimage.io.imshow(perturb_image(Xi/2+0.5,perturbations[0],superpixels))
predictions = []
for pert in perturbations:
perturbed_img = perturb_image(Xi,pert,superpixels)
pred = inceptionV3_model.predict(perturbed_img[np.newaxis,:,:,:])
predictions.append(pred)

predictions = np.array(predictions)
predictions.shape
original_image = np.ones(num_superpixels)[np.newaxis,:] #Perturbation with
all superpixels enabled
distances = sklearn.metrics.pairwise_distances(perturbations,original_imag
e, metric='cosine').ravel()
distances.shape
kernel_width = 0.25
weights = np.sqrt(np.exp(-
(distances**2)/kernel_width**2)) #Kernel function
weights.shape
class_to_explain = top_pred_classes[0]
simpler_model = LinearRegression()
simpler_model.fit(X=perturbations, y=predictions[:,:,class_to_explain], sa
mple_weight=weights)
coeff = simpler_model.coef_[0]
coeff
num_top_features = 4
top_features = np.argsort(coeff)[-num_top_features:]
top_features
mask = np.zeros(num_superpixels)
mask[top_features]= True #Activate top superpixels
skimage.io.imshow(perturb_image(Xi/2+0.5,mask,superpixels) )

Code Colab régression linéaire de l’image Cameramen :

%tensorflow_version 1.x
import numpy as np
import keras
from keras.applications.imagenet_utils import decode_predictions
import skimage.io
import skimage.segmentation
import copy
import sklearn
import sklearn.metrics
from sklearn.linear_model import LinearRegression
import warnings

print('Notebook running: keras ', keras.__version__)


np.random.seed(222)

warnings.filterwarnings('ignore')
inceptionV3_model = keras.applications.inception_v3.InceptionV3() #Load pr
etrained model
from google.colab import drive
drive.mount('/content/drive')
cd drive/My Drive
Xi = skimage.io.imread("/content/drive/My Drive/cameramen.jfif")
Xi = skimage.transform.resize(Xi, (299,299))
Xi = (Xi - 0.5)*2 #Inception pre-processing
skimage.io.imshow(Xi/2+0.5) # Show image before inception preprocessing
np.random.seed(222)
preds = inceptionV3_model.predict(Xi[np.newaxis,:,:,:])
decode_predictions(preds)[0] #Top 5 classes
top_pred_classes = preds[0].argsort()[-5:][::-1]
top_pred_classes #Index of top 5 classes
superpixels = skimage.segmentation.quickshift(Xi, kernel_size=4,max_dist=2
00, ratio=0.2)
num_superpixels = np.unique(superpixels).shape[0]
num_superpixels
skimage.io.imshow(skimage.segmentation.mark_boundaries(Xi/2+0.5, superpixe
ls))
num_perturb = 150
perturbations = np.random.binomial(1, 0.5, size=(num_perturb, num_superpix
els))
perturbations[0] #Show example of perturbation
def perturb_image(img,perturbation,segments):
active_pixels = np.where(perturbation == 1)[0]
mask = np.zeros(segments.shape)
for active in active_pixels:
mask[segments == active] = 1
perturbed_image = copy.deepcopy(img)
perturbed_image = perturbed_image*mask[:,:,np.newaxis]
return perturbed_image
skimage.io.imshow(perturb_image(Xi/2+0.5,perturbations[0],superpixels))
predictions = []
for pert in perturbations:
perturbed_img = perturb_image(Xi,pert,superpixels)
pred = inceptionV3_model.predict(perturbed_img[np.newaxis,:,:,:])
predictions.append(pred)

predictions = np.array(predictions)
predictions.shape
original_image = np.ones(num_superpixels)[np.newaxis,:] #Perturbation with
all superpixels enabled
distances = sklearn.metrics.pairwise_distances(perturbations,original_imag
e, metric='cosine').ravel()
distances.shape
kernel_width = 0.25
weights = np.sqrt(np.exp(-
(distances**2)/kernel_width**2)) #Kernel function
weights.shape
class_to_explain = top_pred_classes[0]
simpler_model = LinearRegression()
simpler_model.fit(X=perturbations, y=predictions[:,:,class_to_explain], sa
mple_weight=weights)
coeff = simpler_model.coef_[0]
coeff
num_top_features = 4
top_features = np.argsort(coeff)[-num_top_features:]
top_features
mask = np.zeros(num_superpixels)
mask[top_features]= True #Activate top superpixels
skimage.io.imshow(perturb_image(Xi/2+0.5,mask,superpixels) )
 Conclusion

A partir de la méthode considérée, la complexité du modèle s’exprime de différentes


façons. Simplement lors d’une sélection de variable en régression linéaire, la complexité
est directement liée à la dimension de l’espace engendré et donc au nombre de variables.
Pour les modèles non linéaires, les choses se compliquent lorsque, à dimension fixée, c’est
la plus ou moins grande flexibilité des solutions qui doit être pénalisée.

C’est le même cas en régression non-paramétrique ou fonctionnelle. On remarque qu'une


pénalisation faisant intervenir la norme carrée de la dérivée seconde contrôle la flexibilité
d’un lissage spline. Largeur de fenêtre du noyau contrôle également la régularité de la
solution. Notons que en régression linéaire, si le nombre et les variables sont déterminés, la
version “ridge” de la régression pénalise la norme carrée du vecteur des paramètres et
restreint ainsi, par régularisation, l’espace des solutions pour limiter l’effet de la multi
colinéarité. Ce principe de régularisation par pénalisation a été transposé à la plupart des
méthodes connues.
Dans notre projet, nous avons étudié la régression linéaire en testant cette méthode sur
deux images : Lena et Cameramen.
Cette étude nous a permis de mettre en évidence la performance de critère d’évaluation
Levine-Nazif [11] que nous avons adapté pour évaluer notre algorithme.

 Bibliographie
[1] Yuan, J., Wang, D., & Li, R. (2012). Image segmentation using local spectral
histograms and linear regression. Pattern Recognition Letters, 33(5), 615–
622. doi:10.1016/j.patrec.2011.12.003.
[2] Bertò, G., Bullock, D., Astolfi, P., Hayashi, S., Zigiotto, L., Annicchiarico, L.,
Olivetti, E. (2020). Classifyber, a robust streamline-based linear classifier for white
matter bundle segmentation. NeuroImage,
117402. doi:10.1016/j.neuroimage.2020.117402.

[3] Ying Wang, Shiming Xiang, Chunhong Pan, Lingfeng Wang, Gaofeng Meng. (2013). Level set evolution
locally linear classification for image segmentation. Pattern Recognition Volume 46, Issue 6, Pages 1734-1746.

[4] Yousefi Moteghaed, N., Mostaar, A., Maghooli, K., Houshyari, M., & Ameri, A. (2020). Estimation and evalu
of pseudo-CT images using linear regression models and texture feature extraction from MRI images in the
region to design external radiotherapy planning. Reports of Practical Oncology & Radiotherapy, 25(5),
745. doi:10.1016/j.rpor.2020.05.005

[5] Wu, H.-M., & Lu, H. H.-S. (2007). Iterative sliced inverse regression for segmentation of ultrasound and
images. Pattern Recognition, 40(12), 3492–3502. doi:10.1016/j.patcog.2007.04.019.
[6] C.Chouquet. (2010). MODELES LINEAIRES. M1 IMAT, Année 2009-2010, Laboratoire de Statistiqu
Probabilités - Université Paul Sabatier – Toulouse.

[7] S. Philipp-Foliguet. (2001). Evaluation de la segmentation. Rapport Technique.

[8] Hélène LAURENT, Sébastien CHABRIER, Christophe ROSENBERGER, Bruno EMILE, Pierre MARCHÉ. E
comparative de critères d’évaluation de la segmentation. Laboratoire Vision et Robotique ENSI de Bourg
Université d’Orléans

[9] Seyed Sadough, Touloumdjian. (2004). Segmentation par ligne de partage des eaux sous contraintes. DEA A
http://www.tsi.telecom-paristech.fr/pages/enseignement/ressources/beti/lpe2/ index.html.

[10] D. M. Chau, (2007). Evaluation de la segmentation d’images.

[11] LEVINE M.D., NAZIF A.M., (1985). Dynamic measurement of computer generated image segmentations, I
Trans. on PAMI, 7(25), p. 155-164.

View publication stats

Vous aimerez peut-être aussi