vault backup: 2024-12-26 04:24:44

This commit is contained in:
Marco Realacci 2024-12-26 04:24:44 +01:00
parent 7192d14da1
commit 34d8577615
15 changed files with 697 additions and 146 deletions

View file

@ -29,48 +29,56 @@ Approcci di diversa natura:
>
> white compensation using Luma
RGB is not a preceptually uniform space
- colors close to each other in RGB space may not be perceived as similar
RGB to YCrCb
![[Pasted image 20241023133231.png]]
Darker region may have dominant blue component, light region red.
Algoritmo A:
- variance-based segmentation
- the simplest method is thresholding
- we have an image I with L gray levels
- $n_i$ is the number of pixels with gray level $i$
- $p_i = \frac{n_i}{MxN}$ is the probability of gray level i
- we divide pixel in two classes C0 and C1 by a gray level t
- for each class we can compute mean and variance of gray level![[Pasted image 20241023135127.png]]
- connected components
- skin tone pixels are segmented using local color variance![[Pasted image 20241023135925.png]]
#### Algoritmo A (Hsu):
- per prima cosa viene eseguita una "illumination compensation" per compensare il bilanciamento del bianco. Si prendono il 5% dei pixel più luminosi, e li si considera come bianco (255, 255, 255) trasformando gli altri pixel a sua volta. Questo è cruciale perché la tonalità della pelle dipende dall'illuminazione della scena!
- poi viene convertito lo spazio da RGB a YCbCr
- RGB non è percettivamente uniforme: colori RGB vicini tra loro potrebbero non essere percepiti come simili
![[Pasted image 20241023133231.png]]
(darker region may have dominant blue component, light region red).
- localizzazione della faccia basata sullo skin model (modello della pelle)
- due alternative:
- variance based segmentation
- il metodo più semplice è il thresholding method
- si considera il livello di grigio di ogni pixel, e sulla base della threshold si classificano con in due classi i pixel superiori e inferiori alla th
- La chiave è selezionare la threshold migliore
- può essere fatto con il maximum entropy method, il metodo di Otsu (massima varianza) o il clustering k-means
- Trovare la miglior Otsu method:
- si considera la th che minimizza la within class variance
- connected components
- con un modello di colore della pelle si identificano i pixel che corrispondono appunto a una gamma di colori della pelle. Questo modello quindi banalmente definisce un intervallo di colori tipicamente appartenenti alla pelle
- questi pixel vengono segmentati usando la varianza del colore locale
- si trovano le componenti connesse e si uniscono
- l'area risultante è dove si trova probabilmente la faccia (face candidate)
![[Pasted image 20241023135925.png]]
Eye localization
The algorithm builds two different eye maps (chroma and luma)
- **Chrominance map:** its creation relies on the observation that the region around eyes is characterized by high values of Cb and low values of Cr: $EyeMapC = \frac{1}{3}[(C_B^2)+(C_R^2)+(\frac{C_b}{C_r})]$
- **Luminance map:** eyes usually contain both light and dark zones that can be highlighted by morphological operators (dilation and erosion with hemispheric structuring elements)![[Pasted image 20241023140250.png]]
- Eye localization
- l'algoritmo cerca di localizzare gli occhi definendo due mappe:
- **Chrominance map:** si basa sull'idea che l'area attorno agli occhi ha dei valori alti della componente Cb e bassi della componente Cr: $EyeMapC = \frac{1}{3}[(C_B^2)+(C_R^2)+(\frac{C_b}{C_r})]$
- **Luminance map:** gli occhi contengono sia zone chiare che zone scure. Usando operatori morfologici come dilation e erosion si possono evidenziare.![[Pasted image 20241023140250.png]](nella formula il + indica dilation e il - erosion)
Chroma map is enhanced by histogram equalization
The two maps are combined through AND operator
The resulting map undergoes dilation, masking and normalization to discard the other face regions and brighten eyes
Further operations allow to refine this map.
- chroma map is enhanced by histogram equalization
- le due mappe sono combinate insieme con un operatore AND, risultato:![[Pasted image 20241217025904.png]]
**Dilation**
The dilation operator takes two pieces of data as inputs. The first is the image which is to be dilated. The second is a (usually small) set of coordinate points known as a structuring element (also known as a kernel). It is this structuring element that determines the precise effect of the dilation on the input image.
**Erosion**
The erosion operator takes two pieces of data as inputs. The first is the image which is to be eroded. The second is a (usually small) set of coordinate points known as a structuring element (also known as a kernel). It is this structuring element that determines the precise effect of the erosion on the input image.
- Mouth localization
- Le componenti Cr sono più presenti delle Cb. La risposta a $\frac{Cr}{Cb}$ è bassa, mentre la risposta a $Cr^2$ è alta, come in immagine:![[Pasted image 20241217030157.png]]
![[Pasted image 20241023141948.png]]
- Face contour:
- ora che abbiamo identificato occhi e bocca, l'algoritmo considera tutti i triangoli candidati che si formano tra i due occhi e la bocca. Ogni triangolo viene verificato controllando:
- variazioni della luminanza e media del gradiente dell'orientamento delle aree di occhi e bocca
- geometria e orientamento del triangolo
- presenza di un contorno del viso attorno al triangolo
- viene assegnato uno score ad ogni triangolo e scelto quello con lo score maggiore
The algorithm analyzes all the triangles composed by two candidate eyes and a candidate mouth. Each triangle is verified by checking:
- Luma variations and average of the orientation gradient of the blobs containing eyes and mouth
- Geometry and orientation of the triangle
- Presence of a face contour around the triangle
#### Algoritmo B
#### Algoritmo B (Viola - Jones)
Viola Jones rappresenta una vera e propria innovazione per quanta riguarda la localizzazione di una faccia all'interno di unimmagine. Essendo lalgoritmo basato su machine learning, il training di questo è avvenuto utilizzando un dataset personalizzato nel quale vengono etichettate immagini come positive nel caso in cui ci sia una faccia e come negative nel caso in cui non ve ne sia alcuna.
L'agoritmo image based usa un classifier inizialmente trainato con varie istanze delle classi da identificare (esempi positivi) e classi di immagini che non contengono nessun oggetto della classe (esempi negativi).
@ -81,7 +89,7 @@ L'algoritmo fa uso di:
- **Ada-Boosting** per la selezione di feature: vengono creati diversi weak classifier, uno per feature, e tramite adaptive boosting riusciamo a creare uno strong classifier composto da un subset di weak-classifier.![[Pasted image 20241023144725.png]]
AdaBoost è una tecnica di addestramento che ha lo scopo di apprendere la sequenza ottimale di classificatori deboli e i corrispondenti pesi.
Richiede un insieme di pattern di training {(x1,y1),(x2,y2),...,(xN,yN)}, dove yi ∈{-1,+1} è letichetta della classe associata al pattern. Inoltre durante lapprendimento è calcolata e aggiornata una distribuzione di pesi [w1,w2,...,wN] associati ai pattern di training, wi è associato al pattern (xi ,yi).
Richiede un insieme di pattern di training {(x1,y1),(x2,y2),...,(xN,yN)}, dove yi ∈{-1,+1} è letichetta della classe associata al pattern. Inoltre durante lapprendimento è calcolata e aggiornata una distribuzione di pesi [w1,w2,...,wN] associati ai pattern di training, wi è associato al pattern (xi, yi).
Dopo literazione m, è assegnato ai pattern più difficili da classificare un peso w1(m) superiore, cosicché alla successiva iterazione m+1 tali pattern riceveranno unattenzione maggiore.
un weak classifier è spesso un classifier lineare. Può essere comparato a una linea dritta.