Sono uno studente di informatica. Sto ultimando la realizzazione di un applicativo sulle immagine e devo calcolare la deviazione standard. Ora tutte le formule che utilizzo sembrano portare ad un risultato errato, ed è per questo che chiedo un consiglio:
di una immagine considero i tre canali (Red,Green,Blue) separatamente. Di ognuno,quindi, ottengo un array di 256 elementi. Ogni elemento rappresenta il numero di occorrenze di quel pixel nell'immagine (es. se ho un immagine di 23200 pixel il valore array[0]=400 mi dice che ci sono 400 occorrenze del pixel con valore 0).
Ora la formala per la deviazione standard dovrebbe essere:
radice quadrata ( somma dei quadrati ( differenze tra quantità per livello e media)))
ora quali valore devo considerare nell'ultima parentesi?? ( differenze tra quantità per livello e media)
ho provato a fare
for (int i=0; i<256; i++)
{
//sommo i quadrati delle differenze tra quantità per livello e media
DeviazionetempR+=Math.pow(((IstoRed[i]*i)-MediaR),2);
DeviazionetempG+=Math.pow(((IstoGreen[i]*i)-MediaG),2);
DeviazionetempB+=Math.pow(((IstoBlue[i]*i)-MediaB),2);
}
e poi calcolare la radice quadrata di Deviazionetemp, ma vengono risultati grandissimi
R: 586.0909853745022
G: 726.5127611796387
B 620.566268917065
il problema potrebbe derivare dal fatto che MediaR è una media del colore... mentre IstoRed[i] è una frequenza...ma in tal come devo procedere...
grazie in anticipo