PANDORE Version 6 |
GREYC-IMAGE |
pgaussclassification
Classification utilisant un modèle gaussien.
Synopsis
pgaussclassification attr_base attr_in attr_out [col_base|-] [col_in|-] [col_out|-]
Description
L'opérateur pgaussclassification implémente une
classification basée sur un modèle gaussien.
L'idée. est de modéliser la distribution de chaque
classe par une gaussienne,
puis pour un x donné de
rechercher la classe qui maximise la probabilité de contenir x.
Pratiquement, pgaussclassification cherche la classe i
qui minimise:
f(x,i) = ln(det A(i)) + t(x - m(i)).A(i)-1.(x - m(i)) - ln(P(i)2)
- x est le vecteur de caractéristiques
représentant l' à classifier ;
- A(i) la matrice de covariance associée
à la classe i ;
- m(i) le vecteur de moyennes des caractéristiques
de la classe i ;
- P(i) la probabilité a priori de
trouver la classe i.
Paramètres
- La collection col_base doit contenir les paramètres
de la formule ci-dessus.
Si l'on suppose qu'il existe n classes et
p caractéristiques par élément :
- attr_base.moy est un tableau de n*p flottants
contenant à l'indice [i*n+j] la moyenne de la
(j+1)ième caractéristique de la
(i+1) classe.
- attr_base.det est un tableau de n flottants contenant
à l'indice [i-1] la valeur de det(A(i)).
- attr_base.inv est le tableau des matrices A^(-1);
l'indice [k*p*p + i*p +j] correspond à la cellule
(i+1,j+1) de la (k+1)ième matrice.
(Ces trois 3 attributs peuvent être calculés
avec l'opérateur parraycovarmat.)
- attr_base.pap est le tableau des probabilités
a priori pour chaque classe (un tableau de n
flottants donc).
(Ce dernier attribut peut-être omis, dans le cas où les classes sont
équiprobables.)
- La collection col_in doit contenir les x à classifier,
sous la forme d'attributs
attr_in.1, attr_in.2,
..., attr_in.p,
qui sont des tableaux contenant les
caractéristiques de chaque élément à classifier.
- La collection col_out contient un tableau de Ushort, donnant
la classe déterminée pour chaque
de col_in.
Entrées
- col_base: une collection contenant les paramètres appris.
- col_in: une collection à classer.
Sorties
Résultat
Retourne SUCCESS ou FAILURE.
Exemples
Classification des bonbons de l'image jellybean.pan à partir d'un échantillon des différents types de bonbons stockés dans le dossier 'base' (Unix version):
# Learning
classes=1
for i in base/*.pan
do
pim2array ind $i /tmp/tmp1
parray2array ind.1 Float /tmp/tmp1| parray2array ind.2 Float | parray2array ind.3 Float - a.pan
parraycovarmat ind ind a.pan i-01.pan
if [ -f base.pan ]
then pcolcatenateitem i-01.pan base.pan base.pan
else cp i-01.pan base.pan
fi
classe=`expr $classe + 1`
done
rm /tmp/tmp1
# Classification
pim2array ind jellybeans.pan a.pan
parray2array ind.1 Float a.pan| parray2array ind.2 Float | parray2array ind.3 Float - b.pan
pgaussclassification ind ind ind base.pan b.pan | parray2im $ncol $nrow 0 ind | pim2rg - out.pan
Voir aussi
Classification
Prototype C++
Errc PGaussClassification(const std::string &a_base, const Collection &c_base,
const std::string &a_in, const Collection &c_in,
const std::string &a_out, Collection &c_out);
Auteur: Alexandre Duret-Lutz