2012-06-01 10 views
5

Ich versuche Alpha-Blending mit zwei Bildern für das Bildnähen zu implementieren. Mein erstes Bild ist das -> enter image description hereWie finde ich einen überlappenden Bereich zwischen Bildern in opencv?

hier ist mein zweites Bild -> enter image description here

hier ist mein Ergebnisbild -> enter image description here

Wie Sie das Ergebnis nicht richtig sehen kann, ist. Ich denke, ich muss zuerst den überlappenden Bereich zwischen dann finden und dann Alpha-Blending auf dem überlappenden Teil implementieren.

Antwort

4

Haben Sie zuerst ein neues "Stitching" -Modul gesehen, das in OpenCV 2.3 eingeführt wurde?

Es stellt eine Reihe von Bausteinen für das Zusammenfügen von Pipelines bereit, einschließlich Mischen und "Finden einer Überlappung" (z. B. Registrierung). Hier ist eine Dokumentation: http://docs.opencv.org/modules/stitching/doc/stitching.html und ein Beispiel für Stitching-Anwendung: stitching_detailed.cpp

Ich empfehle Ihnen, den Code dieser Probe zum besseren Verständnis der Details zu studieren.

Im Hinblick auf die Feststellung der Überlappung gibt es mehrere gemeinsame Ansätze in Computer Vision:

  • optischen Flusses
  • Vorlage passende
  • Funktion

Für Ihren Fall passende ich den letzten empfehlen - Es funktioniert sehr gut auf den Fotos. Und dieser Ansatz ist bereits in OpenCV implementiert - erkunden Sie die OpenCv-Quelle und sehen Sie, wie die cv::detail::BestOf2NearestMatcher funktioniert.

+0

"Bildregistrierung" ist ein anderer Begriff aus der Computer Vision Welt, der nützlich sein könnte; Es bezieht sich auf den Prozess der Ausrichtung mehrerer überlappender Bilder. –

+0

Ich frage mich wirklich, wie Sie Optical Flow hier benutzen würden ?! Optical Flow soll an einer Sequenz von Bildern arbeiten ... – CTZStef

2

Ich denke, der gängigste Ansatz ist SIFT, finde ein paar Schlüsselpunkte in beiden Bildern, dann verzere sie, um dein Ergebnis zu erhalten. Siehe this

Here sind Erläuterungen zu SIFT und Panorama-Stitching.

Verwandte Themen