Устранение шумного отклика при глубокой оценке? - PullRequest
0 голосов
/ 07 ноября 2019

Я попытался создать карту оценки глубины, используя встроенные функции openCV. Я использовал код, указанный в документации ( здесь ), но я не получил хороших результатов для него. Я мог бы использовать некоторые предложения, чтобы помочь мне отладить или понять проблему здесь, или получить лучшее понимание функции.

В моем понимании numDisparities определяет разрешение карты диспаратности, что означает, что более высокие значения имеют более высокое разрешение, а blockSize - это окно поиска, в котором глубина сравнивается в двух изображениях. Изображение1 , Изображение2 , Ожидаемый результат

Я выполнил обычные шаги и попробовал несколько случаев, чтобы понять поведение функции -

Случай 1

cv2.StereoBM_create(numDisparities = 0, blockSize = 5) 

Результат Я думаю, что этот результат является ожидаемым, поскольку размер окна мал, который обязательно должен включать больше шума, иразрешение по глубине, очевидно, очень низкое, потому что numDisparities установлено на 0.

Случай 2

stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)

Результат В то время как документация, которая используетте же параметры получают очень правильный результат .

Случай 3

stereo = cv2.StereoBM_create(numDisparities=32, blockSize=15)

Результат , результаты немного улучшаются, предположительно потому, что я увеличил значение numDisparities.

Случай 4

stereo = cv2.StereoBM_create(numDisparities=64, blockSize=15)

Результат Лучший результат на данный момент - есть незначительное улучшение результатов до numDisparities = 96, увеличение numDisparities за пределыэто приводит к тому, что изображение по некоторым причинам становится усеченным - и уменьшение blockSize приводит к некоторому шуму (хотя результаты получаются немного более "точными"), а увеличение blockSize делает разграничение междуграницы больше 'грубее' (не удается уловить более мелкие детали.)

Однако ни один из них не близок к результату теста ...

Как мы можем настроить параметры для получения хорошей карты диспаратности, или это лучшее, что может быть достигнуто? Почему изображение увеличивается при увеличении numDisparities?

Код -

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('im2.png',0)
imgR = cv2.imread('im6.png',0)


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

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