Hauptmenü

Turbo-Stacking mit PICOLAY

Begonnen von Heribert Cypionka, Mai 30, 2009, 22:24:44 NACHMITTAGS

Vorheriges Thema - Nächstes Thema

Heribert Cypionka

Liebes Forum,

alles neu macht der Mai. Jetzt ist er bald vorüber, und ich habe meine neue PICOLAY-Version ins Netz gestellt: http://www.picolay.de.
Es gibt zahlreiche, auch fundamentale Änderungen:

- Neue Oberfläche: hoffentlich übersichtlicher, Stacken kann man jetzt z.B. nach dem Laden von Bildern mit einem einzigen Tastendruck (F1-Taste)

- Neuer Stacking-Algorithmus: Es werden nicht mehr alle Bilder einzeln bewertet, sondern das Ergebnis wächst kontinuierlich. Glätten (mitteln) entfällt zwischendurch, allerdings wird die Konsistenz neu einzubringender Pixel überprüft. Man kann allerdings am Ende immer noch glätten, wo nötig. Stacking mit umgekehrter Bildfolge (top-down) kann jetzt zu anderen Ergebnissen führen.

- Man kann den Aufbau des Ergebnisses als Film mitverfolgen, allerdings geht das bei kleinen Bildern so schnell, das man sich den Prozess langsamer wünschen würde.

- Bildverschiebungen und unterschiedliche Helligkeiten können jetzt separat ausgeglichen werden.

- PICOLAY war wohl schon der schnellste Stacker, ist aber noch schneller geworden.

- Die dreidimensionalen Darstellungsmöglichkeiten wurden leicht weiterentwickelt.


Hier unveränderte Ergebnisse die mit PICOLAY, Zerene Stacker und CombineZP erstellt wurden.








Hier ein Film, der drei Stacking-Verfahren mit 83 Bildern in Echtzeit zeigt. Zunächst Suche nach den dunkelsten Pixeln im Stapel, dann gewichtete Mittelwerte scharfer Pixel, und am Schluss Suche nach scharfen Bereichen. Alles zusammen ist in einer halben Minute fertig.

http://www.icbm.de/pmbio/picolay/tutpics/picolaydemo.avi

Für einen fairen Vergleich kann man die 83 Bilder dazu hier http://www.icbm.de/pmbio/picolay/tutpics/coscinodiscus83x.zip herunterladden. Vielleicht können ja die Experten mit anderen Stackern noch mehr daraus machen.

Noch ein Hinweis: PICOLAY-Stack-Ergebnisse enthalten nichts außer Original-Pixeln u. ggf. gemittelte Pixel, während alle anderen Stacker die Ergebnisse aufhübschen. Das kann man mit PICOLAY aber auch erreichen. Einfach das Ergebnis in der Liste anklicken und 'Enhance Image' durchführen. Ich brauche nie Photoshop o.ä. für solche Zwecke...

Beste Mikrogüße

Heribert Cypionka

rekuwi

Danke Herr Cypionka,

habe mir gleich das neue PICOLAY runtergeladen - ging wie Lottchen!

Liebe Grüße
Regi

***

Beitragsinhalt auf Wunsch des Autors gelöscht

peter-h

Hallo Herr Cypionka,

immer wieder sehr interessant und erfreulich dass es Neuerungen und Verbesserungen gibt. Aber auch gleich die Frage, was mache ich falsch? Bilder nur als Link, da sie über 800 Pixel groß sind.

Erstes Bild aus 10 Einzelaufnahmen mit neuem Picolay gestackt , einfach F1 gedrückt.
http://www.mikroskopie-ph.de/Newport-PIC-1.jpg

Zweite Version, gleicher Bildstapel mit CombineZM "do stack"
http://www.mikroskopie-ph.de/Newport-CZM-1.jpg

In beiden Fällen nur auf 1024 x 768 Pixel verkleinert, keine Nachbearbeitung !
Ist eine Grundeinstellung falsch, oder welche Parameter sollten/müssen angepaßt werden?

Schöne Pfingsten und Grüße
Peter Höbel


Heribert Cypionka

#4
@ Herrn *****

