Newsgroup: it.comp.lang.c
Titolo: terzo tentatitvo cross query!

ciao, mi dispiace di non essermi spiegata neanche la seconda volta.
Effettivamente rileggendo me ne sono resa conto! mi scuso, ma abbiate
un pò di pazienza per questi poveri neofiti..spesso non è solo
questione di linguaggio in sè per sè, quanto piuttosto di capire ed
esprimere correttamente il problema. Essendo questo un pò lungo e
prettamente fisico, volevo evitare di descriverlo interamente, ma
credo che sia necessario (non so sintetizzarlo diveramente).
Vi descrivo tutto il problema, sperando di centrarlo, stavolta:
Realizzare segmentatore di immagini.
1.generare un cerchio pieno random, che simuli l'immagine di un
rivelatore colpito fa fotoni da un oggetto circolare (fatto).
2.generata l'immagine, visualizzarla con ROOT(un software inventato al
cern) tramite un istogramma bidimensionale che permette di vedere in
ogni pixel del rivelatore (elementi della matrice) quanti eventi sono
caduti (quanti numeri sono stati generati con quelle coordinate).
(fatto).
3.introdurre un parametro (energia di soglia) che permette di
assegnare ad ogni pixel il valore 1 (pixel pieno) se il pixel
conteneva un valore soprasoglia, altrimenti 0. (fatto).
4.Ecco il nocciolo della questione:  variando la soglia, ottengo
un'immagine che si discosta sempre più dal cerchio iniziale (sale la
soglia, più pixel vengono settati a 0). Adesso devo ricostruire le
forme ottenute con la soglia. Quindi devo prendere l'immagine pixel
per pixel, fare un controllo a croce, identificare i pixel vicini
pieni (verranno presi per formare l'immagine). Dove vedo un pixel
pieno e uno vuoto dovrò interpolare. Alla fine dovrò ricostruire
l'immagine tenendo conto dei diversi "pesi" dei pixel (pieni o
vuoti).
Purtroppo su quest'ultimo punto non riesco a dirvi qualcosa di più
preciso, ma spero di aver dato l'idea.
grazie mille per la pazienza.
ciao
ps se ho fallito anche stavolta mi arrendo!!

ps se ho fallito anche stavolta mi arrendo!!
L'informatica non fa prigionieri, meglio per te lottare fino alla
fine. ;D

 "sensibili".
E' legato all'Università. Quindi secondo te come potrei procedere??
Grazie!!
Grazie a chiunque vorrà rispondermi.

 preciso, ma spero di aver dato l'idea.
Ho capito molto vagamente quello che intendi fare. Il problema è che tu stai 
già descrivendo la soluzione che intendi utilizzare per risolvere il 
problema, invece che descrivere il problema. Ti faccio un esempio:
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X 0 0 0 0 0 0
0 0 0 X X 0 X 0 0 0 0 0
0 0 X X X 0 0 X 0 0 0 0
0 0 0 0 X X X X X X 0 0
0 X 0 X X X X X X X 0 0
0 0 0 X 0 0 0 X 0 X X 0
0 X X 0 X X 0 0 X X 0 0
0 0 X X 0 X X X 0 X 0 0
0 0 0 X 0 X X 0 X 0 0 0
0 0 0 0 X X X X 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
Che cosa dovrebbe darti in output il sistema (le X sono gli uno)?
Inoltre l'algoritmo che descrivi, non è chiaro. Nel post precedente ti avevo 
fatto alcune domande precise e adesso ti ripeto la domanda: tu dici "Dove 
vedo un pixel pieno e uno vuoto dovrò interpolare." Però non stai guardando 
i pixel a coppie, ma 4 alla volta. Quindi devi chiarire a quali coppie di 
pixel ti riferisci. Poi, perché solo a croce? perché le diagonali no?
Altra domanda: perché fai la soglia? E' una specifica del problema di 
origine? Perché invece che sogliare, se il tuo scopo fosse quello di 
identificare una forma circolare, vale la pena di tenere i valori originali 
invece che buttarli con una soglia.
-- 
Costantino Grana 

 invece che buttarli con una soglia.
Sì, è una specifica del probl d'origine. Al variare della soglia
bisogna indagare come cambia la figura che si ottiene rispetto a
quella circolare iniziale.
E' un pò + chiaro ora??
grazie mille!
ciao

 avere un'informazione sull' immagine in quei punti.
