Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Interazione e Multimedia, 9 CFU => Topic started by: Tulkas on 01-03-2012, 15:02:32



Title: chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 15:02:32
non riesco a trovare la "H"!!! la mia matrice è completamente nera qualcuno ha per caso lo stesso problema? e sa come risolverlo?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 16:06:16
qualcuno sa se esiste una funzione di mathlab che presi due punti traccia un segmento che li congiunge???perchè proprio non so come fare!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 16:46:34
qualcuno sa se esiste una funzione di mathlab che presi due punti traccia un segmento che li congiunge???perchè proprio non so come fare!
siamo due


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 16:47:58
qualcuno sa se esiste una funzione di mathlab che presi due punti traccia un segmento che li congiunge???perchè proprio non so come fare!

la funzione è LINE(X,Y). X e Y sono 2 vettori.

Code:
line([30 40],[100 200]);

http://www.mathworks.it/help/techdoc/ref/line.html (http://www.mathworks.it/help/techdoc/ref/line.html)

non riesco a trovare la "H"!!! la mia matrice è completamente nera qualcuno ha per caso lo stesso problema? e sa come risolverlo?
ho il tuo stesso problema! solo che la vedo tutta fucsia   :-)|


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 16:50:57
sono ancora bloccato a trovare la H da stamattina anche io


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 16:55:26
qualcuno sa se esiste una funzione di mathlab che presi due punti traccia un segmento che li congiunge???perchè proprio non so come fare!

la funzione è LINE(X,Y). X e Y sono 2 vettori.

Code:
line([30 40],[100 200]);

http://www.mathworks.it/help/techdoc/ref/line.html (http://www.mathworks.it/help/techdoc/ref/line.html)

non riesco a trovare la "H"!!! la mia matrice è completamente nera qualcuno ha per caso lo stesso problema? e sa come risolverlo?
ho il tuo stesso problema! solo che la vedo tutta fucsia   :-)|
ok ma il click del mouse si fa tramite interfaccia grafica?


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 17:02:48
si gestisce un evento sull'interfaccia!

Quote
set(f,'WindowButtonDownFcn',@funzione_callback)

dove f è il tag dell'interfaccia

Quote
function funzione_callback(hObject,~)
pos=get(hObject,'CurrentPoint');
x=num2str(pos(1));
y=num2str(pos(2));

quando fai click sull'interfaccia parte l'evento che richiama "funzione_callback" (tipo i listener di java)
mentre hObject sono i "dati" che ritorna l'evento.

Qualcosa di simile c'è scritta nella doc di matlab.


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:13:06
io veramente uso la funzione "ginput"! questa funzione di mathlab mi restituisce le coordinate del punto in cui ho cliccato! quando esegui il programma esso di mostra un puntatore!

[y1,x1]=ginput(1);
la x e la y sono invertite rispetto all'ordine corretto di scriverle perchè la funzione le restituisce invertite.

cmq ho chiamato quattro volte questa funzione cambiando di volta in volta il nome delle variabili a cui assegno il risultato!!


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 17:15:20
grazie per la dritta!
come ogni volta mi complico la vita inutilmente.  :[Emoticon] Asd:


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:25:55
figurati! cmq io per ora non ho risolto il problema della H e sto cercando di continuare lo stesso!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 17:30:46
io veramente uso la funzione "ginput"! questa funzione di mathlab mi restituisce le coordinate del punto in cui ho cliccato! quando esegui il programma esso di mostra un puntatore!

[y1,x1]=ginput(1);
la x e la y sono invertite rispetto all'ordine corretto di scriverle perchè la funzione le restituisce invertite.

