In einem Verzeichnis habe ich viele Bilddateien. Manche davon haben denselben Timestamp (jeweils 3 Bilder werden in Serie geknipst). Ich würde gerne Dateien mit gleichem Timestamp in je einem neuen Ordner gruppieren, so dass letztendlich solch eine Struktur entsteht:
dir1
-bild1
-bild2
-bild3
dir2
-bild4
-bild5
-bild6
wobei eben die Bilder in einem Verzeichnis denselben Timestamp haben. Hat mir jemand einen Ansatz, wie das funktionieren könnte?
Bash: Dateien gruppieren
- BerndHohmann
- Beiträge: 70
- Registriert: 17.02.2015 23:26:44
- Wohnort: Nidderau
-
Kontaktdaten:
Re: Bash: Dateien gruppieren
Gar nicht, sonst hätte ich es schon um meine Belichtungsserien für HDR von den normalen Knipsfotos zu separieren._ash hat geschrieben:In einem Verzeichnis habe ich viele Bilddateien. Manche davon haben denselben Timestamp (jeweils 3 Bilder werden in Serie geknipst). Ich würde gerne Dateien mit gleichem Timestamp in je einem neuen Ordner gruppieren, [...]. Hat mir jemand einen Ansatz, wie das funktionieren könnte?
Der Knackpunkt ist, dass die Timestamps eben nicht identisch sind sondern immer mal über die Sekunde hüpfen, bei HDRs in dunklen Räumen sind auch mal 5-10 Sekunden drin. Also ist eher Zeitjongleurerei angesagt, in der Praxis hat das bei mir nie wirklich funktioniert (selbst als ich es dann nach Java gezogen habe wo ich bessere Routinen habe).
Was besser funktioniert ist der direkte Vergleich der Bilder. Also 1+2, 2+3, 3+4 und wenn es Unterschiede gibt die Reihe abbrechen.
Ich kopier Dir mal was aus einem meiner Tools raus. "compare" ist aus der ImageMagick suite. Die bei mir verwendeten Images für den Vergleich hab ich mir aus JPG extrahiert (die Vorschaubilder darin), den Vergleich in voller Größe durchzuführen dauert zu lange.
Code: Alles auswählen
# limit in percent for similarity
similarity_threshold=65
# Checks the similarity of two images
# $1 first file
# $2 second file
# returns: 1 images matches, otherwise 0
similarity() {
sim=$(compare -colorspace gray -metric NCC $1 $2 null: 2>&1)
sim=$(echo "($sim*100+0.5)/1" | bc) # rounding & integer
if [ $sim -gt $similarity_threshold ]; then
return 1
else
return 0
fi
}
Re: Bash: Dateien gruppieren
Dreht sich bei mir auch um HDR Bilder. Interessanter Ansatz, vielen Dank! Bei mir liegen die Bilder zu dem Zeitpunkt allerdings in RAW vor.
Meine Idee war, dass man damit zumindest die Bilder mit gleichem Timestamp gruppieren könnte, was den manuellen Aufwand zumindest deutlich reduzieren würde (ich habe ein Skript, was dann Bilder in Verzeichnissen per 'enfuse' zusammenschiebt). Und zumindest tagsüber decken sich die Timestamps oft. Aber klar, Du hast recht, sobald die Belichtung bisschen länger wird, gehts nicht mehr.
Würde Dein Ansatz auch mit RAW Dateien funktionieren?
Meine Idee war, dass man damit zumindest die Bilder mit gleichem Timestamp gruppieren könnte, was den manuellen Aufwand zumindest deutlich reduzieren würde (ich habe ein Skript, was dann Bilder in Verzeichnissen per 'enfuse' zusammenschiebt). Und zumindest tagsüber decken sich die Timestamps oft. Aber klar, Du hast recht, sobald die Belichtung bisschen länger wird, gehts nicht mehr.
Würde Dein Ansatz auch mit RAW Dateien funktionieren?
- BerndHohmann
- Beiträge: 70
- Registriert: 17.02.2015 23:26:44
- Wohnort: Nidderau
-
Kontaktdaten:
Re: Bash: Dateien gruppieren
Ja: im RAW ist auch ein JPEG Vorschaubild welches man zum Vergleich extrahieren kann._ash hat geschrieben:Würde Dein Ansatz auch mit RAW Dateien funktionieren?
Den Timestamp-Vergleich hab ich verwerfen müssen weil es in der Praxis zu extremen Verwürflungen kam weil zb. Bild 3 Zeitlich nicht zu 1+2 passte, aber zu Bild 4,5,6 sodass ich dann 1+2 separiert von 3+4+5+6 hatte - die Nachbearbeitung dauerte dann länger als wenn ich es gleich manuell gemacht hatte.
Ich schick Dir mal per PM das ganze Script (ist eigentlich für was ganz anderes, aber von der Systematik passt das schon).
Bernd