Vielen Dank für den Vergleich! Ich bin verblüfft über die Ähnlichkeit des gestackten Bildes mit dem PICOLAY-Ergebnis, da ich mich mit Helicon Focus noch nie befasst habe. Da müssen ähnliche Algorithmen im Spiel sein. Wie lange braucht Helicon Focus für das Stacken der 83 Bilder?

Die 3-D Projektion sieht allerdings - na ja - skurril aus. Hier zwei echte 3-D-Bilder (für die Anaglyphenbrille), beide aus demselben Stapel erzeugt. Für das zweite habe ich die Hologramm-Funktion genutzt und den Stapel von unten betrachtet.






@ Herrn Höbel

Ihre kürzlich hier aufgeworfenen Fragen (https://www.mikroskopie-forum.de/index.php?topic=1167.0) haben mir bei der Entwicklung des Programms (bei der Glättungsfunktion) sehr geholfen - noch einmal vielen Dank dafür!

Zu Ihrer heutigen Frage: Ich behaupte nicht, dass der erste mit F1 ausgelöste Versuch das perfekte Resultat liefert. Das Besondere bei PICOLAY ist ja, dass man die Parameter flexibel einstellen kann - es sind aber nur noch wenige zu betrachten. Das Programm ist so schnell, dass ich schon vier bis fünf Kombinationen getestet habe, bevor Zerene Stacker oder CombineZ fertig sind. Stellen Sie doch auch Ihren Stapel ins Netz, damit wir ihn bearbeiten können. Die Bilder lassen sich mit PICOLAY und der Funktion 'Edit | Crop all images' blitzartig beschneiden (einfach zunächst mit der Maus einen Rahmen ziehen), so dass sie unter 800 Pixel Größe bleiben.


Pfingstliche Grüße

Heribert Cypionka

peter-h

Guten Morgen Herr Cypionka,

nach Ihrem Vorschlag habe ich die (nur) 10 Bilder beschnitten und auf mein Webspace gestellt.
http://www.mikroskopie-ph.de/Picolay-Test.zip

Sicher finden Sie schneller Fehler meiner Einstellung als ich durch wildes Parameterschieben  :)
Ein sehr großer Vorteil von Picolay ist wirklich die hohe Geschwindigkeit !

Schöne Pfingstgrüße
Peter Höbel


Heribert Cypionka

Lieber Herr Höbel,

vielen Dank für den Stapel - wegen der schiefen Beleuchtung kein leichtes Objekt! Wenn man durch die Bilder wandert, erkennt man eine Wanderung von links oben nach rechts unten. Die kann man mit PICOLAY unter 'Stack operations'  durch die Funktion  'Auto-align x-/y-positions' kompensieren. Am einfachsten dazu die Taste F4 drücken - und schon hat man die korrigierten Bilder in der Liste.
(Ich muss zugeben, dass PICOLAY bei dieser Art der Korrektur noch (!) nicht perfekt ist, da es keine Größenveränderungen und Verdrehungen ausgleichen kann. )

Um die richtigen Parameter beim Stacken zu finden muss man nicht wild ausprobieren. Voreingestellt ist das kleinste Fenster (Filter frame = 2). Man erhöht den Wert zum Testen z.B. auf 5 und 10 und sieht was passiert. Dann schaltet man den Minimum-Kontrast hinzu, um störende Hintergrund- und Randeffekte zu beseitigen. Am Schluss kann man ausprobieren, ob eine Glättung (Smooth map) das Ergebnis verbessert. Unterwegs hat man ja alle Ergebnisse in der Liste und kann die vergleichen in welche Richtung man weitergehen sollte.

Noch ein Tipp zum Bewahren des endgültigen Ergebnisses. Ich mache einen Doppelklick auf den Namen in der Liste. Dadurch wird es markiert. Dann gehe ich auf  'Image list | Rename marked files'.  Dort ist voreingestellt: Ersetze 'p#' durch gar nichts. Einfach mit OK bestätigen, und schon ist dieses File vor dem automatischen Löschen beim Verlassen des Programms geschützt.

Hier nun das Ergebnis mit den Parametern (Filter 9, Minimum 14, smooth)




Hier für die Rot-Cyan- oder Rot-Grün-Brille:




und noch einmal in 3-D von oben und unten betrachtet für diejenigen, die stieren oder schielen können:




Beste Mikrogrüße

Heribert Cypionka

bewie

Hallo,

