Я пытаюсь использовать StereoBM в OpenCV для извлечения карты несоответствия из пары изображений. Не обращая внимания на плохое качество карты несоответствий ниже, вы можете видеть, что слева на ней есть несколько черных столбцов, которые соответствуют параметру ndisparities. Я думал, что ndisparities только сообщает StereoBM, насколько "далеко" он может искать соответствие. Что могло вызвать такое поведение? Кажется, это ограничивает ширину результирующей карты глубины, но я не понимаю, почему.
Вы можете увидеть стереопару здесь и мой код ниже. Заранее спасибо за любые указатели!
Mat Limg = imread("left.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat Rimg = imread("right.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat disp(Limg.size(), CV_16SC1), disp8U;
int ndisparities = 512;
StereoBM SBM(StereoBM::BASIC_PRESET, ndisparities , 11);
SBM(Limg, Rimg, disp, CV_16S);
double minVal, maxVal;
minMaxLoc( disp, &minVal, &maxVal );
disp.convertTo( disp8U, CV_8UC1, 255/(maxVal - minVal));
imshow("disparity", disp8U)