|
|
|
|
kio_mrml and mrml_part
|
|
|
|
|
|
|
|
|
|
Carsten Pfeiffer <pfeiffer@kde.org> 2001/05/03
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
These are the sources for an mrml kioslave and an accompanying KPart.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How does it work in Konqueror?
|
|
|
|
|
==============================
|
|
|
|
|
For now, the MrmlPart is rather a proof of concept, than a full blown
|
|
|
|
|
MRML client.
|
|
|
|
|
|
|
|
|
|
You can start the MrmlPart by entering an appropriate URL into Konqueror,
|
|
|
|
|
e.g. mrml://user:pass@host.domain:port
|
|
|
|
|
user, pass and domain are optional, so if you're running a server locally
|
|
|
|
|
yourself, you can enter mrml://localhost to make Konqueror show the
|
|
|
|
|
MrmlPart. If you don't have a running GIFT-server, you can try out
|
|
|
|
|
mrml://viper.unige.ch:12790 as an example. Then, Konqueror will try to
|
|
|
|
|
connect the server at the given URL and show you a list of
|
|
|
|
|
image-collections the server has available. You can specify the number
|
|
|
|
|
of images a query should return and you can hit the Search-button
|
|
|
|
|
to actually start the query. If you don't give an image as example for
|
|
|
|
|
the query, it will return random images from the collection.
|
|
|
|
|
|
|
|
|
|
Shortly after hitting the Search-button, you will see a list of images
|
|
|
|
|
as thumbnails. Below every image is a small rectangle showing the
|
|
|
|
|
similarity of the image with the example image(s). The longer the
|
|
|
|
|
rectangle, the better the match.
|
|
|
|
|
|
|
|
|
|
Even easier than entering the mrml URL is right-clicking on an image
|
|
|
|
|
in Konqueror and selecting "Search for similar images..." in the context
|
|
|
|
|
menu. This will open up a new Konqueror window where the query will start
|
|
|
|
|
automatically. By default, this will try to contact a local server, i.e
|
|
|
|
|
mrml://localhost. You can configure different servers in the KControl
|
|
|
|
|
Module (System -> Advanced Search). The last chosen server will be used
|
|
|
|
|
for those queries.
|
|
|
|
|
|
|
|
|
|
Note that a remote server surely can't access an image from your home
|
|
|
|
|
direcory though. I have to think a little bit about the usability of
|
|
|
|
|
this :) The greatest use of this is when you've indexed your files
|
|
|
|
|
and running an own GIFT server anyway. Ideally, the server could be
|
|
|
|
|
started on demand, when a query comes up.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MrmlPart:
|
|
|
|
|
=========
|
|
|
|
|
This KPart makes use of the mrml ioslave to provide a full MRML
|
|
|
|
|
client. MRML, Multimedia Retrieval Markup Language (see
|
|
|
|
|
http://www.mrml.net) is a means to query CBIR (Content Based Image
|
|
|
|
|
Retrieval) servers. An OpenSource server is the GIFT (GNU Image
|
|
|
|
|
Finding Tool), see www.mrml.net for downloading the GIFT.
|
|
|
|
|
|
|
|
|
|
You can query for images by choosing one or more "example" images.
|
|
|
|
|
The server will search for images that have similarities to the
|
|
|
|
|
example(s) you gave. Queries can be refined by specifying relevance,
|
|
|
|
|
i.e. by including and excluding parts of the previous search result.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mrml ioslave:
|
|
|
|
|
=============
|
|
|
|
|
Basically this is not much more than a slave for asynchronous
|
|
|
|
|
transport of "data". With the URL, you can specify the user, password
|
|
|
|
|
and port, as well as the url of the server to connect to.
|
|
|
|
|
|
|
|
|
|
The data exchange of client <-> slave is done via metaData, with an
|
|
|
|
|
"mrml_data" key. The data that the slave sends to the client is sent
|
|
|
|
|
in one big chunk, after all the data has arrived at the slave. This
|
|
|
|
|
could be made configurable later.
|
|
|
|
|
|
|
|
|
|
With a little tuning, one could turn this into a generic slave
|
|
|
|
|
which can transport any kind of data.
|
|
|
|
|
|
|
|
|
|
[mrmlsearch]
|
|
|
|
|
This little baby is called from Konqueror's popupmenu, when you hit
|
|
|
|
|
"Search for similar images...". This program simply gets the URLs
|
|
|
|
|
from Konqueror and creates a query of the form
|
|
|
|
|
mrml://host.com/?relevant=url1;url2;url3;url4....
|
|
|
|
|
It will use the currently selected host in the KControl module
|
|
|
|
|
System -> Advanced Search to perform the query.
|
|
|
|
|
|
|
|
|
|
mrmlsearch will then invoke "kfmclient openURL query" to start open
|
|
|
|
|
a new Konqueror window and perform the query.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thanks go to Wolfgang M<>ller <Wolfgang.Mueller@cui.unige.ch> for his
|
|
|
|
|
work on the GIFT and for making me write this frontend :) I really
|
|
|
|
|
had a WOW-effect about the GIFT, when MrmlPart returned the first
|
|
|
|
|
query results.
|
|
|
|
|
|
|
|
|
|
New versions of this package can be found at
|
|
|
|
|
http://devel-home.kde.org/~pfeiffer/kmrml/
|
|
|
|
|
See http://www.mrml.net for downloading the GIFT and more information.
|
|
|
|
|
|
|
|
|
|
Have fun,
|
|
|
|
|
Carsten Pfeiffer
|