vault backup: 2024-12-26 04:24:44
This commit is contained in:
parent
7192d14da1
commit
34d8577615
15 changed files with 697 additions and 146 deletions
|
@ -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 un’immagine. Essendo l’algoritmo 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} è l’etichetta della classe associata al pattern. Inoltre durante l’apprendimento è 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} è l’etichetta della classe associata al pattern. Inoltre durante l’apprendimento è calcolata e aggiornata una distribuzione di pesi [w1,w2,...,wN] associati ai pattern di training, wi è associato al pattern (xi, yi).
|
||||
Dopo l’iterazione m, è assegnato ai pattern più difficili da classificare un peso w1(m) superiore, cosicché alla successiva iterazione m+1 tali pattern riceveranno un’attenzione maggiore.
|
||||
|
||||
un weak classifier è spesso un classifier lineare. Può essere comparato a una linea dritta.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue