Рассчитать фактическое расстояние, используя карту диспаратности на стерео изображениях - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь вычислить расстояние объекта от камеры, используя приведенный ниже код. Таким образом, подход состоит в том, чтобы вычислить несоответствие левого и правого изображения, которое будет в матричном формате. Как только я получу Диспаритет, я использую формулу Глубина = Базовая линия * Фокусное расстояние / Диспаритет

Два вопроса здесь:

  1. Почему Глубина становится отрицательной?
  2. А как узнать фактическое расстояние объекта от камеры с помощью матрицы глубины. Глубина матрицы в основном дает расстояние для каждой точки, которую я не хочу. Я хочу рассчитать фактическое расстояние до объекта в метрах.

    import numpy as np import sys import cv2 из matplotlib import pyplot в виде plt% matplotlib inline

    imgL = cv2.imread ('C: / Пользователи / Akash Jain / Документы / ZED / LeftDepth / left000005.png ', 0) imgR = cv2.imread (' C: / Пользователи / Akash Jain / Документы / ZED / RightDepth / right000005.png ', 0)

    stereo = cv2.StereoBM_create (numDisparities = 16, blockSize = 5) disparity = stereo.compute (imgL, imgR) D = 0,12 * 0,70 * 672 / disparity print («диспаритет», disparity) print («Глубина»), D) plt.imshow (несоответствие, «серый») plt.show ()

enter image description here

enter image description here

1 Ответ

0 голосов
/ 10 ноября 2019

Простая формула Depth = Baseline * focal length/ Disparity действительна только для случая, когда оси камер параллельны. Предполагая, что у вас хорошие совпадения, встроенные (конвергентно-осевые) камеры вызовут отрицательные различия в некоторых частях плоскости изображения.

Однако размещенное вами изображение несоответствия также выглядит некачественным, что вызывает у меня подозренияу вас также есть плохие совпадения: разумно ли, учитывая вашу сцену, неравномерно раскачиваться в нижней средней части?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...