ImageMagick Maximum stacken

Alles, was nicht in die vorgegebenen Foren und Kategorien paßt.

ImageMagick Maximum stacken

Beitragvon fehlfarbe » Dienstag 3. Januar 2012, 19:57

Hallo Leute,

das ist zwar keine THELI spezifische Frage aber bei den ganzen Linux Benutzern hier, weiß da vielleicht jemand bescheid.
Ich habe ein Video bzw eine Bildreihe (PNG), die ich mit der Maximum Methode stacken möchte. Also es soll jeweils das hellste Pixel eingesetzt werden, um Meteore usw. sichtbar zu machen. Weiß jemand wie das per ImageMagic oder einem anderen Linux Konsolen Programm geht? Normales Durchschnitt stacken (average) hab ich schon gefunden aber eine Maximum Methode für mehrere Bilder scheint es wohl nicht zu geben.
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24

Re: ImageMagick Maximum stacken

Beitragvon moos » Dienstag 3. Januar 2012, 22:20

Hi Marcus,
-compose screen
oder
-compose lighten.
http://www.imagemagick.org/script/command-line-options.php?ImageMagick=m4stv9hn84cas84an33umm23l2#composite
z.B. ( habe ich nicht ausprobiert, also nur rein theoretisch)
zuerst manuell einmal ein result.tif erzeugen aus dem ersten bild.
cp bild1.tif result.tif
for i in `ls My*.tif`
do
convert -compose lighten -composite result.tif $i
done
Ciao Carsten
moos
 
Beiträge: 504
Registriert: Dienstag 18. Oktober 2011, 19:06

Re: ImageMagick Maximum stacken

Beitragvon fehlfarbe » Dienstag 3. Januar 2012, 23:47

Danke Carsten, das geht schon mal in die richtige Richtung.

Leider scheint was nicht zu funktionieren, da eine Fehlermeldung kommt:

Code: Alles auswählen
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00001.png
convert: missing an image filename `/tmp/stack/sf00001.png' @ convert.c/ConvertImageCommand/2841.

In der ersten Zeile gebe ich den Befehl noch mal aus, in der 2. wird er ausgeführt und zeigt die Fehlermeldung an, dass eine Datei fehlt, die doch aber vorhanden ist.

Hier mal der Ausschnitt aus dem Script:

Code: Alles auswählen
ls  ${dest}

cp ${dest}sf00001.png ${dest}max.png
ls  ${dest}

for i in `ls ${dest}sf*.png`
do
        echo "convert -compose lighten -composite ${dest}max.png $i"
        convert -compose lighten -composite ${dest}max.png $i
done

ls  ${dest}


Und die Ausgabe:

Code: Alles auswählen
max.png  sf00001.png  sf00002.png  sf00003.png  sf00004.png  sf00005.png  sf00006.png  sf00007.png  stack.png
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00001.png
convert: missing an image filename `/tmp/stack/sf00001.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00002.png
convert: missing an image filename `/tmp/stack/sf00002.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00003.png
convert: missing an image filename `/tmp/stack/sf00003.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00004.png
convert: missing an image filename `/tmp/stack/sf00004.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00005.png
convert: missing an image filename `/tmp/stack/sf00005.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00006.png
convert: missing an image filename `/tmp/stack/sf00006.png' @ convert.c/ConvertImageCommand/2841.
convert -compose lighten -composite /tmp/stack/max.png /tmp/stack/sf00007.png
convert: missing an image filename `/tmp/stack/sf00007.png' @ convert.c/ConvertImageCommand/2841.
max.png  sf00001.png  sf00002.png  sf00003.png  sf00004.png  sf00005.png  sf00006.png  sf00007.png  stack.png


Beim Verzeichnis auflisten werden die vermissten Dateien doch angezeigt oder will der was ganz anderes??


EDIT:

Hab es doch hin bekommen, die Syntax beim Convert war falsch. Es muss so aussehen:

Code: Alles auswählen
for i in `ls ${dest}sf*.png`
do
        convert $i ${dest}max.png -compose lighten -composite ${dest}max.png
done
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24

Re: ImageMagick Maximum stacken

Beitragvon moos » Mittwoch 4. Januar 2012, 09:46

Hi Marcus,
hey super.
Das mit der Syntax habe ich wohl verdreht. Es stand da so etwas verwirrend im usage. Aber so wie du es jetzt gemacht hast, ist es
ja i.A. auch angegeben für convert.
Code: Alles auswählen
convert $i ${dest}max.png -compose lighten -composite ${dest}max.png

erste src, zweite src , dann methoden und zuletzt das Ziel.

Wie sieht denn das resultat aus?
Ciao Carsten
moos
 
Beiträge: 504
Registriert: Dienstag 18. Oktober 2011, 19:06

