University Stuff

Hand Gesture Recognition powered by EmguCV

In questi giorni prima di rimettermi in moto in vista della tesi di laurea, ho ultimato e perfezionato un progetto personale che consiste nel riconoscere i gesti della mano utilizzando EmguCV. Le tecniche con cui è possibile estrarre e riconoscere una mano sono molteplici. Nell’approccio scelto sono andato a lavorare su alcuni spazi di colore quale ad esempio YCrCb oppure Hsv definendo una particolare regione dello spazio che contiene la distribuzione di colore della pelle. Eseguito questo filtraggio si ottiene una maschera binaria della nostra mano, che successivamente viene processata al fine di rimuovere il rumore residuo. Dopo aver ottenuto...

posted @ venerdì 3 settembre 2010 19:22 | Feedback (64)

Object Oriented Parser Design

Sulla scia del post precedente e dei commenti ricevuti, in particolar modo ho riflettuto molto sull’accusa :) mossa da Antonio circa la violazione dell’information hiding (aka stupro di oggetti) condivido l’approccio che ho seguito nel disegnare il parser per espressioni regolari a discesa ricorsiva (Recursive Descent Parser). Senza scendere troppo nei dettagli di come operi un parser, diciamo che in una prima fase il Parser esegue analisi lessicale appoggiandosi ad un oggetto Tokenizer che ha il compito di trasformare una stringa in input (nel caso in esame una regex) in uno stream di Tokens. Un token rappresenta un elemento di...

posted @ giovedì 29 aprile 2010 12:18 | Feedback (25)

Ancora sulla complessità del codice

Sulla scia dei post educativi di Luka e di Antonio ho riflettuto sul codice che sto producendo per il mio ultimo progetto che andrà a breve su codeplex, ovvero un parser di regex con successiva conversione ad automa deterministico minimizzato. L’implementazione “hand made” del parser  (lo scopo del progetto dovrebbe essere propedeutico per gli studenti che affrontano un primo corso sui compilatori o di informatica teorica) segue i consigli dell’ottimo testo Flexible Pattern Matching in Strings. Questo è la prima implementazione che segue passo passo lo pseudo codice del libro (con l’aggiunta del campo enum sulla tipologia di...

posted @ lunedì 26 aprile 2010 13:37 | Feedback (32)

Emgu CV: A computer vision Library

In questi ultimi mesi mi sto interessando di Computer Vision. Sto cercando di sfruttare gli ultimi mesi ed esami universitari per cercare di capire quale siano le varie aree di ricerca che maggiormente mi interessano e le prospettive presenti sul panorama nazionale.  Dopo essermi concentrato sugli algoritmi e le strutture dati, aver studiato ed implementato alcuni algoritmi di data mining e business intelligence, l’ultimo elaborato che ho svolto per un progetto universitario riguarda proprio la computer vision, in particolar modo il riconoscimento di oggetti. Attualmente sono davvero poche le librerie ed i wrapper C# che implementano algoritmi di computer vision....

posted @ domenica 30 agosto 2009 15:44 | Feedback (32)

SSAS: SVM algorithm Plugin

Difficilmente posto news, stavolta però farò un eccezione in quanto su codeplex, alcuni sviluppatori di Avanade hanno realizzato un plugin per Sql Server hostato su codeplex che implementa una SVM. Al momento attuale può essere utilizzato per eseguire classificazione confrontando le prestazioni del modello con gli altri che si possono costruire usando gli algoritmi inclusi in SSAS(Decision Trees, Naive Bayes, Neural Network ); ho condotto alcuni esperimenti e devo dire che l'implementazione dell'algoritmo è buona anche se come ho suggerito nel forum è necessario inserire un modo per calcolare i parametri ottimali per l'addestramento della macchina; il mio suggerimento è...

posted @ giovedì 5 febbraio 2009 22:54 | Feedback (33)

[University Stuff] Simple NAry Tree

In questi giorni, per un esame di algoritmi distribuiti ho avuto la necessità di lavorare con un particolare albero nario. Genericamente un albero nario è un albero in cui ogni nodo presenta al massino n figli. Un albero binario è un caso particolare di albero nario dove n=2; in figura viene mostrato un albero 3ario. Vediamo come realizzare un semplice albero nario che permetta di specificare il fattore di ramificazione e che permetta di inserire nodi all'interno dell' albero in modo tale che l'albero venga riempito livello per livello (prima ci creare un nuovo livello si...

posted @ giovedì 26 giugno 2008 20:01 | Feedback (6)

Joining DSA project

Sono appena entrato a far parte del progetto DSA (Data Structure and Algorithms) giunto in questi giorni alla versione 0.5. Far parte di questo progetto per me è uno stimolo davvero interessante e per questo ringrazio il mio amico Granville Barnett, fondatore del progetto. Compito della libreria DSA è quello di cercare di colmare le lacune presenti all' interno della BCL in quanto ad algoritmi e strutture dati. In questi giorni stiamo lavorando con Granville per decidere quali strutture ed algoritmi implementare sino al rilascio della versione 1.0. Devo subito dire che la metodologia TDD adottata da Granville aiuterà a...

posted @ lunedì 2 giugno 2008 17:58 | Feedback (4)

Nth Root

In questo post mostro poche linee di codice che permettono di calcolare la radice ennesima (nth-root) di un numero in C#. Prima di buttar giù queste righe di codice mi sono chiesto se nel framework ci fosse qualche cosa che facesse al caso mio... risposta negativa :(  Con l' ausilio di un pò di matematica però si può ovviare a ciò, sfruttando la definizione di logaritmo e le proprietà che lo legano alla funzione esponenziale. Possiamo infatti scrivere: La dimostrazione di questa formula è piuttosto semplice in quanto la prima uguaglianza è una proprietà che deriva dalla nozione di base...

posted @ domenica 18 maggio 2008 13:47 | Feedback (10)

Data Mining Algorithms : Microsoft Association Rules Revealed

Dopo l' introduzione del post precedente, oggi esamineremo la fase cruciale e maggiormente complessa di ogni algoritmo di Association Mining ovvero la fase di estrazione dei frequent pattern. Ricordo che i frequent pattern sono gli insiemi di prodotti che hanno supporto maggiore di quello minimo. Possiamo effettuare una prima classificazione degli algoritmi di frequent pattern mining individuando da una parte quelli che si basano su di un processo iterativo di generazione di itemset candidati, dall' altra quelli che calcolano i frequent pattern senza questo processo.  ESTRAZIONE FREQUENT CON GENERAZIONE DEI CANDIDATI Questa famiglia vede come capostite il...

posted @ mercoledì 16 aprile 2008 20:01 | Feedback (5)

Data Mining Algorithms : Microsoft Association Rules Introduction

Oggi voglio analizzare ed illustrare uno dei task maggiormente ricorrenti quando si ha a che fare con operazioni di Data Mining, l' Association Mining. Farò riferimento sia all' implementazione fornita all' interno della suite di algoritmi di Data Mining inclusi in SSAS che ad ulteriori approcci maggiormente efficienti.Defiamo innanzitutto che cosa sia l'Association Mining con riferimento a possibili contesti applicativi. Un algoritmo di Association Mining permette di identificare all' interno di un insieme di prodotti (itemset) delle regole che correlano la presenza di un insieme di prodotti con quella di un altro insieme; vengono quindi dapprima estratti dei pattern frequenti e...

posted @ martedì 15 aprile 2008 18:57 | Feedback (5)

Full University Stuff Archive