FS-Driverless / FS-Driverless/Formula-Student-Driverless-Simulator

Further development of the depth camera simulation

Aperta
#187 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
C++
Stelle
286
Fork
126
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Following up to issue #153 which added depth cameras in pull request #181. General information on how the depth cameras are working can be found in #153.

Maybe it would not be so computationally challenging to simulate the infrared "projected points" and then interpolate between them to get that accuracy gradient with higher precision close by and worse far away. The Intel Realsense camera has an algorithm that it can execute on-board in real time, basic info here:
https://www.intelrealsense.com/stereo-depth-vision-basics/

**Sample:**
```
import numpy
import cv2

from matplotlib import pyplot as plt
from matplotlib import cm

left = cv2.imread("l_active.png", cv2.IMREAD_GRAYSCALE)
right = cv2.imread("r_active.png", cv2.IMREAD_GRAYSCALE)

fx = 942.8 # lense focal length
baseline = 54.8 # distance in mm between the two cameras
disparities = 128 # num of disparities to consider
block = 31 # block size to match
units = 0.512 # depth units, adjusted for the output to fit in one byte

sbm = cv2.StereoBM_create(numDisparities=disparities,
blockSize=block)

# calculate disparities
disparity = sbm.compute(left, right)
valid_pixels = disparity > 0

# calculate depth data
depth = numpy.zeros(shape=left.shape).astype("uint8")
depth[valid_pixels] = (fx * baseline) / (units * disparity[valid_pixels])

# visualize depth data
depth = cv2.equalizeHist(depth)
colorized_depth = numpy.zeros((left.shape[0], left.shape[1], 3), dtype="uint8")
temp = cv2.applyColorMap(depth, cv2.COLORMAP_JET)
colorized_depth[valid_pixels] = temp[valid_pixels]
plt.imshow(colorized_depth)
plt.show()

```
**Input:**
_left lens_
![l_active](https://user-images.githubusercontent.com/22589593/88484877-4b040f00-cf72-11ea-958d-6f0a1d93b72b.png)
_right lens_
![r_active](https://user-images.githubusercontent.com/22589593/88484878-4b9ca580-cf72-11ea-973c-591f6649ab24.png)

**Output:**
![image](https://user-images.githubusercontent.com/22589593/88485190-50625900-cf74-11ea-8288-465836b25562.png)

**Source:**
[source.zip](https://github.com/FS-Online/Formula-Student-Driverless-Simulator/files/4977967/source.zip)

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia leggendo l’issue #153 e la pull request #181 per comprendere l’implementazione esistente della videocamera di profondità, quindi confronta l’approccio stereo proposto con il riferimento e l’esempio di Intel RealSense usando OpenCV. L’issue non indica file di implementazione, test o una condizione di accettazione precisa; per completare il lavoro sarebbe necessario concordare come i punti proiettati e l’interpolazione dovrebbero migliorare l’accuratezza della profondità simulata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, opencv, unreal-engine
Ambito
autonomous-driving, computer-vision
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.