Я пытаюсь оценить глубину изображения стереопары с помощью OpenCV. У меня есть карта несоответствия, и оценка глубины может быть получена как:
(Baseline*focal)
depth = ------------------
(disparity*SensorSize)
Я использовал технику совпадения блоков, чтобы найти одинаковые точки на двух ректифицированных изображениях. OpenCV позволяет установить некоторый параметр соответствия блоков, например BMState->numberOfDisparities
.
После процесса сопоставления блоков:
cvFindStereoCorrespondenceBM( frame1r, frame2r, disp, BMState);
cvConvertScale( disp, disp, 16, 0 );
cvNormalize( disp, vdisp, 0, 255, CV_MINMAX );
Я нашел значение глубины как:
if(cvGet2D(vdisp,y,x).val[0]>0)
{
depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE)));
}
Но полученное значение глубины отличается от значения, полученного с помощью предыдущей формулы, из-за значения BMState->numberOfDisparities
, которое изменяет значение результата.
Как я могу установить этот параметр? что изменить этот параметр?
Спасибо