几何畸变图像恢复 OpenCV3 - 数字图像处理作业3
作业3:相同条件下拍到的棋盘图和日历钟表图,尝试建立几何畸变关系,并对它们进行恢复。注意:不能采用椭圆的变换。
算法步骤:
- 坐标变换: 在畸变和正常图象之间建立坐标关系。
- 灰度级插值,最邻近像素灰级代替法
实际操作过程:
第一步. 角点检测
调用openCV角点检测函数获取棋盘格角点。
//cornerMat CV_32FC2 56 rows * 1 cols * 2channel 取值用Point2f 或者 Vec2f
findChessboardCorners(chessImg, Size(8, 7), cornerMat, CALIB_CB_FILTER_QUADS);
drawChessboardCorners(chessCorner, Size(8, 7), cornerMat, true);
imshow("chess with corner", chessCorner);
第二步. 得到畸变前的网格点位置
通过图片中心畸变小(基本无畸变)的特性,计算得出棋盘格角点畸变前的坐标,见下图绿色点。
第三步. 控制网格法得出畸变函数
为了拟合该图的函数,双线性变换参数不够,增加参数数量得到如下公式:
x ′ = a 0 + a 1 x + a 2 y + a 3 x y + a 4 x 2 + a 5 y 2 + a 6 x y 2 + a 7 x 2 y x'=a_0+a_1x+a_2y+a_3xy+a_4x^2+a_5y^2+a_6xy^2+a_7x^2y x