Ich habe viele Beiträge zu diesem Thema gesehen, aber dieses hier ist anders. Mein Code funktioniert für ein Bildpaar, aber nicht für ein anderes Bildpaar.
Später möchte ich Videoeingänge von zwei Kameras in einen Stereoausgang umwandeln. Ich habe das ausprobiert, aber das hat auch das selbe Problem wie die unten gezeigten Bilder (zweites Bildpaar).
Die folgenden Bilder geben die erwartete Ausgabe an
Die folgenden Bilder zeigen eine falsche Ausgabe
Wie kann ich meinen Code korrigieren, damit er für alle Bilder funktioniert?
Hier ist mein Code
%Vor%Betrachten Sie beide Bilder in Graustufen, nach der Normalisierung - genau wie Ihr Algorithmus es sieht. Zumindest würde ich damit anfangen.
Es nimmt ein graues Bild und erkennt Grenzen. Da alles normalisiert wurde, sind wahrscheinlich Ränder aus dem Hintergrund besser zu sehen als die aus Ihrem realen Objekt.
Um das zu beheben, können Sie einen anderen Algorithmus wie Hintergrundsubtraktion verwenden. Ich hoffe, das hilft.
StereoBM berechnet die Korrelation zwischen zwei Bildern. Im zweiten Paar haben Sie Muster sichtbar an der Wand - und das kann zu Problemen führen (bessere Korrelation mit einem anderen Musterelement). Wie Sie sehen können, bleibt Ihre Pflanze schwarz (am weitesten entfernt, die geringsten Abstände zwischen den entsprechenden Punkten). In der digitalen Bildkorrelation sind die mehr zufälligen Intensitätsverteilung im Bild die besseren Ergebnisse. Es gibt viel Forschung darüber, dass spezielle Zufallsmuster zum Objekt hinzugefügt werden, um die Zufälligkeit der Intensitätsverteilung zu erhöhen.
Sie können dieses Problem beheben, indem Sie maximale Abstandsbeschränkungen hinzufügen oder Ihr Bild mit einer entfernungsbasierten Funktion modifizieren. Als Ausgangspunkt für diese Funktion können Sie den Punkt verwenden, der zwei zueinander in Beziehung stehende Punkte aufweist. Dann könnten Sie eine zweite Iteration durchführen.