cmq ho chiamato quattro volte questa funzione cambiando di volta in volta il nome delle variabili a cui assegno il risultato!!
tulkas potresti spiegarmi meglio questa funzione? dove la collochi?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:35:22
la chiamata la colloco dentro la funzione laccio poligonale!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 17:36:45
la chiamata la colloco dentro la funzione laccio poligonale!
perciò ne scrivi più di una? dato che i click sono diversi..


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:38:36
si per l'esattezza quattro!
[y1,x1]=ginput(1);
[y2,x2]=ginput(1);
[y3,x3]=ginput(1);
[y4,x4]=ginput(1);


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 17:40:05
si per l'esattezza quattro!
[y1,x1]=ginput(1);
[y2,x2]=ginput(1);
[y3,x3]=ginput(1);
[y4,x4]=ginput(1);
a questo aggiungi 4 LINE se non sto sbagliando..


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:46:40
cmq non riesco ad usare la funzione "line"!!! qualcuno c'è riuscito? penso che i parametri che gli passo siano sbagliati!


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 17:47:58
teoricamente si! ma non riesco ad usare la funzione line!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 17:48:52
non sono i vari x e y delle funzioni
[y1,x1]=ginput(1);
[y2,x2]=ginput(1);
[y3,x3]=ginput(1);
[y4,x4]=ginput(1);

?


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 17:51:45
form,line(X,Y);

dove form è il tag dell'oggetto dove vuoi disegnare.

esempio appena provato e funzionante

Quote
[x1,y1]=ginput(1);
[x2,y2]=ginput(2);
form,line([x1 x2],[y1 y2]);


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 17:55:34
form,line(X,Y);

dove form è il tag dell'oggetto dove vuoi disegnare.

esempio appena provato e funzionante

Quote
[x1,y1]=ginput(1);
[x2,y2]=ginput(2);
form,line([x1 x2],[y1 y2]);
ho appena provato e l'ho lasciato così come hai scritto e nell'immagine mi spunta un croce che però se clicco non fa nulla..


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 18:02:52
mi sembra che di default "form" è "figure1".

quindi prova con figure1,line([x1 x2],[y1 y2]); e vedi se ti disegna la linea.


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 18:05:29
mi sembra che di default "form" è "figure1".

quindi prova con figure1,line([x1 x2],[y1 y2]); e vedi se ti disegna la linea.
nel mio caso è Prova1 e non va.. da te il segmento è ben visibile e rimane tracciato?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:05:41
si sono i vari x e y!!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 18:14:34
[x1,y1]=ginput(1);
[x2,y2]=ginput(2);
figure1,line([x1 x2],[y1 y2]);

messo sotto la funzione laccio poligonale.. niente vedo la croce clicco ma non si vede il segmento


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:16:38
anche a me non mi funziona "line"!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 18:21:13
anche a me non mi funziona "line"!
non ti segna il segmento?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:25:00
facendo varie prove, il risultato migliore che sono riuscito ad ottenere una linea obliqua che non ha nulla a che vedere con i punti in cui io ho cliccato!


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 18:27:30
io ho fatto così

Code:
[x1,y1]=ginput(1);
[x2,y2]=ginput(1);
[x3,y3]=ginput(1);
[x4,y4]=ginput(1);
form,line([x1 x2 x3 x4 x1],[y1 y2 y3 y4 y1]);


prendo i 4 punti, appena clicco l'ultima volta mi disegna il poligono.


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:35:22
grazie mille ci sono riuscito! ho cambiato una piccola cosa e mi funziona!


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 18:39:32
grazie mille ci sono riuscito! ho cambiato una piccola cosa e mi funziona!
cosa hai cambiato? perche a me non funziona


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:44:21
B=line([x1 x2 x3 x4 x1], [y1 y2 y3 y4 y1]);


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 18:48:27
e B a cosa sta?


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 18:50:14
L’output B è una nuova immagine in cui alcuni pixel soddisfano la legge hanno valore 255 e gli altri che non soddisfano la legge hanno valore 0. In sostanza in questa matrice si vedrà UNA sola macchia bianca. Se ci riuscite, tracciate sull’immagine una linea tratteggiata lungo tutto il poligono selezionato.

Scusate ma di quale legge parla?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 18:55:15
la legge penso che sia proprio il fatto di appartenere al poligono oppure no! Sostanzialmente il poligono sarà tutto bianco mentre l'esterno nero


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 18:58:50
la legge penso che sia proprio il fatto di appartenere al poligono oppure no! Sostanzialmente il poligono sarà tutto bianco mentre l'esterno nero
tulkas pvt