Re: ImageMagick Maximum stacken

Beitragvon fehlfarbe » Mittwoch 4. Januar 2012, 10:35

Hallo Carsten,

ja ich dachte auch erst, dass die Syntax richtig wäre, weil es ja auch so in deinem Link stand. Bei einem Beispiel für den Lighten Filter stand es aber noch mal richtig da.

Das Script wird übrigens immer ausgeführt, wenn meine kleine Meteorkamera eine Bewegung erkannt und ein Video aufgezeichnet hat. So habe ich immer schon mal ein nützliches Vorschau Bild.

Hier mal zum Vergleich das Durchscnitts- und Maximum Bild:

avg.jpg


max.jpg


In der Mitte sieht man den Meteor nur im Maximum Bild.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24

Re: ImageMagick Maximum stacken

Beitragvon moos » Mittwoch 4. Januar 2012, 11:14

Hi Marcus,
schönes Ergebnis. Nun kannst Du doch auch noch das Average Bild dazu addieren, oder? Dann wird der Hintergrund glatter und die Sterne kommen dazu ;-)
Schön zu wissen, dass das script sinvollen Einsatz findet.
Ciao Carsten
moos
 
Beiträge: 504
Registriert: Dienstag 18. Oktober 2011, 19:06

Re: ImageMagick Maximum stacken

Beitragvon fehlfarbe » Mittwoch 4. Januar 2012, 16:33

Hallo Carsten,

daran dachte ich auch schon, aber mit welcher Methode? Wenn ich wieder lighten nehme, kommen ja die ganzen hellen Artefakte vom Maximum wieder dazu und average schwächt dann das bewegte Objekt wieder ab?!

Sterne sind bei der Kamera sowieso außer Jupiter nur sehr sehr schwach. Meine neue Kamera, die hoffentlich die nächsten Tage aufs Dach kommt, zeigt da aber zum Glück etwas mehr :)
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24

Re: ImageMagick Maximum stacken

Beitragvon Knickohr » Donnerstag 5. Januar 2012, 18:21

Hi,

ich hab den Beitrag mal aufgeteilt, da es Offtopic wurde ;-)

siehe viewtopic.php?f=1&t=173

Thomas
Benutzeravatar
Knickohr
Moderator
 
Beiträge: 631
Registriert: Donnerstag 29. September 2011, 12:01
Wohnort: Blaustein

Re: ImageMagick Maximum stacken

Beitragvon fehlfarbe » Samstag 7. Januar 2012, 21:17

Heyho,

ich hab den MAX und AVERAGE stack jetzt gut miteinander verheiratet. Einfach addiert und als Maske den MAX stack noch mit angegeben, sodass dort nur die hellen Teile ins AVERAGE eingefügt werden. Sieht super aus :)

Code: Alles auswählen
composite max.png stack.png max.png stack2.png



Hier noch mal der Vergleich:

2012-01-05_18-44-47.avi_max.png


2012-01-05_18-44-47.avi_stack.png


stack.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24

Re: ImageMagick Maximum stacken

Beitragvon fehlfarbe » Donnerstag 2. Februar 2012, 20:47

Noch mal Hallo,

mich nervt es manchmal, dass ich Sterne usw. nicht von der Leuchterscheinung, die die Kamera aufgenommen hat, unterscheiden kann. Daher habe ich das Script nun so umgebastelt, dass die Pixel, die sich zwischen AVERAGE und MAX+AVERAGE unterscheiden rot auf den AVERAGE gelegt werden.

Name der Einzelframes: sf[framenummer].png
Code: Alles auswählen
# coadd images
convert -average sf*.png stack.png

# create maximum stack
cp sf00001.png max.png
for i in `ls sf*.png`
do
        convert $i max.png -compose lighten -composite max.png
done

#create stack with red motion pixels
composite max.png stack.png max.png stack2.png
compare -metric AE -fuzz 2% stack2.png stack.png -compose Src -lowlight-color none stack3.png
convert stack.png stack3.png -compose srcover -layers merge final.png

# add labels, substract darkframe
convert stack2.png /home/datalux/scripts/webcam/label.png -compose lighten -composite stack2.png
convert stack2.png /home/datalux/scripts/webcam/hotpixelmask.png -compose multiply -composite stack2.png


Zusätzlich wird jetzt noch ein Layer mit den Himmelsrichtungen drüber gelegt und ein manuell erstellter Darkframe abgezogen Das Ganze sieht dann bei einer Flugzeugspur von vorhin z.B. so aus:

1_2012-02-02_19-47-49.avi_stack.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
fehlfarbe
 
Beiträge: 126
Registriert: Donnerstag 20. Oktober 2011, 22:24


Zurück zu Small-Talk, Vorstellungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast