我使用左图和右图运行以下代码并得到奇怪的结果。我不确定我做错了什么。首先,为什么它被裁剪,为什么差异都是一种颜色?
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);
答案 0 :(得分:0)
我不确定裁剪后的图像,但我认为您应该将其标准化为0..1而不是0..255,因为它不是8位图像。
也许它看起来被裁剪,因为黑色值实际上是负面的。
答案 1 :(得分:0)
尝试将min disparity更改为零,这可能对您的情况有帮助(由于裁剪导致的问题)。我确实遇到了同样的问题。但我带来了BMTuner的解决方案。我看过一个视频。在这里我附上视频,这可能会帮助你解决裁剪问题。
http://www.youtube.com/watch?feature=player_embedded&v=FX7AMktf24E