Title: Re:chiarimenti progetto 01032012
Post by: TheRock88 on 01-03-2012, 19:00:42
ciao a tutti...ma secondo voi la funzione fill si può usare per colorare di bianco il poligono??


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 19:08:02
ciao a tutti...ma secondo voi la funzione fill si può usare per colorare di bianco il poligono??
non penso, devi fare la binarizzazione


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 19:15:07
ma la binarizzazione non è un altra cosa? se non sbaglio porta a "0" i valori inferiori ad una data soglia e a "255" i valori superiori alla soglia


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 19:16:43
ma la binarizzazione non è un altra cosa? se non sbaglio porta a "0" i valori inferiori ad una data soglia e a "255" i valori superiori alla soglia
si si tranquillo ho sbagliato.. comunque come si fa a prendere i pixel dentro il poligono e quelli fuori?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 19:18:13
e questa funzione Fill come si usa?


Title: Re:chiarimenti progetto 01032012
Post by: TheRock88 on 01-03-2012, 19:25:04
la sto testando...ma leggendo il commento del prof deduco che non si possa usare...penso che bisogna fare un ciclo ma non riesco a capire come fare per trovare i pixel interni al poligono


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 19:26:08
la sto testando...ma leggendo il commento del prof deduco che non si possa usare...penso che bisogna fare un ciclo ma non riesco a capire come fare per trovare i pixel interni al poligono
idem


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 19:30:54
provata, ma disegna un poligono su un grafico.

la sto testando...ma leggendo il commento del prof deduco che non si possa usare...penso che bisogna fare un ciclo ma non riesco a capire come fare per trovare i pixel interni al poligono
idem

 .quoto


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 19:36:05
penso che è la funzione che stiamo cercando  .rido
http://www.mathworks.it/help/techdoc/ref/inpolygon.html (http://www.mathworks.it/help/techdoc/ref/inpolygon.html)


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 19:42:37
penso che è la funzione che stiamo cercando  .rido
http://www.mathworks.it/help/techdoc/ref/inpolygon.html (http://www.mathworks.it/help/techdoc/ref/inpolygon.html)
IN = inpolygon(X,Y,xv,yv) nel nostro caso che sostituiamo?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 20:04:21
già che parametri passiamo?


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 20:04:42
IN = inpolygon(X,Y,xv,yv)
non capisco cosa sostituire all'interno della parentesi..alla fine sono questi i nostri punti
[x1,y1]=ginput(1);
[x2,y2]=ginput(1);
[x3,y3]=ginput(1);
[x4,y4]=ginput(1);


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 20:11:54
Sto facendo qualche prova.

in xv e yv vanno le coordinate del poligono sottoforma di vettore.
in X e Y vanno tutte le coordinate dell'immagine.

quindi IN(x,y)=1 il punto x e y fa parte del poligono.

Code:
X=[x1 x2 x3 x4];
Y=[y1 y2 y3 y4];

IN= inplygon([1:M],[1:N],X,Y);


[1:M] e [1:N] genera un vettore che contiene i numeri da 1 a M.


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 20:15:12
Sto facendo qualche prova.

in xv e yv vanno le coordinate del poligono sottoforma di vettore.
in X e Y vanno tutte le coordinate dell'immagine.

quindi IN(x,y)=1 il punto x e y fa parte del poligono.

Code:
X=[x1 x2 x3 x4];
Y=[y1 y2 y3 y4];

IN= inplygon([1:M],[1:N],X,Y);


[1:M] e [1:N] genera un vettore che contiene i numeri da 1 a M.

non ho capito bene quest'ultima parte..


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 20:16:47
è una funzione standard di MatLab.

scrivendo M=[1:5] lui ti genererà una array con [1 2 3 4 5]. senza andarla scrivere a mano.


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 20:19:35
è una funzione standard di MatLab.

scrivendo M=[1:5] lui ti genererà una array con [1 2 3 4 5]. senza andarla scrivere a mano.
ma dopo che scrivi questo
X=[x1 x2 x3 x4];
Y=[y1 y2 y3 y4];

IN= inplygon([1:M],[1:N],X,Y);

IN è una matrice delle stesse dimensioni della nostra immagine, solo che ha i valori 1 o 0 a seconda che il punto si trova fuori o dentro il poligono?


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 20:26:59
si.

mentre la usavo ho notato che:
se la vostra immagine è 800x400 lui ti dirà "Inputs mus have the same size."
per evitare l'errore basta creare la matrice 800x800.

Code:
[M,N,S]=size(MATRICE);
val=max(M,N);

IN= inplygon([1:val],[1:val],X,Y);


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 20:32:06
a me ha dato Undefined function 'inplygon' for input arguments of type 'double'.


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 01-03-2012, 20:35:56
ops errore mio a trascrivere il nome della funzione. è inpolygon.

 :pray


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 20:42:29
a me non funziona! il valore di IN come lo visualizzi poi?


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 20:47:22
per fare diventare quello dentro il poligono bianco cambiate i pixel corrispondenti a 255 no?


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 22:21:14
ragazzi io ho fatto cosi

Code:
[M,N,T]=size(A);
val = max(M,N)

X=[x1 x2 x3 x4 x5];
Y=[y1 y2 y3 y4 y5];


A =  inpolygon([1:M],[1:N],X,Y);

ma mi torna una matrice di 1 riga e 256 colonne,
l'immaggine di input è Lena 256x256x3


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 22:25:02
ragazzi io ho fatto cosi

Code:
[M,N,T]=size(A);
val = max(M,N)

X=[x1 x2 x3 x4 x5];
Y=[y1 y2 y3 y4 y5];


A =  inpolygon([1:M],[1:N],X,Y);

ma mi torna una matrice di 1 riga e 256 colonne,
l'immaggine di input è Lena 256x256x3

e infatti secondo me è sbagliata l'impostazione di inpolygon dentro le parentesi.. non so come fare


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 23:06:37
ragazzi io ho fatto cosi

Code:
[M,N,T]=size(A);
val = max(M,N)

X=[x1 x2 x3 x4 x5];
Y=[y1 y2 y3 y4 y5];


A =  inpolygon([1:M],[1:N],X,Y);

ma mi torna una matrice di 1 riga e 256 colonne,
l'immaggine di input è Lena 256x256x3

e infatti secondo me è sbagliata l'impostazione di inpolygon dentro le parentesi.. non so come fare

per stasera mi sa che mi arrendo....


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 01-03-2012, 23:07:44
ragazzi io ho fatto cosi

Code:
[M,N,T]=size(A);
val = max(M,N)

X=[x1 x2 x3 x4 x5];
Y=[y1 y2 y3 y4 y5];


A =  inpolygon([1:M],[1:N],X,Y);

ma mi torna una matrice di 1 riga e 256 colonne,
l'immaggine di input è Lena 256x256x3

e infatti secondo me è sbagliata l'impostazione di inpolygon dentro le parentesi.. non so come fare

per stasera mi sa che mi arrendo....
in molti sono già arresi oggi, se ne parla domani .poverinoi


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 01-03-2012, 23:20:33
come primo giorno ho fatto solo i primi 2 punti a metà  :[Emoticon] Asd: :-)|
speriamo bene per domani...


Title: Re:chiarimenti progetto 01032012
Post by: TheRock88 on 01-03-2012, 23:22:02
sapete come si fa ad abilitare le voci man mano che si è completata l'operazione precedente?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 01-03-2012, 23:25:49
equivoco
cmq a me da il tuo stesso risultato ma anche io per oggi mi arrendo!


Title: Re:chiarimenti progetto 01032012
Post by: gunlok on 02-03-2012, 00:20:11
ciao ragazzi... sulle slide non è presente come passare da RGB e HSV... cercando sul web ho trovato questo:
Si determinano prima i valori di S e V
M=max(R,G,B)         m=min(R,G,B)

V= M            S= (M-m)/ M   ;   S=0 se M=0