picolay scheint ja sehr eindrucksvoll zu arbeiten und die Ergebnisse sind ebenfalls eindrucksvoll. Es hat mich aber jetzt doch mal gejuckt, mein eigenes Programm (die neueste Version von MicropicS) auf den Stapel anzuwenden.

Hier das Ergebnis, und zwar erst der pure Stack (Dauer 3,5 Sekunden einschließlich Maskenerstellung), dann für den plastischeren Eindruck eine ebenengewichtete Helligkeitsmodifikation und aus demselben Grund am Ende noch ein (derzeit noch ziemlich primitives) Raytracing. Arbeitszeit bis zum letzten Bild: 15 Sekunden. Allerdings habe ich auch meinen neuesten und schnellsten Rechner verwendet.







Typische 3D-Bilder, wie picolay, kann das Programm allerdings nicht errechnen und ich glaube auch nicht, dass ich mich damit noch befassen werde.

Schöne Grüße
B. Wiedemann

Heribert Cypionka

Lieber Herr Wiedemann,

jetzt bin ich doch beeindruckt. Einige Details findet Micropics klar am besten! Ich würde mich gern mal mit Ihnen über die Algorithmen unterhalten...

Hoch gestapelte Mikrogrüße

Heribert Cypionka


bewie

Lieber Herr Cypionka,

ein Lob aus Ihrer Feder freut mich natürlich ganz besonders! Womit programmieren Sie eigentlich? Vielleicht macht es ja Sinn, wenn ich Ihnen ein paar Codeschnipsel zuschicke. Ansonsten können wir ja über PM in Kontakt treten, um das Forum nicht mit solche Details zu langweilen. Hier nur ein kurzer Anriss. Die Unterschiede zwischen unseren Ansätzen dürften allerdings im Detail liegen, die grundsätzlichen Lösungswege sind vermutlich überall die gleichen.

Zunächst die Schärfeerkennung. Ich kann bei MicropicS unterschiedliche Algorithmen zur Schärfeerkennung auswählen. Der hier verwendete Algorithmus funktioniert im Prinzip so: Zunächst wird das Bildrauschen mit einem Binomialfilter reduziert. Dann werden innerhalb des Filterfensters im senkrechten und waagerechten Zentralbalken die Absolutwert der Differenzen aufeinanderfolgender Bildpunkte aufsummiert. Das ganze zweimal: Einmal mit einer Filterbreite (=Balkenlänge) von 5 Pixeln, ein zweites Mal mit einer frei wählbaren Filterbreite, sofernd diese >5 ist. So entsteht das zweidimensionale Array der Primärmaske, die aus Gründen der Praktikabilität auf einen Wertebereich von 0..255 reduziert wird. Dabei kann man noch festlegen, wie weich oder hart die Maske ausfallen soll. Programmtechnisch wird das über eine Untergrenze erledigt, unterhalb der eine Schärfe von 0 postuliert wird. Diese Untergrenze wird anhand der Benutzerwahl für die Härte und der Verteilung der Maskenwerte festgelegt. Zusätzlich lässt sich die Maske noch mittels einer Gradationskurve härter oder weicher gestalten. Am Ende kann man die Maske noch mit verschiedenen Operationen wie Dilatation, Erosion und Binomialfiltern verändern, aber diese Möglichkeiten verwende ich praktisch nie, da sie das Ergebnis in aller Regel verschlechtern und nicht verbessern.

So viel zur Erstellung der Schärfemasken. Zusammengefügt werden die Bilder dann nach dem Prinzip des gewichteten Mittelwerts, allerdings mit unterschiedlichen Ansätzen und wählbaren Parametern. Programmtechnisch werden die Maskenpixel entweder als multiplikatives oder (in den allermeisten Fällen, so auch hier) als exponenzielles Gewicht verwendet. Für die notwendige Geschwindigkeit sorgt dabei eine Lookup-Tabelle. Der Benutzer kann außerdem einen Parameter verändern, um beispielsweise das obere Bild im Stapel höher zu gewichten und auf diese Weise weiter unten liegende Details stärker zu unterdrücken. Das ist ja gerade bei mikroskopischen Bildern von Bedeutung. Es kommt also ebenso wie bei Ihnen sehr darauf an, wie herum der Stapel geschichtet ist.  Bei richtiger Parametrierung (auch bei der Maskenbildung) ist dann eine Glättung nur noch in den Bereichen geringer Schärfe notwendig. Dies wird von vornherein durch eine Modifikation der Lookup-Tabelle im unteren Bereich erzielt und funktioniert am besten bei exponenzieller Gewichtung. Denn dann lassen sich die teilweise harten Sprünge zwischen Pixelbereichen mit niedriger Schärfe (oder genauer gesagt: in fast homogenen Flächen) gut glätten, ohne dass die scharfen Bereiche verwischt werden - sie liegen weit genug über diesem Niveau, so dass sie nicht unter der Hintergrundglättung leiden.

