Frage

Ich habe für die Durchführung Mikroskopie meine eigene Software in C # geschrieben. Sehen Sie diese Screenshot .

Die Bilder, die dort zu sehen, können die gleichen Probe sind aber durch physikalisch verschiedene Detektoren aufgezeichnet. Es ist von entscheidender Bedeutung für meine Experimente, die diese Bilder genau ausgerichtet sind. Ich dachte, die einfachste wäre, irgendwie zu mischen / subtrahiert die beiden Bitmaps, aber das macht mir keine guten Ergebnisse. Deshalb bin ich auf der Suche nach einem besseren Weg, dies zu tun.

Es könnte nützlich sein, darauf hinzuweisen, dass die Bilder als Arrays von Intensitäten im Speicher vorhanden sind und in Bitmaps für On-Screen-Malerei auf meine selbst geschriebene Bildsteuerung umgewandelt werden.

Ich würde jede mögliche Hilfe sehr schätzen!

War es hilfreich?

Lösung 2

Ich habe um dieses vor einiger Zeit zu lösen ... Da muß ich nur bestätigen, dass zwei Bilder von zwei Detektoren perfekt ausgerichtet sind, und da ich sie nicht versuchen und ausrichten, wenn sie nicht, dass ich es wie folgt gelöst:

1) Verwenden Sie die Aforge Rahmen und gelten ein Graufilter auf beiden Bildern. Dadurch wird die RGB-Werte für jedes Pixel im Durchschnitt. 2) Auf einem Bild, das ein ChannelFilter gilt nur den roten Kanal zu halten. 3) Auf der anderen Bild, gelten einen ChannelFilter nur den grünen Kanal zu halten. 4) Both Bilder.

Hier sind die Filter, die ich verwendet habe ich es dem Leser überlassen, sie anzuwenden, wenn nötig (es ist trivial und es gibt Beispiele auf der Aforge Website).

AForge.Imaging.Filters.IFilter filterR = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.IFilter filterG = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.GrayscaleRMY FilterGray= new AForge.Imaging.Filters.GrayscaleRMY();
AForge.Imaging.Filters.Add filterADD = new AForge.Imaging.Filters.Add();

Wenn signifikante Merkmale in beiden Bildern vorhanden sind, ich überprüfen möchten, werden sie in Gelb zeigen, also genau das, was ich brauche.

Vielen Dank für die Eingabe!

Andere Tipps

Wenn die Bilder sind die gleiche Ausrichtung und gleiche Größe, aber leicht verschoben vertikal oder horizontal, können Sie Kreuzkorrelation verwenden, um die beste Ausrichtung zu finden?

Wenn Sie wissen, dass Merkmale in dem gelben Kanal aufreihen müssen zum Beispiel füttern nur die Gelb-Kanäle in die Kreuzkorrelationsalgorithmus und dann die Spitze in der Folge zu finden. Der Peak tritt bei der Offset in dem die beiden Bilder am besten in einer Reihe aufstellen.

Es funktioniert sogar mit verrauschten Bildern, und ich vermute, dass es für die Bilder selbst arbeiten, die deutlich unterschiedlich sind, wie in dem Screenshot.

MATLAB Beispiel: Registrieren einer Bild Verwendung von normalisierten Kreuzkorrelation

Wikipedia nennt dies " Phasenkorrelation " und beschreibt auch macht es maßstabs und rotationsinvariante :

  um zu bestimmen, Drehung und Skalierung Unterschiede zwischen zwei Bildern, indem zuerst die Umwandlung von Bildern zur Anmeldung Polarkoordinaten

Das Verfahren kann erweitert werden. Durch Eigenschaften der Fourier-Transformation können die Rotations- und Skalierungsparameter in einer Weise invariant Übersetzung bestimmt werden.

So die Detektoren sind unterschiedlich, so wird die Ausrichtung etwas falsch sein, in diesem Pixel (256.512) in Bild 1 könnte ein Merkmal für Pixel (257.513) in Bild dargestellt seine 2. Ist das das Problem? Was ist Vergrößerung? Wenn der Detektor unterscheidet, könnte die Vergrößerung nicht etwas anders sein als gut?

Wenn Sie so etwas wie die oben bedeuten, und die Beurteilung von Ihrem Screenshot, sollte es nicht allzu schwierig sein, die Zentren der 4 oder 5 Bereiche höchster Intensität zu finden - die Daten normalisieren und das gesamte Bild durch für Blöcke suchen von 9 benachbarten Pixeln mit der höchsten Durchschnittsintensität. Beachten Sie die Mittelpixel von vier oder fünf dieser Merkmale für jedes Bild. Dann berechnet die Entfernung zwischen jedem Satz von Pixeln zwischen den beiden Bildern.

Wenn der Abstand 0 für alle Sätze, sollten die beiden Bilder in Ausrichtung sein. Wenn der Abstand konstant ist, alles, was Sie tun müssen, ist ein Bild zu bewegen, dass der Abstand. Wenn der Abstand variiert, müssen Sie ein Bild, um die Größe, bis er konstant ist, und dann schieben Sie die Funktionen zusammenpassen. Dann können Sie die Intensitätswerte der beiden Bilder im Durchschnitt, da sie in Ausrichtung sein sollte.

Das ist, wie ich anfangen würde, sowieso.

Wenn die Bilder aus verschiedenen Sensoren erzeugt wird, dann wird das Problem schwierig sein, im Allgemeinen. für Sie besonders seit einem Ihrer Bilder scheint eine Menge Lärm zu haben.

Unter der Annahme, es gibt kein Verziehen oder Rotation in er Sensoren, dann würde ich vorschlagen, dass Sie zunächst die Intensitäten jedes Bildes normalisieren. Dann finden Sie die Verschiebung, die den Fehler zwischen den Bildern minimiert. Der Fehler kann euklidische sein (das heißt die Gesamtsumme der quadrierten Differenzen jeden Pixel). Das ist für mich zumindest ist die Definition der Ausrichtung.

Die einzige Möglichkeit, ausrichten kann, ist, wenn es eine Funktion in den Bildern ist, die (oder mit einer bekannten Transformation) als identisch bekannt ist. Ein gemeinsamer Ansatz ist etwas, in dem Bild zu setzen - zum Beispiel hat die Bildaufnahme ein Alignment Artefakt hinzufügen -. Etwas leicht zu erkennen und die Transformation herauszufinden erforderlich, um das Bild zu normalisieren

Ein gängiges Beispiel ist + Markierungen an den Ecken zu setzen. Sie können auch Barcodes zu diesem Zweck manchmal gebraucht.

Ohne diesen Artefakt, es hat etwas in dem Bild, deren Größe und Ausrichtung bekannt ist (und das ist in beiden Bildern).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top