Spiegazione della routine 07-Face-Detection->face_recognitionRiconoscimento facciale
Tutorial video 19 - Distinguere volti diversi: https://singtown.com/learn/50033/
Riconoscimento facciale utilizzando le funzionalità LBP.
Database dei volti AT&T:\ Il catalogo contiene una raccolta di volti scattati tra l'aprile 1992 e l'aprile 1994 presso gli Olivetti Research Laboratories di Cambridge, in Inghilterra.
Ci sono 10 immagini diverse di 40 soggetti diversi.Per alcuni soggetti, le immagini sono state scattate in momenti diversi con illuminazione, espressione facciale (occhi aperti/chiusi, sorridente/non sorridente) e dettagli facciali (occhiali/senza occhiali) leggermente diversi.Tutte le immagini sono scattate su uno sfondo scuro e uniforme, con il soggetto in posizione frontale in alto a destra (con tolleranza per qualche movimento laterale).
Questi file sono in formato PGM e possono essere facilmente visualizzati utilizzando il programma "xv".Ogni immagine è 92x112, scala di grigi a 8 bit.Le immagini sono divise in 40 directory (una per ogni argomento) denominate: sX
Dove X rappresenta il numero dell'argomento (tra 1 e 40).In ogni directory ci sono 10 immagini diverse per il tema selezionato, denominate: Y.pgm
dove Y rappresenta le immagini di un argomento specifico (tra 1 e 10).
Quando si utilizzano queste immagini, si prega di dare credito ai Laboratori di Ricerca Olivetti.\ Un riferimento utile è un lavoro di riconoscimento facciale utilizzando alcune di queste immagini:
F. Samaria e A. Harter\ "Parametrizzazione di modelli stocastici per il riconoscimento facciale"\ Il 2° simposio sulle applicazioni di visione artificiale dell'IEEE\ ------------------Dicembre 1994, Sarasota (Florida).
# 用LBP特征进行人脸识别。
# 见 Timo Ahonen's "Face Recognition with Local Binary Patterns".
#
# 运行示例之前:
# 1) 下载AT&T faces数据库http://www.cl.cam.ac.uk/Research/DTG/attarchive/pub/data/att_faces.zip
# 2) 提取并复制orl_faces目录到SD卡根目录。
#
# NOTE: This is just a PoC implementation of the paper mentioned above, it does Not work well in real life conditions.
# 注意:这只是上面提到的论文的一个PoC实现,在现实生活中并不适用。
import sensor, time, image
SUB = "s2"
NUM_SUBJECTS = 5
NUM_SUBJECTS_IMGS = 10
img = image.Image("orl_faces/%s/1.pgm"%(SUB))
d0 = img.find_lbp((0, 0, img.width(), img.height()))
img = None
print("")
for s in range(1, NUM_SUBJECTS+1):
dist = 0
for i in range(2, NUM_SUBJECTS_IMGS+1):
img = image.Image("orl_faces/s%d/%d.pgm"%(s, i))
d1 = img.find_lbp((0, 0, img.width(), img.height()))
dist += image.match_descriptor(d0, d1)
print("Average dist for subject %d: %d"%(s, dist/NUM_SUBJECTS_IMGS))
Spiegazione ufficiale della funzione del documento cinese di Singtown Technology OpenMV: