Der Bildbetrachter ImgSeek

Aus LinuxUser 10/2005

Der Bildbetrachter ImgSeek

© photocase.de

Immer das richtige Bild

Auf eine Festplatte passen mehr Bilder als in ein Regal voller Fotoalben. Doch bei der Organisation ihrer digitalen Archive stehen Sammler vor dem bekannten Problem: Wie lassen sich die Bilder so ordnen, dass einzelne darunter nicht untergehen?

Sortieren nach Motiv

Visuelle Eindrücke merkt sich das menschliche Gehirn besser als nackte Zahlen und Fakten. Deshalb gruppiert das Programm ImgSeek [1] Bilddateien an Hand der abgebildeten Motive. Möchten Sie alle Fotos finden, die beispielsweise eine Palme zeigen, füttern Sie ImgSeek mit einem Palmenbild und das Programm sucht aus der Sammlung alle ähnlichen Abbildungen heraus. Alternativ skizziere Sie über ein integriertes Malprogramm das gesuchte Motiv und erhalten alle der Zeichnung ähnelnden Bilder.

Bringt die Ähnlichkeitssuche nicht die gewünschten Ergebnisse, gruppiert ImgSeek die Bilder auch nach Datei- und Verzeichnisnamen, Entstehungsdatum oder Einträgen in den Metadaten. Sie enthalten beispielsweise die Bildgröße, die verwendete Digitalkamera oder nachträglich vorgenommene zusätzliche Anmerkungen.

Darüber hinaus dient ImgSeek als Bildbetrachter mit weiteren Zusatzfunktionen. Es exportiert Bildersammlungen in HTML-Dateien zur Veröffentlichung auf einer Web-Seite oder zur Weitergabe auf einer CD, die sich bequem per Browser betrachten lässt.

Installation

Bei Suse und Debian gehört ImgSeek zum Distributionsumfang und lässt sich per Yast beziehungsweise über den Befehl apt-get install imgseek einspielen. Auch in Ubuntus universe-Repository findet sich das Paket; allerdings auf Grund eines Bugs leider funktionsuntauglich, so dass hier nur die manuelle Installation bleibt.

Bei ImgSeek handelt es sich um ein Python-Programm, deshalb brauchen Sie es vor der Installation aus dem Quellcode nicht zu kompilieren. Die im Archiv imgSeek-0.8.5.tar.bz2 von der Heft-CD enthaltenen Dateien installiert das mit Root-Rechten aufgerufene Kommando ./install nach dem Entpacken mit tar -xjf imgSeek-0.8.5.tar.bz2. Zu diesem Zeitpunkt muss sich die notwendige Software bereits auf dem System befinden.

ImgSeek setzt neben der Skriptsprache Python und dem zugehörigen Entwicklerpaket – je nach Distribution python-dev oder python-devel – PyQt, ebenfalls samt Entwicklerpaketen, voraus. Sie heißen etwa pyqt oder python-qt nebst dem Appendix dev oder devel. Zu guter Letzt folgt das Qt-Entwicklerpaket, das sich abhängig von der Distribution libqt-dev oder qt-devel nennt.

Darüber hinaus empfiehlt sich die Installation von ImageMagick ebenfalls samt zugehörigem Entwicklerpaket, damit ImgSeek die zahlreichen durch diese Grafikbibliothek integrierten Bildformate unterstützt. Ist das Paket Python-Imaging installiert, liest oder verändert ImgSeek zudem Metadaten verschiedener Bildformate und nimmt bei Bedarf einfache Manipulationen an den Bildern vor.

Los!

Der Aufruf von ImgSeek erfolgt nach der Installation über den Kommandozeilenaufruf imgSeek; zu beachten ist dabei das groß geschriebene S. Beim ersten Start kennt das Programm noch kein Bild. Existiert bereits eine Bildersammlung auf der Festplatte, empfiehlt es sich, diese zunächst einzulesen. Das geschieht im Reiter Add des Hauptfensters (Abbildung 1).

