Saturday, November 7, 2009

Hot tech topics... according to my students

During the last two months my students following the course "Content Management and Delivery" have proposed online readings to their mates. The texts, always in English, were found on blogs or news websites. Each article has received the grading of the rest of the class, providing a meter of what topics interest most to these future young engineers. This post provides an overview of the top rated websites.

The winner, by far, was a research description from ICT Graphics Lab in the University of Southern California (USC). When the first 3D flat screen devices are knocking at the door of everybody's home, this work by Jones et al provides a solution to keep eye contact in teleconferencing using a next generation 3D visualization device.

The second most voted article refers to augmented reality for mobile devices. This app, called Layar, has been developed by the Dutch company SPRXMobile and visualizes data embedded on an image captured by a phone. The student also found a video demo that provides a better understanding of its possiblities. The application can be downloaded for free from the iTunes app store... if your phone includes a compass, as it is the case of the iPhone 3GS.

The third winner belonged to the acquisition category and also dealt with 3D, a growing trending topic everywhere. This is a research paper from Sheng, Balakrishan and Singh from the Department of Computer Science. As this video shows, they designed an interface for virtual 3D sculpting that tries to simulate the traditional interaction of fingers with clay or foam.

These three articles were the best ranked among a total of sixty. I am surprised that two of them belong to university research, which represented a small fraction of the overall. Most students had presented technologies developed and run by the industry. I am also satisfied that the two hot topics they chose, 3D and mobile apps, correspond to the subjects which have caused the greatest buzz in the tech blogs and magazines I follow. I hope these readings inspire them to direct their career as engineer in a promising direction.

Thursday, October 8, 2009

FedoraCommons repository

Digital Objects

Assets are managed inside FedoraCommons repository as Digital Objects.

The basic components of a Fedora digital object are:

  • PID: A Persistent, unique IDentifier for the object.
  • Object Properties: A set of system-defined descriptive properties that are necessary to manage and track the object in the repository.
  • Datastream(s): The element in a Fedora digital object that represents a content item (image, thumbnail, metadata...)

Searching the repository

We can do searches in order to see which assets are already ingested in Fedora:

For example:
  • Go to: http://IP:8080/fedora/search
  • Search all fields for i3mam:389
  • Click the i3mam:389 link below and hit view the item index for this object
You can see that there are 3 datastreams:
  • DC: Dublin Core which contains metadata about the ingested image.
  • REELS-EXT: Contains information about relationships with other assets.
  • image-in: the ingested image itself.


There is also and advanced search function:
http://IP:8080/fedora/risearch

We can also retrieve the datastreams directly from the URL by typing the name of the desired datastream like this:

Dublin Core Datastream :
http://IP:8080/fedora/get/i3mam:389/DC

image-in datastream:
http://IP:8080/fedora/get/i3mam:389/image-in

Fedora Web Administrator


FedoraCommons provide us with a graphical interface to manage digital objects in a more friendly way. It is called the Fedora Web Admin and it is a flash based application like this:
http://IP:8080/fedora/admin/


You can try to search the same digital object by going to:
Object > open object > PID > i3mam:389 > open

How other applications interact with the Upseek Server


  • Upload is a graphical interface which will be used to ingest digital assets to FedoraCommons as well as related metadata. Internally, Upload application call Fedora's java methods to acomplish this purpose.
  • GAT will retrieve an image from Fedora, annotate it, and then, send the XML/MPEG-7 annotation file to the Fedora repository and it will be saved as an additional datastream of the digital object.
  • GOS will have the possibitility to ingest the image which will be used to perform the QueryByExample search.
How to ingest assets in Fedora

We have developed a class called ingest.java (edu.upc.tsc.gps.gpi.upseek.client.comms.client) which has Java methods for ingesting, deleting and updating digital objects and datastreams.

For example, if we would like to ingest an image we could use the following method:
public String ingestImage (URI uri, String creator, String title, String subject, String identifier, String assetID).

(Note: we have omitted the Upseek IP address for security issues.)

Tuesday, October 6, 2009

Connection between UPload and Upseek

This week the main progress in the graphic interface for ingest of content to the server (UPload), has been the link with the server Upseek. This step could easily be made due to all the developers share code in one project and we can call the methods of the other projects directly.

For the ingest of images we use a function of the project of Robert also called "upload". This function allows to transmit the image and metadata fields (eg, image title, author, etc..) , used to classify the images in the database. The following figure shows an image transferred to server.

The "upload" is called by the Load button on the toolbar, thas gets the path on the local disk of the selected images in the navigation pane. Another advance in the interface has been to enable the text field on the toolbar to enter text. This two elements are highlited in the next image.