Auf diese Weise entsteht ein zweidimensionales Floating-Point-Array (bei exponenzieller Gewichtung mit den Logarithmen der Bildpunkte), aus dem sich am Ende (aber auch nach jedem Einzelbild) das Ergebnisbild rekonstruieren lässt.

Anschließend gibt es dann noch diverse Nachbearbeitungsmöglichkeiten, beispielsweise ebenenabhängiges Abdunkeln oder Einfärben oder auch das (bisher noch rudimentäre) Raytracing.

So viel fürs erste - vielleicht bleiben wir ja in Kontakt.

Schöne Grüße
B. Wiedemann 

bewie

Lieber Herr Cypionka,

jetzt muss ich mich doch entschuldigen, die Zeitangaben sind mir in der Eile um eine Größenordnung verrutscht: Das Stacken dauert natürlich nicht nur 3,5 Sekunden, sondern 35 Sekunden. Bis zum letzten Bild sind es dann insgesamt rund 150 Sekunden, wenn man sich beim Auswählen der Parameter Zeit lässt. Ich vermute mal, da ist Picolay schneller.

Sorry und beste Grüße
Bernd Wiedemann

***

Beitragsinhalt auf Wunsch des Autors gelöscht

Heribert Cypionka

Liebe Herr Wiedemann,

vielen Dank für Ihre Darstellung! Über Details der Programmierung sich hier auszulassen ist sicher nicht für alle interesssant. Aber ich habe Ihren Ausführungen drei Ideen entnommen, die ich umzusetzen versuchen werde: Explizit höhere Gewichtung der oberen Schichten [ein wenig davon habe ich bei der neusten Methode schon drin, da die wachsenden Strukturen sich vernetzen, aber sie werden nicht höher bewertet, als das, was unten nachkommt], exponenzielle Wichtung der Kontrastwerte und Look-up-Tabelle für die schnelle Berechnung. Das werde ich sicher demnächst auprobieren!

Ich arbeite übrigens mit Delphi, und immer noch mit der Version 5, da die neueren Versionen eine komplexere Umgebung  bieten, die ich nicht brauche und viel größere und langsamere Runtime-Versionen erzeugen.

@Herrn ***** & Herrn Wiedemann

Der PICOLAY-Demo-Film mit drei verschiedenen Methoden hintereinander ist ungeschnitten aufgenommen (auf meinem >3 Jahre alten Rechner) und in Echtzeit gezeigt: 25 sec incl. Umschalten zwischen den Methoden :-))
http://www.icbm.de/pmbio/picolay/tutpics/piclaydemo.avi


Beste Mikrogrüße

Heribert Cypionka

***

Beitragsinhalt auf Wunsch des Autors gelöscht

bewie

Lieber Herr Cypionka,

das ist ja praktisch, ich arbeite auch mit Delphi. Zwar mit einer neueren Version, aber ein großer Teil des Pascal-Codes dürfte ohne weiteres übertragbar sein. Ein Problem könnte allenfalls die Bildmaschine sein, die ich verwende und die einen weiterentwickelten Ersatz für die Delphi-Bitmap bietet. Ich schicke Ihnen nächste Woche mal ein paar Code-Schnipsel zu, diese Woche komme ich leider nicht mehr dazu, den Kram herauszusuchen.

Hier übrigens noch ein Bild, das durch multiplikative Verknüpfung des Ergebnisbildes mit der Summenmaske entsteht und das den räumlichen Eindruck noch hervorhebt, allerdings auch deutlich stärker mit Artefakten belastet ist.



Beste Grüße
Bernd Wiedemann