Цвет карты несоответствия перевернут

Результат моей карты несоответствия хорош. Как я знаю, близкие предметы должны быть светлыми, а дальние темными. Со мной происходит обратное.

Это мой код:

CvStereoBMState *BMState = cvCreateStereoBMState();
assert(BMState != 0);
BMState->preFilterSize=31/*41*/;
BMState->preFilterCap=41/*31*/;
BMState->SADWindowSize=31/*41*/;
BMState->minDisparity=-0/*-64*/;
BMState->numberOfDisparities=112/*128*/;

try
{
while(true)
{
if(true)
{

if( frameL && frameR )
{
CvMat part;
cvRemap( gFrameL, img1r, mx1, my1 );
cvRemap( gFrameR, img2r, mx2, my2 );
if( true/*!isVerticalStereo || useUncalibrated != 0 */)
{

cvFindStereoCorrespondenceBM( img1r, img2r, disp,BMState);

cvNormalize( disp, vdisp, 0, 256, CV_MINMAX );
cvNamedWindow( "disparity" );
cvShowImage( "disparity", vdisp );
}
}
}
frameL = cvQueryFrame(capLeft);
frameR= cvQueryFrame(capRight);
cvCvtColor(frameL,gFrameL,CV_BGR2GRAY);
cvCvtColor(frameR,gFrameR,CV_BGR2GRAY);
}

Как я могу исправить эту проблему?

1

Решение

несоразмерность является смещением в (горизонтальных) пиксельных единицах между точкой в ​​одном стереоизображении к другой, где обе точки являются изображениями одной и той же трехмерной мировой точки. Если ваши изображения переключаются, направление диспаратности также будет изменено. Попробуйте переключить входные изображения.

Если ваши левое и правое изображения переключаются, то несоответствие может быть отрицательным.
После cvNormalize() вы получите правильные положительные значения с меньшими значениями, представляющими близкие объекты.

1

Другие решения


По вопросам рекламы [email protected]