Friday, July 11, 2008

ITA Latex Users Society - ITALUS

Queria deixar um link para o projeto de uso de latex no ITA. Aqui vai uma breve descrição e o link:

Este projeto visa difundir o uso de latex em teses do Instituto Tecnológico de Aeronáutica, tanto para alunos da graduação como para alunos do mestrado e doutorado. O trabalho hospedado neste site é composto por templates para geração das teses nos formatos requisitados pela instituição.
Conta-se com o apoio de todos os usuários, tanto na requisição de novas funcionalidades, como para atender a uma nova especificação do ITA, ou mesmo para "codificar" estas alterações.

Tuesday, July 08, 2008

Adding keywords to eclipse rcp preferences lookup (search text field)

One might need to add more words to eclipse preference search bar while developing an RCP application. By default, it only looks up for the preference page title. In order to add new keywords, one needs to add a keyword reference and a keyword extension point.
Supposing the plugin.xml has the following sample page:

<extension point="org.eclipse.ui.preferencePages">
<page class="testercp.preferences.SamplePreferencePage" id="testercp.preferences.SamplePreferencePage" name="Sample Preferences">

Add a keyword reference through:

<extension point="org.eclipse.ui.preferencePages">
<page class="testercp.preferences.SamplePreferencePage" id="testercp.preferences.SamplePreferencePage" name="Sample Preferences">
<keywordreference id="marte.keywords.preferences">

And then, add the keyword extension point as:

<extension point="org.eclipse.ui.keywords">
<keyword id="marte.keywords.preferences" label="velocity stopping point">

Now, if anyone types velocity, stopping, or point it will bring the SamplePreferencePage.

There's also a way to add these extensions through the wizards.

Monday, July 07, 2008

EHCI Upate - 6 degrees of freedom head tracking

I'm posting here some updates of the Google Summer of Code EHCI project. This part of the project deals with head tracking with 6 degrees of freedom, a problem often referred as finding the pose of an object. Since no light is being generated from the head - as in some types of infra-red tracking - it needs to rely on natural features of the head. This implementation tries to follow the excellent work from Luca Vacchetti, Vincent Lepetit, and Pascal Fua, from the Computer Vision Laboratory of the Swiss Federal Institute of Technology (EPFL), "Fusing Online and Offline Information for Stable 3D Tracking in Real-Time". The paper is available here

There's a video on youtube showing current progress.


The algorithm starts automatically looking for a head in the image, through the famous Viola Jones algorithm.

After finding the head position, a feature tracking algorithm is started. It uses cvFindGoodFeatures to track in the region of interest defined by the head width and height. When these features are discovered, they are mapped back to a head model (I'm currently using a cylindrical model, but I plan to use the excellent head model by Len Van Der Westhuizen, which is available here, thanks Len!).

When the head model 3d points are known, as well as its corresponding 2d image points, DeMenthon's POSIT algorithm is used to find the initial pose estimation.

After that, an optical flow algorithm by Lucas-Kanade is used is used to track the points along the frames. These points are mapped back to original 3d points and the pose matrix is updated.

The source code shows how to deal with several important OpenCV functions, such as cvGoodFeaturesToTrack, cvCreatePOSITObject, cvPOSIT, and cvCalcOpticalFlowPyrLK, as well as some interesting OpenGL features like loading custum Model View, and Projection matrixes through glLoadMatrix.

I'd really like to thank God and everyone that has helped me develop this work with invaluable tutorials, papers, 3d models, and e-mails,


Posit tutorial:

Explanation of the raw format:

The full report is available at