Hello, we have a system with a number of cameras.
At run-time, one of those cameras has a very small ROI in the y-direction: 6-20 lines.
This is (much) too small to use a grid to calibrate the camera; but I can do that using a full field of view and just crop.
But: if I use initUndistortRectifyMap to get mapx & mapy, how do I crop them?
Mapx looks pretty obvious (I think!), I crop to the ROI and then subtract the offset ie:
initUndistortRectifyMap(cameraMatrix, distCoeffs, R1, cameraMatrix,
Size(cameraSensorX, cameraSensorY), CV_16SC2,
distCorrectMapXY, distCorrectMapY);
Mat distCorrectMapXYROI_orig, distCorrectMapXYROI_offset, distCorrectMapYROI;
distCorrectMapXYROI_orig = distCorrectMapXY(
Range(cameraYOffset, cameraYOffset + cameraYROI),
Range(cameraXOffset, cameraXOffset + cameraXROI));
vector <Mat> distCorrectMapsXYROI_split;
split(distCorrectMapXYROI_orig, distCorrectMapsXYROI_split);
distCorrectMapsXYROI_split[0] -= cameraXOffset;
distCorrectMapsXYROI_split[1] -= cameraYOffset;
merge(distCorrectMapsXYROI_split, distCorrectMapXYROI_offset);
Are my assumptions with mapx correct?
Next, what do I do with mapy? Its not so obvious. Right now I'm just cropping and it seems OK?
distCorrectMapYROI = distCorrectMapY(
Range(cameraYOffset, cameraYOffset + cameraYROI),
Range(cameraXOffset, cameraXOffset + cameraXROI));
Thanks for everyone's help.
Gunter