Open holgerd001 opened 3 years ago
An impressive ant. :-)
imfuse provides option --less
to prefer weak foreground objects. You can also try the more rude --prefertop
.
Try e.g. imfuse --dog=s0.75 --less
Adding --cutblur
or --close
might help.
I croped the images to get a faster result and tired some options.
imfuse --dog=s0.75 --less
shows a better result as imfuse --dog=s0.75 --prefertop
.
And imfuse --dog=s0.75 --less --finalblur
makes it better, but not really good. --cutblur ist not as sharp as --finalblur.
The image above shows the result of imfuse --dog=s0.75 --less --finalblur
?
The feeler seems to be basically ok, but still a bit shiny. The bokeh is not really nice, especially left of the feeler. Two attempts:
imfuse --dog=s0.75 --less --finalblur=p60
. Or maybe you need a stronger sigma with --finalblur=s5
.
--threshold=60
you see the areas affected by --finalblur=p60
--cutsoft
instead of --cutblur
to make feeler less shiny: imfuse --dog=s0.75 --less --finalblur=p60 --cutsoft
--maskblur
to increase contrast.--alpha --bg=enfuse
instead of --finalblur
.Three proposals:
imfuse --dog=s0.75 --less --cutsoft --maskblur --finalblur=p60
imfuse --dog=s0.75 --less --cutsoft --maskblur --finalblur=s5
imfuse --dog=s0.75 --less --cutsoft --maskblur --alpha --bg=enfuse
The image above shows the result of
imfuse --dog=s0.75 --less --finalblur
?
Yes.
I tried your recommendation:
imfuse --dog=s0.75 --less --cutsoft --maskblur --finalblur=p60
imfuse --dog=s0.75 --less --cutsoft --maskblur --finalblur=s5
imfuse --dog=s0.75 --less --cutsoft --maskblur --alpha --bg=enfuse
No one is really good. Perhaps I have to improve the alignment too.
But now the garden is calling :-) I'll be back later.
Now I'm back and have done some experiments with hugin. I used the mask option and set a "do not use area" mask over the feeler in 12 photos of the stack.
Using masks can help, but increase working time.
Sorry for my late response.
Uh, the results from my proposals look even worse. The feeler gets transparent again.
I wonder why; maybe an issue with --cutsoft
.
If you provide me the source images of the crop, I could run some tests myself.
Using masks can help, but increase working time.
How did you create the masks? Painting them by hand is quite difficult, I assume. I even don't know the workflow with hugin; it somehow can use enfuse, but I don't know at all how to stack with hugin.
Recently I did some tests with "stack slabbing". That means, several substacks are created from only a subset of the source images (e.g. 10 substacks with each 10 images from overall 100 source images). The results from the substacks are stacked afterwards. I am not satisfied with the current results, but it is an interesting attempt to get different results.
Script slab
Usage: slab IMAGES
Change the mask parameters inside the script.
(imfuse also has a new option --slab
; but the slab script allows more control).
I could easily add a possibility in script slab
to create masks from these substacks. One of them should match the feeler.
If you provide me the source images of the crop, I could run some tests myself.
Yes gladly. Where shall I upload them.
How did you create the masks?
I used the build in function in hugin. It's quite simple. A short and not actual description using stacks with hugin you can find here.
Slabbing sounds interesting. As far as I understood it means to split a stack into some substacks and to use different methods (options) for each substack. And then put all single results together.
Yes gladly. Where shall I upload them.
Over FTP, please. That worked well last time. I've send you a mail with the credentials.
A short and not actual description using stacks with hugin you can find here.
Thank you! Though, a step to manipulate masks is not in the description. Anyway, I'll try out.
Slabbing sounds interesting. As far as I understood it means to split a stack into some substacks and to use different methods (options) for each substack. And then put all single results together.
Currently it means, all substacks are stacked with the same parameters. But fusing the results of the substacks is done with other parameters. Though, in general it would be possible to use different parameters for each substack. Just not yet in the current implementations.
Though, a step to manipulate masks is not in the description.
You can find it here and here. hugin uses vector masks. You don't need to manipulate the automatically generated pixel mask.
Currently it means, all substacks are stacked with the same parameters. But fusing the results of the substacks is done with other parameters.
That's what I tried manually in the past, but without success. I had problems to fit the results of the substacks together. Because the pictures had different sizes.
Perhaps an other way of slabbing can be interesting:
A lot of work =:-)
I had problems to fit the results of the substacks together. Because the pictures had different sizes.
That sounds like each substack has been aligned on its own?
Perhaps an other way of slabbing can be interesting: create substacks of interesting parts (e.g. eyes, feeler, ...) crop the substacks process the cropped substacks putting the results together like a mosaic (e.g. using enblend/hugin)
The curent slab script is already close to this. :-) Have a look at this:
There is some unsharp area at the border of the substacks, and an artefact in the eye, and some halo around the feeler. But the approach is interesting, I'll try further. You can also try to change some parameters in the script.
That sounds like each substack has been aligned on its own?
Yes, that's what I've done.
Have a look at this:
Oh, that looks promising.
You can also try to change some parameters in the script.
I started it. Slab needs only the aligned images as input (e.g. slab aligned_C_c16_corr08_g11_m_order_00??.tif)?
I got an error: awk: Kommandozeile:1: BEGIN{printf "%0.0f",} awk: Kommandozeile:1: ^ syntax error awk: Kommandozeile:1: BEGIN{printf "%0.0f",} awk: Kommandozeile:1: ^ Unerwarteter Zeilenumbruch oder Ende der Zeichenkette imfuse note: No mask option specified, generating background only: enfuse
awk: Kommandozeile:1: BEGIN{printf "%0.0f",} awk: Kommandozeile:1: ^ syntax error awk: Kommandozeile:1: BEGIN{printf "%0.0f",} awk: Kommandozeile:1: ^ Unerwarteter Zeilenumbruch oder Ende der Zeichenkette imfuse note: Setting --output=/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/cache.slab/imfuse.=w_bg=enfuse_md928a5e.tif
I started it. Slab needs only the aligned images as input (e.g. slab aligned_C_c16_corr08_g11_m_order_00??.tif)?
Yes. Other adjustments can only be done in the script.
I got an error:
Ich suche gerade nach der genauen Ursache. (Just let us speak German ...).
Ich suche gerade nach der genauen Ursache.
Das Ergebnis ist jetzt da, trotz Fehlermeldung. Ich werde mal mit den Parametern experimentieren.
Ich habe eine Möglichkeit ergänzt, die Anzahl der Bilder pro Slab genau festzulegen. Hier ein Ergebnis mit nur 2 Slabs (commit):
Die Ergebnisse der einzelnen Slabs (im Original transparent statt schwarz). Den fehlenden Hintergrund füllt enfuse:
Ich werde noch die Möglichkeit ergänzen, zu jedem Slab die imfuse-Parameter festzulegen.
Ich habe gerade ein Update hochgeladen, das die Einstellung von imfuse-Parametern und Threshold pro slab erlaubt. Ich hoffe, die Kommentierung im Script ist verständlich genug.
Mit etwas Feingefühl in den Parametern wird das Ergebnis sicher noch etwas besser; in der Detailansicht zeigen sich noch ein paar Fehler in der Umgebung von Mund und Nase.
Ein weicher Übergang zwischen den Schnitten wird das nächste Projekt.
Ein gutes Ergebnis, fast gleich mit dem vorherigen, aber mit weichen Schnittkanten: Diese Stellen stören mich noch: Hierfür fällt mir keine gute automatisierte Lösung ein. Wenn ich den Threshold vom 2. Slab verkleinere, wird der Kopf außenrum nicht sauber ausgeschnitten.
Eine Möglichkeit wäre, einen weiteren Slab gleich dem 2. Slab zu machen, aber mit sehr kleinem Threshold. Die Maske, die unerwünschte Teile wegschneidet, müßte von Hand angepaßt werden. Alles außerhalb des Kopfes müßte von Hand schwarz gemalt werden, bevor das Skript weitermacht. Dann werden nur die fehlenden weißen Stellen im Inneren des Kopfes vom nächsten Slab ausgefüllt.
Im Augenblick werden alle weißen Bereiche mit dem Ergebnis von enfuse gefüllt. Das ist für den Hintergrund sehr schön, aber im Inneren des Kopfes an den markierten Stellen zu unscharf.
Du hast mich mal gefragt, warum ich in bash programmiere. Es ist einfach die einzige aktuelle Programmiersprache, die ich gut beherrsche. Vor Jahrzehnten hatte ich mal einen kleinen Einblick in C.
An dieser Stelle wäre es gut, eine GUI für das slabbing zu haben. bash ist da nur bedingt nützlich. Meinem Eindruck nach dürfte Python am ehesten für mich geeignet sein. Für imagemagick gibt es Python-Bibliotheken, das ist auch entgegenkommend. Jedoch ist der Sprung in eine neue Sprache recht groß.
Ich denke an eine GUI, die eine Bilderauswahl für die Slabs ermöglicht, sowie insbesondere einen mit der Maus bedienbaren Maskeneditor. Natürlich auch Parametereingabe für imfuse, Hintergrund etc.
Ich gucke gerade, ob ich ein sehr einfaches Bildbearbeitungsprogramm finde, das ich hierfür anpassen könnte und als Lernhilfe zum Einarbeiten taugt.
Ein gutes Ergenis,
Das finde ich auch. Sieht echt gut aus. Mit der Nutzung der Drehbank (Kreuzsupport) werden die Aufnahmen wesentlich genauer. Das merke ich auch beim alignment. Und anschließend beim fusing. Ich werde die Ameisenfotos noch mal mit dem Kreuzsupport machen.
sowie insbesondere einen mit der Maus bedienbaren Maskeneditor.
Zumindest das kann hugin. Aber Slabs nicht. Z.Z. nutze ich hugin immer häufiger, da auch die CPs in den Bildern angezeigt werden und mit CPFind und align_image_stack zwei Tools vorhanden sind. Was das Eine nicht kann schafft das Andere (aber nicht immer).
Ich hoffe, die Kommentierung im Script ist verständlich genug.
Ja. Mit welchen Parametern hast Du die Bilder hier erzeugt?
Perhaps an other way of slabbing can be interesting: ...
Also was ich sagen wollte ist:
Mit welchen Parametern hast Du die Bilder hier erzeugt?
Mit den Parametern, die zur Zeit gesetzt sind. Konkret:
Setting="croped_ant_enfuse"
case $Setting in
croped_ant_enfuse)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Threshold[1]="60"
Threshold[2]="50"
;;
Substacks von Bildausschnitten bilden. Z.B. Fühler über Auge oder Mund-Nase Bereich. diese Bildausschnitte mit geeigneten Parametern verarbeiten. Ergebnisse sind qualitativ gute Bilder von Teilen des gesamten Bildes Zum Schluss dann alle Einzelteile, ähnlich einem Panorama, zusammenfügen.
Ok, verstehe. Wenn ich eine interaktive GUI hinbekomme, könnte ich auch das als Option mit einbauen. Konzeptuell würde es genauso funktionieren wie mit den Threshold-Masken.
Jetzt habe icg mal Setting="bw"
ausprobiert und mehrere Fehlermeldungen bekommen:
imfuse: Montage /mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/_slab1/montage-dog-maskblur2-close=r2R2p0.c4a4dd.tif imfuse note: Applying --threshold=80
Ungültige oder ignorierte Fernsteueroption:--File:/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/_slab1/imfuse.dog=s1-S1.6_close=r2,R2,p0_maskblur=s2_threshold=p80,s2_bg=transparent_darkenmask_md586c81.tif Benutze --remote-help für die gültigen Fernsteueroptionen. imfuse: Saving mask to /mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/mask1.tif Ungültige oder ignorierte Fernsteueroption:--File:/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/mask1.tif Benutze --remote-help für die gültigen Fernsteueroptionen. imfuse note: Applying --background=transparent
Ungültige oder ignorierte Fernsteueroption:--File:/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/slab2.001_imfuse.dog=s1-S1.6_close=r2,R2,p0_maskblur=s2_threshold=p80,s2_bg=transparent_darkenmask_md586c81.tif Benutze --remote-help für die gültigen Fernsteueroptionen. imfuse note: Ready after 00:12:38
/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/slab2.001_imfuse.dog=s1-S1.6_close=r2,R2,p0_maskblur=s2_threshold=p80,s2_bg=transparent_darkenmask_md586c81.tif imfuse note: --slabs: Creating slab 2 / 2
imfuse ERROR: No images specified
Eine Ergebnisdatei wurde aber erstellt.
Jetzt habe icg mal Setting="bw" ausprobiert und mehrere Fehlermeldungen bekommen:
Das Setting war gar nicht für die Ameise gedacht, sondern für einen ganz anderen Stack (mit mehr Bildern).
Ungültige oder ignorierte Fernsteueroption:--File:/mnt/Daten/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/byrawtherapee/slab/cache.slab/slab2.001_imfuse.dog=s1-S1.6_close=r2,R2,p0_maskblur=s2_threshold=p80,s2_bg=transparent_darkenmask_md586c81.tif Benutze --remote-help für die gültigen Fernsteueroptionen.
Die Fehlermeldung kommt von geeqie, mit dem die Zwischenergebnisse angezeigt werden. Bei mir kommt diese Meldung nicht. Welche Version hast Du?
$ geeqie --version
Geeqie 1.6+git20210227-100bd6ae GTK3
Welche Version hast Du?
Ich habe die 1.3. Für OpenSUSE gibt es auch keine Neuere (laut Link von http://www.geeqie.org/) Solange es nur an Geeqie liegt, kann ich die Meldung ja ignorieren.
Bis auf croped_ant_finalblur
sehen die Ergebnisse alle gleich aus. Hätte ich den cache.slab löschen müssen?
Hätte ich den cache.slab löschen müssen?
Eigentlich nicht
Bis auf croped_ant_finalblur sehen die Ergebnisse alle gleich aus.
Der Hintergrund bei croped_ant_min und croped_ant_mean sollte aber deutlich anders sein!? croped_ant_enfuse_close6 verringert etwas die kleinen Fehler im Mund/Nase-Bereich, ist sonst aber gleich.
Die Ergebnisse mit *_finalblur müßte ich erst nochmal neu berechnen lassen, das waren Experimente, um diue Schnittkanten zu verbessern.
Die weichen Schnittkanten erzeugt jetzt Globalthresholdblur=2
. (Kann mit Thresholdblur[n]=sigma
pro Slab angepaßt werden).
Der Hintergrund bei croped_ant_min und croped_ant_mean sollte aber deutlich anders sein!?
Diese Voreinstellungen habe ich hier nicht.
Slab ist vom 08.05.21 06:31
Mit Setting=
kann zwischen folgenden Optionen ausgewählt werden:
croped_ant_enfuse
croped_ant_finalblur
croped_ant_enfuse_finalblur
bw
Diese Voreinstellungen habe ich hier nicht.
Oh, ok. Diese experimentellen Einstellungen habe ich zur Zeit:
croped_ant_enfuse)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Threshold[1]="60"
Threshold[2]="50"
;;
croped_ant_min)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Threshold[1]="60"
Threshold[2]="50"
Background="min"
;;
croped_ant_mean)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Threshold[1]="60"
Threshold[2]="50"
Background="mean"
;;
croped_ant_enfuse_close6)
Substack[1]="1,25"
Substack[2]="26,*"
Substack[3]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Substackargs[3]="--dog=s1 --maskblur --close=r6,R6"
Threshold[1]="60"
Threshold[2]="50"
Threshold[3]="50"
;;
croped_ant_enfuse_close10)
Substack[1]="1,25"
Substack[2]="26,*"
Substack[3]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3"
Substackargs[3]="--dog=s1 --maskblur --close=r10,R10"
Threshold[1]="60"
Threshold[2]="50"
Threshold[3]="50"
;;
croped_ant_finalblur)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3 --finalblur=s5"
Threshold[1]="60"
Threshold[2]="0"
;;
croped_ant_enfuse_finalblur)
Substack[1]="1,25"
Substack[2]="26,*"
Substackargs[1]="--dog=s1 --maskblur --close=r5,R5"
Substackargs[2]="--dog=s1 --maskblur --close=r3,R3 --finalblur=s5,p55"
Threshold[1]="60"
Threshold[2]="50"
;;
croped_ant_enfuse
gefällt mir am Besten, gefolgt von croped_ant_min
.
Die Fehler im Gesicht werden durch croped_ant_enfuse_close10
verbessert, ist aber grottenlangsam.
Diese experimentellen Einstellungen ...
Die habe ich jetzt übernommen. Und werde slab starten, wenn der PC wieder etwas Zeit hat.
Hier die neueste Ameise, bestehend aus 10 Ebenen/Slabs, gespeichert mit --layered
:
Parameter:
--wave --maskstat=r6 --maskblur --close --less --slabs --bg --threshold=p30 --layered
Fehler im Bild:
Jetzt Bearbeitung der Ebenen in gimp. Vorgehensweise:
Bild öffnen. Ein Dialog öffnet sich: "Aus TIFF importieren".
Rechts unten sind die Ebenen zu sehen.
Jetzt die obersten Ebenen eine nach der anderen abschalten. Es zeigt sich, daß die oberste Ebene ganz nutzlos ist. Hier ein Schnappschuß ohne die obersten 3 Ebenen:
Jetzt beginnt die Bearbeitung der 3. Ebene, um Löcher zu schließen:
Das Ergebnis nach der Bearbeitung mit transparentem Hintergrund:
Das Ergebnis nach der Bearbeitung mit enfuse Hintergrund:
Das im vorherigen Post beschriebene Vorgehen hat sich etwas geändert, die Beschreibung muß ich noch anpassen.
Mit diesen Parametern ist mir ein schönes Bild der Ameise gelungen, ohne slabs und ohne weitere Bearbeitung:
--wavelet=p5 --denoise=50 --less=p10 --maskblur --maskstat --close=r4,R4 --threshold=10% --bg=enfuse
Dasselbe ohne --bg=enfuse
:
Hier die Ameise mit Hilfe von slabs und Nachbearbeitung der Ebenen in gimp, am Ende noch den Rand etwas weichgezeichnet:
--morphology=edgeout,r1 --threshold=t30 --maskblur --maskwave=p25 --less=p20 --layered --slabs
Der Saum um den Fühler ist fast verschwunden. --mophology=edgeout
hat hier sehr geholfen. Ähnlich saumlose Ergebnisse habe ich mit --morphology=tophat
.
Mit diesen Parametern ist mir ein schönes Bild der Ameise gelungen, ohne slabs und ohne weitere Bearbeitung:
Das sieht ja hervorrangend aus. So ein Ergebnis habe ich mit Zerene nicht hinbekommen.
Ich versuche mal das hier nachzuvollziehen.
...
Hat nicht geklappt: Unbekannte Option »--denoise=50
Ohne denoise dann das: imfuse ERROR: threshold does not take argument percent
Ich habe die Version 0.8.1-beta.
Das sieht ja hervorrangend aus.
Danke für die Blumen. :-)
Ich versuche mal das hier nachzuvollziehen.
Ich habe in den letzten Tagen viel an imfuse verändert, ich empfehle ein Update.
Die Option --denoise
heißt jetzt --maskwave
.
Die Reihenfolge einiger Optionen macht jetzt auch einen Unterschied,
--maskwave=50% --maskblur --maskstat --close=r4,R4
ergibt ein anderes Ergebnis als
--maskstat --maskblur --maskwave=50% --close=r4,R4
Für das gleiche Ergebnis wie oben ändern sich die Optionen zu:
--grayscale=RMS --wavelet=5% --maskstat --maskblur --maskwave=50% --close=r4,R4 --less=10% --threshold=t10,s2 --bg=enfuse
Zu den Veränderungen von imfuse insgesamt:
imfuse --help
sind die Verarbeitungsschritte die Kapitel zu merge
und postprocessing
.
--less --maskwave
und --maskwave --less
macht keinen Unterschied, die passieren in verschiedenen Verarbeitungsschritten.--maskwave --maskblur
und --maskblur --maskwave
macht einen Unterschied, beide passieren im Schritt "merge".--grayscale=RMS
.So, jetzt habe ich es hier auch hinbekommen (imfuse 0.8.2-beta). Wirklich beeindruckend. Hat aber auch fast eine Stunde gedauert (imfuse: Ready after 00:53:14).
Es wir aber zur Zeit wohl nur ein Prozessorkern beansprucht. Ich konnte also ganz normal weiterarbeiten.
So, jetzt habe ich es hier auch hinbekommen (imfuse 0.8.2-beta). Wirklich beeindruckend.
Sehr schön!
Hat aber auch fast eine Stunde gedauert (imfuse: Ready after 00:53:14). Es wir aber zur Zeit wohl nur ein Prozessorkern beansprucht. Ich konnte also ganz normal weiterarbeiten.
Eigentlich sollte ImageMagick die meiste Zeit alle Kerne nutzen. Bei mir tut es das bei den meisten Operationen.
Hast Du die selbe Version wie ich? Also den "static build", das magick
, die Nummer 1 in der Liste von https://imagemagick.org/script/download.php ?
$ magick -version
Version: ImageMagick 7.1.0-51 Q16-HDRI x86_64 1cf41df5d:20221013 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib djvu fontconfig freetype jbig jng jpeg lcms lqr lzma openexr png raqm tiff webp x xml zlib
Compiler: gcc (7.5)
Ein wichtiges Detail in der Versionsausgabe ist OpenMP
, das ImageMagick erlaubt, mehrere Kerne zu nutzen.
Bei mir dauert die Berechnung nur noch ca. 15 Minuten.
Die Festplatte macht auch einen Unterschied, SSD ist klar im Vorteil.
Das hatten wir ja schon mal. Bei mir (Opensuse) werkelt eine andere Version:
Version: ImageMagick 7.1.0-9 Q16-HDRI x86_64 2021-10-03 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw rsvg tiff webp wmf x xml zlib
Compiler: gcc (7.5)
Jetzt habe ich mal das AppImage heruntergeladen und verwendet.
holger@localhost:~/bin> imfuse_0.8.2-beta_HD.sh --grayscale=RMS --wavelet=5% --maskstat --maskblur --maskwave=50% --close=r4,R4 --less=10% --threshold=t10,s2 --bg=enfuse /home/holger/Fotos/stacks/20210417_Ameise3_4_Mikroskopobjektiv_nonplan/D4174*.JPG
...
imfuse: Ready after 00:38:22
...
Schon deutlich schneller.
Schon deutlich schneller.
Ich habe eigentlich noch mehr Geschwindigkeitsgewinn durch OpenMP erwartet. Wie viele Kerne hast Du? Bei mir sind es 4, virtuell 8.
Schreibt imfuse bzw. ImageMagick viel auf die Festplatte? Wenn es keine SSD ist, macht das einen großen Unterschied.
Falls im Ordner ./cache.imfuse.*
Dateien mit magick
und einer langen Nummer auftauchen, schreibt ImageMagick einen Teil seiner Daten in den Cache. Das kann passieren, wenn der Arbeitsspeicher knapp wird oder ein Arbeitsspeicher-Limit für ImageMagick in einer Konfigurationsdatei festgelegt ist.
Es könnte auch sein, daß enfuse für das Hintergrundbild sehr lange dauert, insbesondere, wenn der RAM knapp wird und imfuse die Bilder erst in Teile aufsplitten muß.
Ich habe eben ein Update 0.8.3 hochgeladen, daß den Speicherbedarf der Bilder geringer einschätzt. Außerdem wird die benötigte Zeit für enfuse angezeigt.
Die Option --close
hat einen neuen Namen --maskmorph
und erlaubt jetzt noch ein paar Operationen mehr.
Für die Ameise ändern sich die Optionen also zu:
--grayscale=RMS --wavelet=5% --maskstat --maskblur --maskwave=50% --maskmorph=r4,R4 --less=10% --threshold=t10,s2 --bg=enfuse
Ohne --grayscale=RMS
wird das Ergebnis ein klein wenig besser, die Berechnung dauert aber auch länger.
Es könnte auch sein, daß enfuse für das Hintergrundbild sehr lange dauert, insbesondere, wenn der RAM knapp wird und imfuse die Bilder erst in Teile aufsplitten muß.
Ne, das wird's nicht sein. Ich habe jetzt 32GB Speicher und einen i5-11600 mit 12 Kernen (ich glaube, es sind aber nur 6 echte Kerne) und einer SSD.
Wenn VirtualBox (Windows) hier fertig ist, werde ich noch mal einen Versuch starten.
Ok, dann bist noch ein Stück weit besser ausgestattet als ich. Hier auch 32 GB RAM, und ein i7 mit 4 Kernen und weniger MHz. Oder hast Du die ganze Ameise berechnen lassen, nicht nur den hier gezeigten Ausschnitt? Dann könnte das mit der Zeit wieder passen.
Neues Update zu imfuse 0.8.5. Wesentliche Neuigkeiten:
--cutwave
, --cutmorph
und --cutcmd
--less
heißt jetzt --cutless
--cut*
Optionen können jetzt mehrfach angegeben und in der Reihenfolge geändert werden.Ich präsentiere stolz eine Ameise mit --cutwave
:
--wavelet=p5 --darkness=w25 --maskwave=p20 --maskblur=s2 --cutless=p12 --cutwave=100%
Wenn ich jetzt noch den Saum um den Fühler weiter reduzieren kann, ist das Bild nahezu perfekt.
Der Saum wird im Moment vor allem durch --cutless
ins Bild geholt; aber ohne --cutless
ist der Fühler durchsichtig.
Ich präsentiere stolz eine Ameise mit
--cutwave
:
Sieht echt super aus.
--wavelet=p5 --darkness=w25 --maskwave=p20 --maskblur=s2 --cutless=p12 --cutwave=100%
Das habe ich hier auch mal versucht. Aber eine Fehlermeldung bekommen:
imfuse: Evaluating 60 / 60: mpr:mergemask-wavelet-darkness-maskwavep20-maskblurs2.59950b.0060
/home/holger/bin/imfuse_0.8.5-beta.sh: Zeile 516: bc: Kommando nicht gefunden.
imfuse ERROR: traperror(): Command at Line 516 returned with error code 127:
bc -l
1640 - ::compare::level_masks::focus_merge_masks::focus_main::main::main
imfuse: Received SIGINT
Was ist bc?
Oder hast Du die ganze Ameise berechnen lassen,
Ja, die ganze.
Was ist bc?
bc
ist ein Taschenrechner für die Kommandozeile, und auf den meisten Systemen vorinstalliert.
imfuse benutzt es nur vereinzelt, ich muß wohl eher auf awk
als Rechner ausweichen, um nicht von bc
abhängig zu sein.
Für's erste könntest Du bc
einfach aus der Paketverwaltung installieren.
Ein bißchen konnte ich den Saum noch reduzieren, --cutmorph=erode
schneidet Säume ab:
--wavelet=p5 --darkness=w25 --maskwave=p20 --maskblur=s2 --cutless=p10 --cutwave=100% --cutmorph=erode,r2,r2 --finalblur=t30,s5
Jetzt hat's geklappt (mit bc).
imfuse: Ready after 01:05:45
Tolles Ergebnis!
Tolles Ergebnis!
:-)
Ich habe mir auch mal die Fliege vorgenommen. Mit denselben Parametern wie für die Ameise gab es bereits ein gutes Ergebnis. Mit ein wenig Herumprobieren an den Parametern konnte ich das noch ein bißchen steigern:
--wavelet=p5 --darkness=w40 --maskwave=p2 --maskblur=s2 --cutless=p14 --cutwave=100% --cutmorph=r1 --finalblur=t38,s9
Rechenzeit ca. 30 Minuten.
P.S: bc
wird jetzt nicht mehr gebraucht.
Die Option --cache
gibt es inzwischen wieder, und mit einer SSD Festplatte ist sie fast genauso schnell wie Berechnung nur im RAM. Bei zukünftigen Fehlern, oder falls Du Parameter ändern willst, ist --cache
sehr nützlich, um spätere Arbeitszeiten abzukürzen.
Der Cache wird nur schnell unglaublich groß, weil imagemagick direkt unkomprimierte Speicherkopien auf die Platte schreibt, die es ohne Rechenaufwand direkt wieder laden kann. Vorhin habe ich einen Cache der Größe 210GB gelöscht.
Wg der Fliege ziehe ich mal um zu Finding good parameters: fly on yellow background
BTW: Ich habe mich mal mit Helicon an die Ameise gemacht. Auch hier wird der kritische Bereich (Fühler vor Auge) nicht korrekt dargestellt. Imfuse ist hier das einizge Tool, dass das kann.
Wg der Fliege ziehe ich mal um
Dieser Thread ist ja auch schon zu einer ziemlich langen Ameisenstraße geworden.
BTW: Ich habe mich mal mit Helicon an die Ameise gemacht. Auch hier wird der kritische Bereich (Fühler vor Auge) nicht korrekt dargestellt. Imfuse ist hier das einizge Tool, dass das kann.
:-D Ich habe eben Zerene noch mal ausprobiert, das kann das nur mit Slabbing/Substacks und viieel manueller Nacharbeit. Neu ist stacky, das kann das aber auch nicht, soweit ich bisher sehe: https://www.bewie.de/stacky.php
Noch eine Ameise: --wave=p100 --cutwave=p100
Das Ergebnis sieht dem von enfuse sehr ähnlich. Schön ist, daß der Aufruf aus nur zwei einfachen Optionen besteht.
--cutless
, um den Fühler zu verstärken, ist etwas tricky, da bin ich noch am probieren, wie sich ein gutes Ergebnis erreichen läßt. Ohne zusätzliche Optionen wird das leider nichts.
Hello, in the last weeks I have taken some stacks of insects. One of the problems I got is that foreground and background objects are not precise separated. As you can see here at this ant. The feeler should be in front of the eye.
This image is done by enfuse. Do you have a suggestion how to get a better result with imfuse?
Greetings Holger