adesso bisogna calcolare H:
if S==0, H è indefinita
     else if R==M
               H=(G-B)/(M-m)
     else if G==M
               H=2.0+(B-R)/(M-m)
      else
              H=4.0+(R-G)/(M-m)
endif
   
H=H*60
 if H<0
    H=H+360
endif


è giusto questo procedimento??? e quando S=0 e quindi H è indefinita che si fa??

Può essere che la visualizzazione della matrice H è tutta nera con alcune macchie bianche e altre grigie???


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 08:44:16
ciao ragazzi... sulle slide non è presente come passare da RGB e HSV... cercando sul web ho trovato questo:
Si determinano prima i valori di S e V
M=max(R,G,B)         m=min(R,G,B)

V= M            S= (M-m)/ M   ;   S=0 se M=0

adesso bisogna calcolare H:
if S==0, H è indefinita
     else if R==M
               H=(G-B)/(M-m)
     else if G==M
               H=2.0+(B-R)/(M-m)
      else
              H=4.0+(R-G)/(M-m)
endif
   
H=H*60
 if H<0
    H=H+360
endif


è giusto questo procedimento??? e quando S=0 e quindi H è indefinita che si fa??

Può essere che la visualizzazione della matrice H è tutta nera con alcune macchie bianche e altre grigie???

non so com'è la matrice H, ma matlab ha la funzione rgb2hsv che fa tutto da sola, quindi puoi conforontare il tuo risultato, con quello che esce da matlab, io ho trovato una formula un po diversa dalla tua, solo che dovrebbe uscire un immagine sul violetto invece mi esce sul verde...


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 09:23:38
va be dai passo al punto precedente e poi vedo...

3. “laccio magnetico” che partendo dal risultato del punto precedente, :-)|



Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 09:34:52
il secondo punto qualcuno ha capito come fare?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 02-03-2012, 10:41:54
ragazzi qualcuno è riuscito a colorare il poligono? io proprio non riesco!


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 10:48:48
edit


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 10:50:59
credo che siamo un paio, ad essere bloccati in questo punto...


Title: Re:chiarimenti progetto 01032012
Post by: TheRock88 on 02-03-2012, 11:30:29
mi è venuta un'idea per capire quali punti possano trovarsi dentro il poligono e quali fuori...si può considerare ogni riga della matrice come una direzione...se ad ogni pixel si fa percorrere (virtualmente) in un senso la direzione della riga in cui si trova, contando il numero di volte che esso interseca i lati del poligono possiamo capire se è dentro o fuori...

num di intersezioni pari o zero = punto esterno
num di intersezioni dispari = punto interno

il problema è capire come trovare le coordinate dei lati del poligono, e poi c'è anche il problema dell'intersezione con i vertici


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 11:35:55
io ho fatto qualcosa di piu semplice e che si avvicina al risultato.

http://img521.imageshack.us/img521/1994/maxhn.jpg (http://img521.imageshack.us/img521/1994/maxhn.jpg)

e lo fa questo pezzo di codice

Code:
matrice_bw=zeros(M,N,1);
    max_x=max(X);
    max_y=max(Y);
    min_x=min(X);
    min_y=min(Y);
   
    for k=1:M
        for l=1:N
            if l>min_x && l<max_x
                if k>min_y && k<max_y
                    matrice_bw(k,l,1)=255;
                end
            else
                matrice_bw(k,l,1)=0;
            end
        end
    end


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 11:38:30
io ho fatto qualcosa di piu semplice e che si avvicina al risultato.

http://img521.imageshack.us/img521/1994/maxhn.jpg (http://img521.imageshack.us/img521/1994/maxhn.jpg)
viene un rettangolo però.. come mai?


Title: Re:chiarimenti progetto 01032012
Post by: diprob88 on 02-03-2012, 11:50:22
ragazzi con queste poche righe di codice sono riuscito a crearmio il poligono, spero possano esservi di aiuto

Code:
I=rgb2gray(imread('immagine.jpg'));
J = roifill(I);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J);


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 11:53:09
io ho fatto qualcosa di piu semplice e che si avvicina al risultato.