Di nuovo non ci capiamo. Tu parli di 2 punti. Ma quali intendi? Se 
nell'immagine seguente
1 2 3
4 5 6
7 8 9
Voglio elaborare il pixel 5, che cosa confronteresti? E quale regola vuoi 
usare?
Scusa se ti presso con le domande, ma se non si chiarisce l'obiettivo, non 
c'è algoritmo che tenga.
-- 
Costantino Grana 

 c'è algoritmo che tenga.
hai ragione, non ti proeccupare. Il problema è che sto tenatndo di
capire. in realtà sono molto libera su questo punto. Pensavo di
confrontare i pixel a 2 a 2 (sotto consiglio del docente)  perchè
sembra più facile. In questo caso, mettiamo ad es che la soglia è 3.
allora ciò che ottengo è
0 0 1
1 1 1
1 1 1
dunque confrontando
1.il
 primo 0 con lo 0 affianco "non prendo nulla" (non ho fotoni), con
l' 1 sotto dovrò interpolare (gulp!); (si potrebbe anche confrontare
con l' 1 in diagonale);
2.il
 secondo 0 mi dà nulla se visto con lo 0 a sx, un'interpolazione
a dx e sotto;
3.l' 1 sulla prima riga verrà interpolato con lo 0 a sx (stessa
operazione di prima).
4.Quando incontro 1 e 1 vuol dire che quei pixel saranno tenuti perchè
mi danno informazione sull'immagine finale.
Il fatto che ci siano 1 e 0 vuol dire che solo che in quel pixel ci
sono fotoni o no, ad es 1 non vuol dire che in quel pixel c'è un
fotone!
Non so + come spiegarmi (l'oscurità dell' esposizione è dovuta alla
scarsa comprensione!!)
Quindi chiedo un aiutino a voi...ma più di così non so proprio
dirvi!!!!!!!!
scusate e garzie x la pazienza!!!!!!!
sophos

combaciano meglio.
Grazie per le info. Facciamo una chiacchierata sull'argomento,
perche' e' abbastanza complesso, inoltre non so quali specifiche
del progetto si possono modificare.
Dunque, hai un rilevatore di fotoni (una telecamera, per restare
con i piedi per terra), una fonte luminosa e un oggetto
traslucido, cioe' che fa passare solo un po' di luce.
La matrice finale, al termine dell'esposizione, contiene dei
valori, ad esempio compresi fra 0 e 255. I punti che non sono mai
stati colpiti da nessun fotone contengono 0, i punti che hanno
ricevuto il maggior numero di fotoni contengono 255.
Penso che tu faccia qui l'errore di introdurre il valore di
"soglia" e convertire tutto in "bianco e nero", cioe'
rappresentato da valori di 0 e 1. In pratica elimini la
possibilita' di elaborare una variabile di maggiore range.
Quindi, lascia invariata la matrice, ed esegui su di essa una
sfocatura. Questo "trucco" serve ad attenuare le zone che hanno
ricevuto troppi o troppo pochi fotoni, uniformando l'immagine. Di
solito si usa una sfocatura gaussiana (cerca con Google
l'algoritmo).
Ora puoi introdurre il valore di soglia e convertire in 0 e 1.
Quello che devi studiare e' il metodo di confronto tra l'orginale
(un cerchio pieno al 100%) e la tua immagine (un cerchio
bucherellato). Se esegui una semplice sottrazione te la cavi
facilmente, ma non e' detto che questo valore di soglia ti
restituisca un cerchio dello stesso diametro.
La domanda che ti sparo adesso e': come confronti i risultati?
Desideri una minore quantita' di pixel differenti (chiamata in
gergo "rumore")? Desideri la precisione migliore sul contorno (il
diametro nel semplice caso del cerchio)?
Fammi sapere!

 rombo + o - deformato...
Dunque il tuo programma dovrebbe dare come output la stringa "un rombo 
deformato". La vedo dura...
Il tuo problema non è il C e neanche la programmazione. Neanche 
l'algoritmo, direi. Devi capire quale problema devi risolvere.
E.

 E.
beh, non ho detto che l'output deve essere una stringa...ma un'
immagine (per fare ciò uso il software ROOT) che interpreta C/C++.
dunque mi serve capire come impostare l'algoritmo che cerchi i pixel
vicini ecc (se ti interessa leggi gli altri post).
ciao