Abbildung 1: ImgSeek sortiert große Bildersammlung nach diversen Kriterien wie Datum, Dateiname und sogar inhaltlicher Verwandtschaft.

Abbildung 1: ImgSeek sortiert große Bildersammlung nach diversen Kriterien wie Datum, Dateiname und sogar inhaltlicher Verwandtschaft.

ImgSeek unterteilt die Bilderdatenbank in so genannte Volumes. Im Standard landen alle eingelesenen Dateien unter Local filesystem. Lesen Sie beispielsweise die Bilder einer CD ein, legen Sie dazu ein neues Volume mit dem Namen der CD an, damit die verschiedenen Sammlungen in separaten Datenbanken landen. So lässt sich mit den Dateien im lokalen Dateisystem arbeiten, ohne dass ImgSeek dabei versucht, auch auf die Bilder einer nicht im Laufwerk liegenden CD zuzugreifen.

Nach der Entscheidung für ein Volume tragen Sie unter Path: einen Verzeichnispfad ein. Nach einem Klick auf den Button Add! sucht ImgSeek darin nach Bilddateien. Ist das Feld recursively aktiviert, landen auch die Daten der Unterverzeichnisse in der Sammlung.

Nun zeigt der Reiter Browse des Hauptfensters einen Dateimanager, über den Sie die in der Bildersammlung vorhandenen Einträge durchstöbern. In dieser Ansicht befinden sich vier weitere Tabs, die verschieden Ordnungssysteme anwenden. Der Reiter Files verwendet eine Baumansicht, an deren oberster Stelle die Volumes stehen. Darunter lässt sich darin enthaltenen Verzeichnisstruktur aufklappen, die einzelnen Bilddateien erscheinen als eigene Einträge. Ein Mausklick auf ein Verzeichnis zeigt Vorschaubilder aller enthaltenen Bilder im rechten oberen Bereich des ImgSeek-Fensters, ein Klick auf ein Bild selbst zeigt diese in Originalgröße im rechten unteren Bereich.

Unter Groups erscheint ebenfalls eine Baumansicht, die frei definierbare Gruppen enthält. In der Voreinstellung existiert bereits je eine Gruppe für jedes Datum, an dem neue Bilder in die Sammlung gekommen sind. Daneben finden sich in der Gruppe Orphan alle Bilder der Datenbank, die keiner Gruppe zugeordnet sind, beispielsweise weil Sie die Gruppe gelöscht haben.

Ein Rechtsklick auf die freie Fläche im Gruppenfenster bringt ein Kontextmenü hervor. Der Punkt New group legt eine neue Gruppe beliebigen Namens an. Per Drag & Drop verschieben oder kopieren Sie nun einzelne Bilder oder ganze Verzeichnisse zwischen den Gruppen.

Der Reiter System zeigt lediglich das gewöhnliche Dateisystem ohne weitere Sortierung. Sie durchsuchen es wie in einem Dateimanager, über die Baumansicht und seine Äste manövrieren Sie durch die Unterverzeichnisse.

Unter Similarity im Browse-Bereich findet die Gruppierung nach Dateiname oder Datum statt. Das Auswahlfeld By: definiert das Kriterium, Date oder Filename. Ein Klick auf den Button Group sortiert danach die Bilder der Datenbank und zeigt im linken Bereich des ImgSeek-Fensters einen Repräsentanten jeder Gruppe. Ein Klick darauf bringt die Vorschaubilder der restlichen Mitglieder derselben Gruppe zum Vorschein.

Das Feld Treshold bestimmt einen Schwellenwert. Je höher die hier eingetragene Zahl ausfällt, desto toleranter verhält sich ImgSeek beim Gruppieren gegenüber Abweichungen, nimmt also mehr Bilder in eine Gruppe auf. Das Werkzeugsymbol neben dem Group!-Button verwandelt die erzeugten Gruppen in logische Gruppen, die daraufhin im Reiter Groups erscheinen und sich dort verwalten lassen.

Suchen und finden

Im TabSearch verbirgt sich das aufsehenerregendste ImgSeek-Feature. Der Reiter by Image content enthält die zwei Sektionen Import und Draw. Erstere bietet die Möglichkeit, zunächst eine beliebige Bilddatei zu laden; anschließend liefert ein Klick auf den Button Start Search alle Bilder aus der Datenbank, deren Motiv ImgSeek als ähnlich einstuft, nebst einer prozentualen Einschätzung der Ähnlichkeit (Abbildung 2).

Abbildung 2: Die inhaltliche Suche liefert zwar auch Bilder ohne für den Menschen sichtbare Ähnlichkeit, aber auch brauchbare Ergebnisse.

Abbildung 2: Die inhaltliche Suche liefert zwar auch Bilder ohne für den Menschen sichtbare Ähnlichkeit, aber auch brauchbare Ergebnisse.

Der Suchalgorithmus wertet Farben und Formen aus, um zu seinen Ergebnissen zu kommen. Er stuft dabei Bilder häufig als ähnlich ein, obwohl das menschliche Auge zwischen ihnen kaum Gemeinsamkeiten erkennt. Das resultiert beispielsweise aus Hintergründen mit ähnlichen Farben, die jedoch für das Gesamtbild keine tragende Rolle spielen.

Doch neben zahlreichen so genannten false positives – fälschlicherweise als ähnlich eingeschätzten Ergebnissen – liefert ImgSeek meist auch die tatsächlich gesuchten Bilder. Damit nimmt es Ihnen immerhin einen Teil der Handarbeit ab, da er aus den Ergebnissen lediglich die unerwünschten Bilder heraussuchen muss, aber nicht die gesamte Datenbank zu durchforsten braucht.

Im Tab Draw der inhaltlichen Suche findet sich das in ImgSeek integrierte Malprogramm. Als einzige Optionen bietet es die Wahl der Pinseldicke und einer Farbe. Damit fertigen Sie eine Skizze an, mit der ImgSeek nach dem Klick auf Start search die Bilddatenbank abgleicht, um inhaltlich verwandte Motive zu finden (Abbildung 3).

Abbildung 3: Auch einer selbstgemalten Skizze ähnelnde Bilder findet ImgSeek.

Abbildung 3: Auch einer selbstgemalten Skizze ähnelnde Bilder findet ImgSeek.

Bilderstapel

In jeder Ansicht bringt ein Rechtsklick auf ein beliebiges Vorschaubild ein Kontextmenü zum Vorschein. Es enthält den Eintrag Add to batch, der das jeweilige Bild in einem Zwischenspeicher vormerkt. Damit lassen sich einige der über das Menü Tools erreichbaren Werkzeuge auf mehrere Dateien zugleich anwenden.

Der Menüpunkt Tools | Work batch editor öffnet ein Dialogfenster zum Bearbeiten des Zwischenspeichers (Abbildung 4). Im mit der rechten Maustaste zugänglichen Kontextmenü löscht Remove this item den markierten Eintrag, Clear current batch entfernt alle vorgemerkten Bilder.

Abbildung 4: Legen Sie Bilder im Zwischenspeicher ab, lassen sie sich komfortabel exportieren, per Dia-Show anzeigen oder manipulieren.

Abbildung 4: Legen Sie Bilder im Zwischenspeicher ab, lassen sie sich komfortabel exportieren, per Dia-Show anzeigen oder manipulieren.

Die Ausklappliste Batch name bietet Zugriff auf verschiedene Zwischenspeicher. Der Standard heißt Temporary work batch, der Button Create a new batch erstellt jedoch weitere. Beispielsweise legen Sie hier einen Zwischenspeicher an, in den er alle Bilder einträgt, die er in ein HTML-Fotoalbum exportieren möchte.

Haben Sie einen Zwischenspeicher ausgesucht, bietet die Ausklappliste Action: mehrere Aktionsmöglichkeiten. Extract image metadata from file liest die in den Bilddateien gespeicherten Zusatzdaten wie Aufnahmedatum, Auflösung oder Dateigröße aus. Bislang überträgt es sie jedoch nur in die interne Datenbank, den Export zur Verwendung mit anderen Programmen sollen künftige Programmversionen unterstützen.