http://img521.imageshack.us/img521/1994/maxhn.jpg (http://img521.imageshack.us/img521/1994/maxhn.jpg)

e lo fa questo pezzo di codice

Code:
matrice_bw=zeros(M,N,1);
    max_x=max(X);
    max_y=max(Y);
    min_x=min(X);
    min_y=min(Y);
   
    for k=1:M
        for l=1:N
            if l>min_x && l<max_x
                if k>min_y && k<max_y
                    matrice_bw(k,l,1)=255;
                end
            else
                matrice_bw(k,l,1)=0;
            end
        end
    end
scusami ma X e Y sono per caso
X=[x1 x2 x3 x4];
Y=[y1 y2 y3 y4];

inoltre M e n li prendi da
[M,N,t]=size(I); ?



Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 11:56:21
si per entrambe le domande :)


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 11:57:43
si per entrambe le domande :)
ok ma per visualizzare il risultato? dopo il codice che hai scritto tu bisogna aggiungere qualcosa?


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 12:00:31
Code:
figure,imshow(matrice_bw);

apre una finestra a parte con il risultato.


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 12:04:11
Code:
figure,imshow(matrice_bw);

apre una finestra a parte con il risultato.
Code:
[x1,y1]=ginput(1);
[x2,y2]=ginput(1);
Prova1,line([x1 x2 x1],[y1 y2 y1]);
[x3,y3]=ginput(1);
Prova1,line([x2 x3 x2],[y2 y3 y2]);
[x4,y4]=ginput(1);
Prova1,line([x3 x4 x3],[y3 y4 y3]);
Prova1,line([x4 x1],[y4 y1]);
X=[x1 x2 x3 x4];
Y=[y1 y2 y3 y4];
[M,N,t]=size(I);

matrice_bw=zeros(M,N,1);
    max_x=max(X);
    max_y=max(Y);
    min_x=min(X);
    min_y=min(Y);
   
    for k=1:M
        for l=1:N
            if l>min_x && l<max_x
                if k>min_y && k<max_y
                    matrice_bw(k,l,1)=255;
                end
            else
                matrice_bw(k,l,1)=0;
            end
        end
    end
Prova1,imshow(matrice_bw);

Mi scompare l'iimagine eppure ho fatto come dici tu


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 12:07:20
prova con
Code:
figure,imshow(matrice_bw);


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 02-03-2012, 12:09:07
prova con
Code:
figure,imshow(matrice_bw);

così mi da proprio errore..il codice è uguale al tuo poi?


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 12:12:01
si. che errore ti da?


Title: Re:chiarimenti progetto 01032012
Post by: Tulkas on 02-03-2012, 12:15:40
ragazzi con queste poche righe di codice sono riuscito a crearmio il poligono, spero possano esservi di aiuto

Code:
I=rgb2gray(imread('immagine.jpg'));
J = roifill(I);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J);

scusa ma poi come lo gestisci il poligono?


Title: Re:chiarimenti progetto 01032012
Post by: diprob88 on 02-03-2012, 13:42:13
ragazzi con queste poche righe di codice sono riuscito a crearmio il poligono, spero possano esservi di aiuto

Code:
I=rgb2gray(imread('immagine.jpg'));
J = roifill(I);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J);

scusa ma poi come lo gestisci il poligono?

QUI C'è LA DOCUMENTAZIONE DI MATLAB
http://www.mathworks.it/help/toolbox/images/ref/roifill.html

allora bisogna usare
[J, BW] = roifill(p);

in cui BW è la matrice binaria in cui c'è valore 0 all'esterno del poligono che tracci e valore 1 all'interno del poligono
spero che possa esserti di aiuto, io l'ho risolta cosi perchè sto impazzendo :nono


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 18:21:55
“traforma” che in tutti i pixel selezionati al punto precedente (quelli che hanno 255 in B3), si
sostituisca il valore H con (356‐H). Se il risultato fosse negativo, si consideri il suo opposto.

cosa si intende per opposto?