More results soon!

Friday, October 2, 2009

Creating and using JAR files

A basic task developing our java applications for i3media (GAT, GOS and UPLOAD) is to package files and directories into a JAR file.

JAR files are pa
ckaged with the ZIP file format. To perform basic operations with JAR files, we must use the Java Archive Tool provided as part of the JDK. The Java Archive tool is invoked by using the jar command.

The most common operations of the jar command are the following:
  • Create a JAR file.
  • View the contents of a JAR file.
  • Extract the contents of a JAR file.
To unpack a JAR file or tot see what contains you can use a decompress program, for example, WinRAR or WinZip. To create a JAR file you can use the jar command from the terminal:

aajar -cf output-file.jar input-file1 input-file2
aajar -cf output-file.jar input-directory


If you are using Eclipse as development environtment, you must know that Eclipse has a function to export resources into a JAR file.

Typically a JAR file contains the class files associated with an application. You can run an application packaged as a JAR file with the Java interpreter. The basic command is:
java -jar jar-file.jar
Then, why and how we use JAR files? In GAT, GOS and UPLOAD image icon's comes from an image file. We put all the image files in a JAR named images.jar. In addition, deploying a Java application usign the Java Web Start, the first step is to package the code as a JAR file (Gat.jar, Gos.jar). The following figure illustrate the configuration for GAT:

The directory image has a structure like this:

aaimages/
aaimages/|_16x16/
aaimages/|_16x16/|_gat.gif
aaimages/|_16x16/...imags| _16x
aaimages/|_32x23/
aaimages/|_16x16/...
aaimages/|_48x48/
aaimages/|_16x16/...es|_16x16
aaimages/...

To loads an image we only have to add the following java code:

The getResource method tells the class loader looks through the JAR files in the classe path for the images/16x16/gat.png file. If the class loader finds the file, it returns the URL of the JAR file that contains the file. If another JAR file in the class path contains the images/16x16/gat.png file, the class loader returns the first instance that contains the file.

For more information about JAR files see the Java Tutorial.

Wednesday, September 30, 2009

ow to access to a SQL database using PHP to embedd OGG video in HTML 5

The goal was to do this little project using free video formats, ogg theora, and HTML 5's video tag. To convert videos to ogg I found a codec at xiph.org that enables you to save your videos in that format with Quicktime.

All code has been written in php and HTML, except some SQL commands integrated in the php part. I had no idea about these languages before doing this and I'd say that I neither do now, but I've learnt a lot about how do this things work and got some little notions about these languages.

First step was to connect to the database I created, and list all the entries in 'videos' table. Fortunately I found on the internet an example of how to connect to a database and list all the entries in a table. With some modifications I had the index. What it basically does is to connect to the database, get the video table and line per line write the name, typology and description of every entry in the 'videos' table.

I could finally link every name with a page that plays the video thanks to Marcel. The generated link in the index page includes the 'url' variable of the video, by using PHP's GET method. So once we're on the playing video page it knows were to find the video. With HTML 5's video tag playing the video just takes a code line!

Here an example, working on Safari 4:


Tuesday, September 29, 2009

UPload: Tree and Explore Panels

This week we made progress in developing the interface UPload. On one hand, the left panel shows the local directories, and also allows open them. This panel is tested on two different operating systems (Linux and Microsoft Windows) and works correctly, as shown in the next image.

We have detected that this panel takes a long time to open large directories and will need some method of java class JTree to free memory to load directories.

Moreover, in the directory browser panel loads images of the selected directory. For now, this directory is opened through an option from the toolbar as shown below.
Each image can be selected using the checkboxes.

In the toolbar, different functionalities have been placed. The first is a text field, which displays the directory path of the images, the directory will also can be introduced in this field. The second, the buttons to select and deselect all the images directory. Finally, the Load button, which activates the sending of the images to the server.

The next step in the development of the interface is to link the functions of the two panels to charge the images directory selected in the tree in the navigation panel.

Thursday, September 24, 2009

true intelligence?

I watched a video some weeks ago about Concept Recognition by a robot, a topic related to image retrieval (the one I'm doing research for my thesis), and i didn't realized what important is the image retrieval for Human Being.

In the video, we can see Asimo, the Honda's Robot trying to do something we easily do without knowing even how. Recognizing sizes, forms, colors, shapes as descriptors of a whole bunch of generic objects (a bycicle, a ball, a table, a house).

At the end of the video, a chair will be show to Asimo and he(it?) will be asked to decide whether the object is a chair or a table.

For me that is the beggining for some sort of judgment