public Image<Gray, short> GetDispMapCPU(Image<Gray, byte> leftImg, Image<Gray, byte> rightImg, DispMapFounderParameters parameters)
{
var ap = (StereoSGBMDispMapFounderParameters)parameters;
using (StereoSGBM sgbm = new StereoSGBM(
minDisparity: ap.MinDisparity,
numDisparities: ap.NumDisparities,
blockSize: ap.BlockSize,
p1: ap.P1,
p2: ap.P2,
disp12MaxDiff: ap.Disp12MaxDiff,
preFilterCap: ap.PreFilterCap,
uniquenessRatio: ap.UniquenessRatio,
speckleWindowSize: ap.SpeckleWindowSize,
speckleRange: ap.SpeckleRange,
mode: ap.Mode))
//using (var leftProcessImg = leftImg.Copy())
//using (var rightProcessImg = rightImg.Copy())
{
var leftProcessImg = leftImg;
var rightProcessImg = rightImg;
var dispMap = new Image<Gray, short>(leftProcessImg.Size);
//TODO: dirty hack
try
{
sgbm.FindStereoCorrespondence(leftProcessImg, rightProcessImg, dispMap);
}
catch
{
}
return dispMap;
}
}