Metro station ceiling, Moscow
You may have noticed that recently the photos used in this blogs have become links, which they weren't before. I know some readers have clicked on them and thought that this was just a link to a bigger version of the photo, but it's actually a lot more than that. Every photo is a topic in a photo topic map, and the link goes to the topic page for that photo, showing it in context.
On holiday in China in 2004 I travelled around with a camera, taking lots of photos for the first time in at least a decade. And, of course, I wondered how to organize these photos. And, of course, the thought struck me that I might use Topic Maps. I looked around a bit for other software I might use, but in the end decided to actually build a Topic Maps-based photo collection.
It now contains all the photos I've taken since I got my first digital camera for Christmas 2003, plus photos taken by other people at events I attended. The result is a collection of 6200 photos over the course of 8 years (2000 to 2007). The number keeps growing all the time, of course.
The system consists of two parts: a desktop application for building the topic map, and a web application for displaying the result. The desktop application is built in Jython using Swing and the OKS. It's a quite simple application that allows me to scan any directory for new photos, and extracts the time each photo was taken from the EXIF metadata in the JPEG file.
Using the tagging application I enter the following about each photo:
- where the photo was taken,
- people shown in the photo,
- categories the photo belongs to, and
- when the photo was taken (automatically extracted, but editable).
The screenshow below shows the application.
The tagging application
Below is a GTM diagram of the ontology:
GTM diagram of ontology
Entering the photos from some event can take some time, and when there are lots of photos (as from the Japan holiday) it can take a long time. After all the photos have been tagged, my girlfriend and I go through them and decide what to delete. This also takes time, and we're still not finished with the Japan holiday, unfortunately.
The result I think you can best judge for yourself by browsing the collection. One thing you should try is the filters on the right-hand side, which allow you to get quite fine-grained views on the collection. Here's one example: me taking photos.
You'll note that I've had to hide about 1000 of the photos to protect the privacy of various people. The system has a feature that allows me to hide a single photo, all photos from a given place (typically someone's house or flat), and all photos of a given person (like my girlfriend). This is why there is a login system; any user who's logged in can see everything.
This means that if you are shown in this application (check the people page), and you'd rather not be, just let me know. Hiding all photos with you in them requires just checking a box.
The last feature I've added is a photo rating system, inspired by the 5-star rating system in iTunes. Every logged-in user can record a separate rating of each photo, and in addition all unlogged users share a single user (named 'nobody', and there are 19 votes from this user already). These scores are averaged for each photo. At the moment this is only used to make a page of the best photos, but in time I want to make it possible to sort photos by average rating on any page, and also to filter by average rating.
Another feature I'm quite pleased with is the Google Maps integration. Each town/city in the system has its longitude and latitude recorded, which means I can show a map of all the places, and on the page for each place there is a map showing the place in context, together with other places there are photos from.
No doubt this will grow with time. For example, I might add a comment feature. It would also be fun to experiment with TMRAP integration with other Topic Maps-based applications, whether they contain photos or not. We'll see. If anyone wants the ontology, or the web application, or something else, let me know.
LM taking a picture, Sudak, Ukraine
Over the last few weeks my photo collection application has been struggling seriously with its performance
Read | 2008-06-25 15:14
I've been thinking for a while that it's a pity that many of the stories in the blog which are about the same things as the photos in the tmphoto application don't show up in that application
Read | 2008-01-10 18:09
Trond - 2007-09-17 05:58:38
Neat. Are you planning on releasing the source code later on (excl. OKS, obviously)? I believe that applications like this is something the OS TM-community needs more of...
Arnoud Haak - 2007-09-17 09:31:18
Is that why we had to make a photo topic map during your course? :P
Lars Marius - 2007-09-17 09:35:02
Trond: I don't know if I'm going to release the source code, but anyone who wants it can certainly have it, provided they have an OKS license. It's not exactly pretty, but it does work.
Arnoud: That is kind of where the idea for the domain came from originally, yes. :) I've stuck to that example in later courses because it's turned out to work very well.
Ryan v. - 2009-08-21 18:32:50
Wow very cool. Wouldn't mind checking out the code for that and seeing whats going on. Great job.
Lars Marius - 2009-08-22 02:27:31
The code is actually available now: http://code.google.com/p/tmphoto/
George Susini - 2009-09-25 01:42:34
Really cool tool. Going through 6200 photos sounds like a harrowing task, and being able to immediately find photos of certain places and things as well as all the other little additions is a really neat idea. Good luck in the future, I wish you the best of success.
corrado campisano - 2011-12-19 01:19:14
that's cool stuff!
Anyway, I believe the tagging app should be on the device, which could be not just iphones or gphones (those could also leverage GPS for auto geo tagging) but also on digital cameras (some have tagging, almost all miss GPS).
i.e. "tag as you go" could be a short way for my view.