Я использую алгоритм BM в openCV для бинокулярного соответствия. Исходные изображения представляют собой спекл-узоры. Край несоответствия изображения жирный. Я хочу знать, как исправить край?
Я знаю, что жирный край является результатом агрегации затрат с использованием boxfilter.
Но несоответствие другого метода агрегации затрат настолько плохо,
Кроме того, для решения этой проблемы я использовал пост-фильтр диспаратности и распределение затрат на сопоставление, но он не работает.
Первое изображение - это левый спекл, а второе -image - изображение несоответствия, использующее BM в opencv.
Мой код вызывает алгоритм BM opencv:
bm->setPreFilterType(StereoBM_C::PREFILTER_NORMALIZED_RESPONSE);
bm->setBlockSize(9);
bm->setMinDisparity(0);
bm->setNumDisparities(64);
bm->setPreFilterSize(5);
bm->setPreFilterCap(31);
bm->setTextureThreshold(10);
bm->setUniquenessRatio(10);
copyMakeBorder(leftImg, leftImg, 0, 0, 64, 0, cv::BORDER_REPLICATE);
copyMakeBorder(rightImg, rightImg, 0, 0, 64, 0, cv::BORDER_REPLICATE);
bm->compute(leftImg, rightImg, disp);
disp = disp.colRange(64, leftImg.cols);