Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Interazione e Multimedia, 9 CFU => Topic started by: zElOtO on 28-06-2012, 17:45:13



Title: Progetto Matlab (28 giugno 2012)
Post by: zElOtO on 28-06-2012, 17:45:13
Qualcuno ha qualche idea su come implementare il primo punto del progetto (http://www.dmi.unict.it/~fstanco/lezioni_IEM_2007_2008/progetto_280612.pdf)?  :[Emoticon] PC Asd:


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: Hurricane on 28-06-2012, 18:29:10
In particolare?


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: StephCT on 28-06-2012, 22:01:40
come si fa a tenere traccia di una curva su un'immagine in matlab? mi spiego... nel progetto bisogna prendere un'immagine, clickare sull'immagine e tenere il mouse premuto muovendosi. Così facendo su ogni pixel che è passato sotto il puntatore del mouse bisogna sostituire i valori di un pixel sorgente o già conosciuto ( in realtà si può parlare anche di intorni ). in pratica bisogna simulare il timbro clone di photoshop... cioè clicchi, acquisisci e copi ovunque sposti il mouse quando lo tieni premuto.
il problema è che su matlab esiste la gestione di un click singolo, buttonDown, o al max del buttonUp... che espediente si dovrebbe usare?? qualche suggerimento?


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: Hurricane on 28-06-2012, 23:30:46
Controllate l'email   .wink

Non c'è di che!


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: zElOtO on 29-06-2012, 00:16:53
 :pray


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: gunlok on 29-06-2012, 00:26:12
Code:
Controllate l'email   

Non c'è di che!
 

ma ha mandato qualche email il prof??


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: zElOtO on 29-06-2012, 00:36:19
Io no  .leggo


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: Seppho on 29-06-2012, 00:48:18
Mi aggrego anch'io, idee?  :-)|


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: StephCT on 29-06-2012, 07:01:30
Code:
Controllate l'email   

Non c'è di che!
 

ma ha mandato qualche email il prof??

no Hurricane ha mandato una mail a noi ^^

a proposito grazie :-)


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: zElOtO on 29-06-2012, 09:49:01
Si ma per i timbri?!  :boh


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: gunlok on 29-06-2012, 13:54:07
Ragazzi ma sapete per caso qualche funzione o qualche modo per creare un cursore che tenendo premuto il mouse sull'immagine seleziona il valore di righe e colonne fino a quando non si lascia il mouse...


STo impazzendo :-)|, cerco su internet e non trovo nulla di utile... e non mi pare nemmeno che a lezione siano state trattati questi argomenti!


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: StephCT on 29-06-2012, 14:18:55
Code:
%FUNZIONI PER DISEGNARE CURVA
% -----------------------------------------
function click(hObject,eventdata,handles)
global h CURVE
CURVE=[];
set(h,'WindowButtonMotionFcn',@drag);

function drag(hObject,eventdata,handles)
global I h CURVE
pos=get(hObject,'CurrentPoint');
posY=floor(pos(1));
posX=floor(pos(2));
[m,n]=size(I);
if(posX>=0 && posX<=m && posY>=0 && posY<=n)
    CURVE=[CURVE;posX posY];
end
set(h,'WindowButtonUpFcn',@stop);

function stop(hObject,eventdata,handles)
global h
set(h,'WindowButtonMotionFcn',' ');
% -----------------------------------------

questo te l'ho mandato nel mess privato, in ogni caso lo condivido. ho trovato questo espediente.

Code:
set(h,'WindowButtonDownFcn',@click);
si chiama questo nella funzione dove si sta lavorando per fare questo lavoro. partono quindi a catena gli altri per determinare quando viene rilasciato il click. la CURVE è una matrice dove tengo memorizzati tutti i pixel che sono passati sotto il mouse. si consideri che questa operazione le compio nella figure, il cui numero è h. altrimenti se si vuole farle direttamente nella GUI bisogna implementarle direttamente tramite le proprietà della GUI stessa.


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: R3m on 29-06-2012, 15:00:31
Io sono riuscito a fare una copia molto simile al timbro clone di photoshop. Il mio dubbio è, che cosa vuol dire che la zona da clonare deve essere pesata? devo fare una media? o altro?


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: StephCT on 29-06-2012, 15:44:34
io sto rincretinendo troppo. come hai fatto sto timbro? cmq per quanto riguarda la seconda domanda forse bisogna pensare un pò come le somme pesate. magari si fa la somma del valore del pixel da clonare con quello sotto e dividere tutto per M. a proposito, ma sto M bisogna selezionarlo obbligatoriamente no? dato che si mette a dire:"se l'utente seleziona un numero m compreso tra 0 e 100"...


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: Seppho on 29-06-2012, 19:24:22
Scusate ma voi come avete gestito le coordinate dell'immagine per la modifica dei pixel interessati? a me il conteggio inizia dalla figura con WindowButtonMotionFnc e dato che ne ho usate 2 di dimensioni differenti, le 2 immagini hanno coordinate diverse..


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: gunlok on 29-06-2012, 19:54:09
@StephCT

per quanto riguarda il timbro io non ho fatto altro che prendermi una sottomatrice quadrata che si ingrandisce e diminuisce in base ai valori della slider...

mentre per quanto riguarda andare a sostituire questo timbro modificando l'immagine, ancora non ci sono... :(
Ho provato ad applicare quel codice che mi hai mandato alla GUI ma non ci son riuscito.
Ho provato ad utilizzare anche quello ma mi d'ha errori assurdi negli handles del pos=.....


Title: Re:Progetto Matlab (28 giugno 2012)
Post by: StephCT on 29-06-2012, 20:13:28
bisognerebbe vedere il codice intero. in sostanza si deve gestire l'evento del click del mouse, che richiama a sua volta l'evento del movimento del mouse, che a sua volta richiama la gestione evento rilascio del mouse dove finisce l'acquisizione dei punti della curva. per comodità ho piazzato tutto in una matrice dove tengo le coordinate di sti punti e poi uso la sorgente ( dove si è fatto doppio click ) per fare la sostituzione.

nn ho capito che vuol dire pesare la zona clonata con quella da clonare in base al peso m...