So erstellen Sie Tiefenkarten aus 2D-Fotos mit OpenCV

Was brauche ich?

  • Jeder dedizierte oder virtuelle Server
  • Ubuntu
  • OpenCV
  • Python

Was sind Tiefenkarten?

Eine Tiefenkarte ist einfach ein Bild, bei dem jedes Pixel Tiefeninformationen anstelle von RGB enthält und normalerweise als Graustufenbild dargestellt wird. Mit Tiefeninformationen ist der Abstand der Oberfläche von Szenenobjekten von einem Blickpunkt gemeint. Eine Tiefenkarte enthält Informationen über den Abstand zwischen der Oberfläche von Objekten aus einem bestimmten Blickwinkel. Wenn dieses mit dem Quellbild zusammengeführt wird, entsteht ein 3D-Bild. Es sieht so aus, als hätte das ursprüngliche Quellbild Tiefe, was ihm einen fast linsenförmigen Effekt verleiht. Dies ist besonders nützlich, wenn Sie synchronisierte Stereobilder verwenden können. Stereobilder sind zwei Bilder mit einem leichten Versatz. Nehmen Sie beispielsweise ein Bild eines Objekts von der Mittelachse aus auf. Bewegen Sie Ihre Kamera auf der geraden horizontalen Ebene etwa 6 cm nach rechts und behalten Sie dabei die Position des Objekts in Ihrem mittleren Sichtfeld bei. Suchen Sie in beiden Bildern nach dem Gleichen und schließen Sie aus dem Positionsunterschied auf die Tiefe. Dies wird als Stereo-Matching bezeichnet. Um die besten Ergebnisse bei der Erstellung von Tiefenkarten zu erzielen, seien Sie so präzise wie möglich und vermeiden Sie Verzerrungen.

Tiefenkarten haben eine Vielzahl von Verwendungsmöglichkeiten. Beispielsweise wird die Wirkung von gleichmäßig dichten halbtransparenten Medien innerhalb einer Szene simuliert, z. B. Nebel, Rauch oder Wassermengen oder andere Flüssigkeiten. Oder die Simulation geringer Schärfentiefe, bei der Teile einer Szene unscharf zu sein scheinen. Tiefenkarten können verwendet werden, um ein Bild selektiv in unterschiedlichen Stärken oder Stärken zu verwischen. Eine geringe Schärfentiefe kann ein Merkmal der Makrofotografie sein und daher kann die Technik Teil des Prozesses der Miniaturfälschung sein. Enthält eine Technik namens Z-Buffering und Z-Culling, mit der das Rendern von 3D-Szenen effizienter gestaltet werden kann. Sie können verwendet werden, um Objekte zu identifizieren, die nicht sichtbar sind und daher für einige Rendering-Zwecke ignoriert werden können. Dies ist auch besonders wichtig bei Echtzeitanwendungen wie Computerspielen, bei denen eine schnelle Abfolge abgeschlossener Renderings rechtzeitig verfügbar sein muss, um in einer regelmäßigen oder festen Rate angezeigt zu werden.

In dieser Anleitung erfahren Sie, wie Sie aus zwei oder mehr Bildern Tiefendaten ableiten, die dann als Graustufen-Ausgabebild interpretiert werden können, das die Tiefe demonstriert. Das resultierende Ausgabebild kann dann zur Ableitung einer 3D-Punktwolke verwendet werden.

DepthMapStereoImgs-stereoBM.py


importieren

 Numpy

als

 np

importieren

 Lebenslauf 2

aus

 matplotlib

importieren

 Pyplot

als

 plt

imgL = cv2.imread('my_local_environment_l.jpg',cv2.IMREAD_GRAYSCALE)
imgR = cv2.imread('my_local_environment_r.jpg',cv2.IMREAD_GRAYSCALE)

stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

DepthMapStereoImgs-stereoSGBM.py

importieren

 Numpy

als

 np

importieren

 Lebenslauf 2

aus

 matplotlib

importieren

 Pyplot

als

 plt

imgL = cv2.imread('my_local_environment_l.jpg',cv2.IMREAD_GRAYSCALE)
imgR = cv2.imread('my_local_environment_r.jpg',cv2.IMREAD_GRAYSCALE)

stereo = cv2.StereoSGBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

Durch Ändern der Werte „numDisparities“ und „blockSize“ können verfeinerte Ergebnisse erzielt werden. Normale Ergebnisse sind oft mit einem hohen Maß an Rauschen belastet. Mit Übung, Zeit und Geduld können Sie Ergebnisse erzielen, die in späteren Phasen der Bildnachbearbeitung verwendet werden können.

QUELLENBILDER

So erstellen Sie Tiefenkarten aus 2D-Fotos mit OpenCV So erstellen Sie Tiefenkarten aus 2D-Fotos mit OpenCV

ROHE ERGEBNISSE DER TIEFENKARTE

STEREO-BM (cv2.StereoBM) STEREO-SGBM (cv2.StereoSGBM)
So erstellen Sie Tiefenkarten aus 2D-Fotos mit OpenCV So erstellen Sie Tiefenkarten aus 2D-Fotos mit OpenCV

Abschluss

OpenCV verfügt über zahlreiche Möglichkeiten zur Bildbearbeitung und entwickelt sich schnell zu einem wahren Kraftpaket der Computer Vision. Bei der Arbeit mit der Bildstereoskopie ist die Rauschunterdrückung von enormer Bedeutung. Mit einer Reihe fortschrittlicher Rauschunterdrückungsschemata können Sie saubere Tiefenkarten erstellen, die dann einfach in detaillierte Punktwolken für die 3D-Modellgenerierung umgewandelt werden können. Je mehr man sich das Zeug anschaut, desto spannender wird es.

Laden Sie Depth Images-Skripte und Bilder herunter

  • Klicken Sie auf diesen Link, um neue Informationen zum besten Website-Hosting zu erhalten .