Newsgroup: it.istruzione.universita.ingegneria
Titolo: Clustering di dati (?)

Problema ingegneristico-matematico-ricercaoperativo
lo stato delle cose: ho 40 colori assegnati nel formato esadecimale RGB (ad
esempio 6699FF) che andranno a costituire il colore di sfondo di alcune
tabelle HTML. Il testo contenuto in tali tabelle, normalmente nero, deve in
alcuni casi essere reso bianco per via del colore di fondo scuro che ne
impedirebbe la visualizzazione. In pratica io so quali tra i quaranta colori
in esame richiedono il testo bianco, ma quello che mi manca e' una routine
automatica che mi dica, dato un colore qualsiasi, se necessita del testo
bianco o meno.
lo stato dell'arte: una funzione booleana che dato in pasto il colore nel
formato RGB mi dica se e' necessario usare il testo bianco o meno
la cosa piu' semplice a cui ho pensato per risolvere il problema e' di
considerare i quaranta colori come punti di uno spazio a tre dimensioni
(rosso, verde e blu) aventi come coordinata l'intensita' di colore (ad
esempio, il colore 6699FF corrisponderebbe al punto [102,153,255]), e
separandoli in due famiglie (testo nero e testo bianco), sperare che si
possano separare tramite un piano. Se tale piano esiste, risolve il mio
problema perche' la sua equazione mi fornisce il criterio per valutare i
colori.
a questo punto mi chiedevo se esiste una teoria (matematica o altro) che
formalizzi questa situazione (forse una tecnica di clustering?) e permetta,
assegnati i dati, di dire: si', esiste un piano che li separa e ha equazione
bla bla... oppure una soluzione alternativa, ogni suggerimento e' ben
accetto!
grazie
--
artemis.alpeia
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Per avere un' uscita booleana data la funzione di appartenenza che ti da un
numero reale puoi fare un'operazione detta alpha-cut (in pratica fissi una
soglia alpha e se il valore reale che ottieni è >= alpha ottieni 1 in
uscita, altrimenti 0).
Spero di averti dato qualche suggerimento.
E' un bel problema comunque ti consiglio di muoverti nel mondo del
clustering o della logica fuzzy per cercare di risolverlo.
Quello che dici della retta che separi i colori lo potresti ottenre anche
con una rete neurale ma non vorrei complicare troppo le cose...
Sini Andrea

La soluzione proposta da Andrea Sini è sicuramente interessante e non troppo
distante dalla mia .
La sola differenza dalla mia è che finora non è stato preso in
considerazione chi guarda l'immagine.
L'occhio umano non distingue oltre 256 toni di grigio e di conseguenza i
differenti livelli di luminosità.
Partendo dallo spazio RGB 3D hai già una clusterizzazione dei dati: in
pratica  determini la cubatura della mappa RGB secondo un criterio
predeterminato (uniforme, minima varianza, ecc).
Ogni voxel ottenuto dalla cubatura viene compresso in un'unica tonalità(ad
es. colore medio).
Hai cosi i tuoi 40 toni di colore.
Quello che ora ti interessa è considerare come definire il contrasto:
detta Ia l'intensità dell' area di interesse e Is l'intensità dello sfondo
puoi usare c=deltaI/I=(Ia-Is)/Is  oppure se Is->0  c*=abs(Ia-Is)/(Ia+Is)
[eviti lo zero divide]
Il problema di fondo rimane come determinare l'intensità percepita dall'
osservatore.
La sensibilità al contrasto può variare da soggetto a soggeto ma in linea di
principio segue la curva sottoesposta.
sensibilità al contrasto
|        __________
|       /                    \
|     /                        |
|   /                           |
|
|__________________ frequenza spaziale [cicli / grado]
L'idea di massima è tenere il particolare di interesse nella zona di plateau
in modo che si riesca a distinguerlo senza grossi sforzi. Quando ti
allontani dal video focalizzi automaticamente su frequenze spaziali più
basse, quando ti avvicini su quelle + alte. Questa idea può essere estesa
anche ai colori: associando una frequenza specifica ( un bitset, ecc) a ogni
colore puoi
fare considerazioni analoghe e, fissato lo sfondo, determinare quale sia il
colore contrasti meglio tra quelli presenti nella tua paletta. L'alpha-cut
proposto da Sini ha il medesimo scopo in una paletta a 2 colori.
Ciao, Andrea.

 Sini Andrea