Slideshow führt die im Zwischenspeicher vorhandenen Bilder in einer Dia-Show der Reihe nach vor. Es wechselt dazu in den Vollbildmodus und präsentiert ein Bild nach dem anderen in einer Endlosschleife. [Esc] unterbricht die Anzeige.

Create HTML album verwendet den Zwischenspeicher, um eine per Web-Browser zu betrachtende Bildersammlung zu generieren (Abbildung 5). Dabei stehen die beiden Designs Acqua und Slides zur Wahl, die sich jedoch nur durch die Farbgebung unterscheiden. Abbildung 6 zeigt ein Beispiel im Acqua-Stil.

Abbildung 5: Der Export ins HTML-Format ermöglicht die Betrachtung von Fotoalben per Web-Browser.

Abbildung 5: Der Export ins HTML-Format ermöglicht die Betrachtung von Fotoalben per Web-Browser.

Abbildung 6: Bislang stehen zwei HTML-Layouts zur Wahl. Web-Designer passen das Gerüst an ihre Wünsche an.

Abbildung 6: Bislang stehen zwei HTML-Layouts zur Wahl. Web-Designer passen das Gerüst an ihre Wünsche an.

Für jeden Bedarf

Über den Punkt Edit metadata im Kontextmenü zeigt ImgSeek die in einer Bilddatei gespeicherten Informationen an und bietet die Möglichkeit, diese zu verändern. Der Menüpunkt Tools | Transform images funktioniert nur, wenn die Python-Imaging-Bibliothek auf dem System existiert und erlaubt es dann, einfache Manipulation an Bildern durchzuführen. Darunter fallen beispielsweise Rotationen, das Konvertieren in andere Dateiformate oder das Skalieren auf eine andere Größe.

Auch wenn Sie die Kommandozeile für manche Zwecke bevorzugen, finden Sie bei ImgSeek Hilfe. Der Befehl imgSeekCmd verwaltet die ImgSeek-Datenbank ohne grafische Oberfläche und eignet sich somit beispielsweise für den Einsatz in Shell-Skripten.

imgSeekCmd add fügt der Datenbank neue Bilder oder ganze Verzeichnisse hinzu. Das Kommando imgSeekCmd browse -F gibt eine vollständige Liste aller darin bereits registrierten Einträge aus. Die Parameter -G und -V zeigen stattdessen die Gruppen beziehungsweise die Volumes an.

Die Bilderliste enthält die interne ID jedes Bildes. Über sie fragen Sie mit dem Kommando imgSeekCmd info -m -i ID die Metadaten eines Bildes ab. Auch die inhaltliche Ähnlichkeitssuche funktioniert über die Kommandozeile: Der Befehl imgSeekCmd query -i ID liefert zu einem in der Datenbank gespeicherten Bild die internen IDs ähnlicher Motive. Der Parameter -r gefolgt von einer Zahl begrenzt die Anzahl der Ergebnisse.

Theoretische Stärke

Die in ImgSeek enthaltenen Funktionen übertreffen die der meisten anderen Bildbetrachter deutlich. Das konzeptuell herausragende Feature, die inhaltsbezogene Ähnlichkeitssuche, funktioniert auf Grund der Komplexität dieser Aufgabe bislang zwar keineswegs zuverlässig, liefert aber dennoch bereits brauchbare Ergebnisse. Leider kommt die Entwicklung speziell dieser Funktion, aber auch die des ganzen Programms, nicht allzu schnell voran. In den letzten 12 Monaten enthielten neue Versionen vor allem Fehlerkorrekturen. Falls die ImgSeek-Entwickler selbst nicht alle ihre Vorhaben umsetzen, kann ihre Software zumindest in einigen Bereichen als Vorbild für andere Programmierer dienen.

Infos

[1] ImgSeek: http://imgseek.python-hosting.com

[2] Herbert Graeber, “Fahndungserfolg”: LinuxUser 10/2003, S. 30 ff.,

LinuxUser 10/2005 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben