Возможно ли получить карту глубины / несоответствия с движущейся камеры? Скажем, я делаю изображение в точке x, после того, как я проехал, скажем, 5 см, я сделал еще один снимок, и оттуда я вычислил карту глубины изображения.
Я пробовал использовать BlockMatching в opencv, но результат не очень хороший. Первое и второе изображения выглядят следующим образом: первое изображение, второе изображение, карта несоответствия (цвет), карта несоответствия
Мой код выглядит следующим образом:
GpuMat leftGPU;
GpuMat rightGPU;
leftGPU.upload(left);rightGPU.upload(right);
GpuMat disparityGPU;
GpuMat disparityGPU2;
Mat disparity;Mat disparity1,disparity2;
Ptr<cuda::StereoBM> stereo = createStereoBM(256,3);
stereo->setMinDisparity(-39);
stereo->setPreFilterCap(61);
stereo->setPreFilterSize(3);
stereo->setSpeckleRange(1);
stereo->setUniquenessRatio(0);
stereo->compute(leftGPU,rightGPU,disparityGPU);
drawColorDisp(disparityGPU, disparityGPU2,256);
disparityGPU.download(disparity);
disparityGPU2.download(disparity2);
imshow("display img",disparityGPU);
как я могу это улучшить? На карте цветового несоответствия имеется довольно много ошибок (т. Е. Высокий кружок красного цвета, и он такой же, как некоторые части таблицы). Кроме того, на карте несоответствия есть небольшой шум (все черные точки на картинке), как я могу дополнить эти черные точки соседними несоответствиями?