Enviornment: Jetpack 5.0.2, Ubuntu 20.04, vpi 2.1.6
VPI code:
ctx->map = {};
ctx->map.grid.numHorizRegions = 1;
ctx->map.grid.numVertRegions = 1;
ctx->map.grid.regionWidth[0] = ctx->cam_w;
ctx->map.grid.regionHeight[0] = ctx->cam_h;
ctx->map.grid.horizInterval[0] = 1;
ctx->map.grid.vertInterval[0] = 1;
CHECK_STATUS(vpiWarpMapAllocData(&ctx->map));
// Extrinsic should be an identical matrix.
ctx->extrinsic = {};
ctx->extrinsic[0][0] = ctx->extrinsic[1][1] = ctx->extrinsic[2][2] = 1;
loadIntrinsic(ctx->intrinsic_path, ctx->intrinsic,
ctx->distortionModel.lens);
vpiWarpMapGenerateFromPolynomialLensDistortionModel(
ctx->intrinsic, ctx->extrinsic, ctx->intrinsic, &ctx->distortionModel.lens, &ctx->map);
CHECK_STATUS(vpiSubmitRemap(ctx->stream, VPI_BACKEND_CUDA, ctx->remap, ctx->vimg,
ctx->tmpIn, VPI_INTERP_CATMULL_ROM, VPI_BORDER_ZERO, 0));
OpenCV code (python):
newCameraMatrix, validPixROI = cv.getOptimalNewCameraMatrix(intrinsic, distortion, (1920, 1080), 0)
R = np.array([[1,0,0],[0,1,0],[0,0,1]])
map_x, map_y = cv.initUndistortRectifyMap(intrinsic, distortion, R, newCameraMatrix, (1920, 1080), cv.CV_32FC1)
warped_img = cv.remap(orig_img, map_x, map_y, cv.INTER_CUBIC)
original image:
undistorted by cv:
undistorted by vpi:
Obvoiusly the keyboard of this laptop is clipped after undistort by vpi.