Title: Re:chiarimenti progetto 01032012
Post by: gunlok on 02-03-2012, 18:30:03
Credo che sia semplice questo punto..
se 356-H è negativo basta semplicemente fare H-356 e ottieni il suo opposto..

ma mi potresti postare la tua formula per passare ad hsv??
non sono riuscito a provare con la funzione di matlab se la mia è giusta..
ho provato a fare questo:
I=rgb2hsv(I);
F=I(:,:,1);

se faccio l'imshow di F mi dovrebbe restituire la matrice H in teoria ma non è cosi... tutto nero e basta!!


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 02-03-2012, 19:38:21
l'ho presa da questo sito

http://sivp.sourceforge.net/func-list-0.5.0/rgb2hsv.htm

ma sinceramente non so se è quello che vuole il professore


Title: Re:chiarimenti progetto 01032012
Post by: savvo on 02-03-2012, 20:04:09
“traforma” che in tutti i pixel selezionati al punto precedente (quelli che hanno 255 in B3), si
sostituisca il valore H con (356‐H). Se il risultato fosse negativo, si consideri il suo opposto.

cosa si intende per opposto?

guarda se H è minore di 0. A quel punto moltiplica per -1 e il valore di H ritorna positivo.

Credo che sia semplice questo punto..
se 356-H è negativo basta semplicemente fare H-356 e ottieni il suo opposto..

ma mi potresti postare la tua formula per passare ad hsv??
non sono riuscito a provare con la funzione di matlab se la mia è giusta..
ho provato a fare questo:
I=rgb2hsv(I);
F=I(:,:,1);

se faccio l'imshow di F mi dovrebbe restituire la matrice H in teoria ma non è cosi... tutto nero e basta!!

non penso che il prof vuole che si usano questi metodi già fatti.
comunque per funzionare basta che fai

I=rgb2hsv(I);

il F=I(:,:,1); genera una matrice di dimensione 1 riempita con 0. per questo vedi sempre nero.


Title: Re:chiarimenti progetto 01032012
Post by: gunlok on 03-03-2012, 00:25:48
Certo il calcolo me lo devo fare da me...
l'unica cosa che volevo sapere se dalla funzione rgb2hsv si potevano estrapolare le diverse matrici (H,S e V) per poterle confrontare con le mie matrici, visto che ho trovato diverse formule per passare da rgb a hsv e non so quale di tutte sia quella corretta o almeno quella che il professore vuole che applichiamo....


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 03-03-2012, 10:51:03
ma a voi da HSV a RGB ritorna i colori giusti dell'immagine originale?


Title: Re:chiarimenti progetto 01032012
Post by: jos90 on 03-03-2012, 11:05:04
No, almeno a me no, ritornano altri colori, si vede la differenza tra il cambio dei due spazi di colore ma non mi ritorna l'RGB originario!


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 03-03-2012, 11:07:36
ma a voi da HSV a RGB ritorna i colori giusti dell'immagine originale?
no uguale no


Title: Re:chiarimenti progetto 01032012
Post by: equivoco on 03-03-2012, 11:10:16
neanche a me...


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 03-03-2012, 11:28:54
sará cosí allora..


Title: Re:chiarimenti progetto 01032012
Post by: Betacentury on 03-03-2012, 16:04:16
intendi prima o dopo la trasformazione? (la funzione trasforma)
la funzione trasforma opera proprio sulla matrice dei toni (lo spazio HSV se ricordi è appunto composto da toni, saturazioni e valori)
il passaggio rgb -> hsv -> rgb dovrebbe darti la stessa immagine


Title: Re:chiarimenti progetto 01032012
Post by: milos224 on 03-03-2012, 16:20:41
intendi prima o dopo la trasformazione? (la funzione trasforma)
la funzione trasforma opera proprio sulla matrice dei toni (lo spazio HSV se ricordi è appunto composto da toni, saturazioni e valori)
il passaggio rgb -> hsv -> rgb dovrebbe darti la stessa immagine
penso si riferisse dopo il punto 5.. a me non viene la stessa immagine come forse ad altri