Невозможно получить правильное стерео из пары L / R - PullRequest
2 голосов
/ 14 марта 2011

LeftImage RightImage Stereo

Я запускаю следующий код с левым и правым изображениями и получаю странный результат.Я не совсем уверен, что я делаю не так.Прежде всего, почему он обрезан и почему все различия имеют один цвет?

CvStereoBMState *BMState = cvCreateStereoBMState();
assert(BMState != 0);
BMState->preFilterSize=41;
BMState->preFilterCap=31;
BMState->SADWindowSize=41;
BMState->minDisparity=-64;
BMState->numberOfDisparities=128;
BMState->textureThreshold=10;
BMState->uniquenessRatio=5;

CvMat* disp = cvCreateMat(image_pyramid[0][0]->height, image_pyramid[0][0]->width, CV_16S);
CvMat* vdisp = cvCreateMat(image_pyramid[0][0]->height, image_pyramid[0][0]->width, CV_8U);

cvFindStereoCorrespondenceBM(image_pyramid[0][0], image_pyramid[1][0], disp, BMState);
cvNormalize(disp, vdisp, 0, 256, CV_MINMAX);
cvSaveImage("wowicantbelieveitsnotbutter.jpg", vdisp);

Ответы [ 2 ]

0 голосов
/ 29 мая 2012

Попробуйте изменить минимальное несоответствие на ноль, это может помочь в вашем случае (проблема из-за обрезки). Я столкнулся с той же проблемой. Но я пришел с решением BMTuner. Я видел видео. Здесь я прилагаю видео, это может помочь вам с проблемой обрезки.

http://www.youtube.com/watch?feature=player_embedded&v=FX7AMktf24E

0 голосов
/ 19 мая 2011

Я не уверен насчет обрезанного изображения, но я думаю, что вы должны нормализовать его в диапазоне от 0..1, а не до 0..255, поскольку это не 8-битное изображение.

Также, возможно, оно выглядитобрезается, поскольку значения черного на самом деле отрицательны.

...