1-范数:║x║1=│x1│+│x2│+…+│xn│//标的目的量中的绝对值乞降
2-范数:║x║2=(│x1│2+│x2│2+…+│xn│2)^1/2 //欧几里得距离
∞-范数:║x║∞=max(│x1│,│x2│, … ,│xn│) //标的目的量中的max

4OpenCV:norm范数求解函数
三种格局:
①double norm(InputArray src1,
int normType=NORM_L2,
InputArray mask=noArray() )
②double norm(InputArray src1,
InputArray src2,
int normType=NORM_L2,
InputArray mask=noArray())
③double norm(const SparseMat& src, int normType)

5应用实例:用于评估相机标定的表里参质量
法式如下:
cout << "每幅图像的标定误差:" << l;
for (int i = 0; i<image_count; i++)
{
vector<Point3f> tempPointSet = object_Points[i];
/*object_Points是图像棋盘格角点宿世界坐标的容器 , 其是三通道的XYZ , 此中Z通道为0 。 棋盘格以左上角为原点 , 方块大小是12mm和12mm*/
/*依据摄像机表里参数 , 对空间的三维点进行重投影计较;
tempPointSet为12mm*12mm的棋盘格标定板角点宿世界坐标 ,
image_points2是重投影后的图像像素角点坐标*/
projectPoints(tempPointSet,
rotation_vectors[i],
translation_vectors[i],
intrinsic_matrix,
distortion_coeffs,
image_points2);
/*图像亚像素角点坐标tempImagePoint */
/*image_points2和tempImagePoint进行误差计较 , 评估出其表里参的质量*/
vector<Point2f> tempImagePoint = corners_Seq[i];
//界说双通道的Mat矩阵 , 每个点暗示两个数据 , 别离为棋盘格角点的x和y//
Mat tempImagePointMat = Mat(1, tempImagePoint.size(), CV_32FC2);
Mat image_points2Mat = Mat(1, image_points2.size(), CV_32FC2);
for (int j = 0; j < tempImagePoint.size(); j++)
{
image_points2Mat.at<Vec2f>(0, j) = Vec2f(image_points2[j].x, image_points2[j].y); //两个通道赋值
tempImagePointMat.at<Vec2f>(0, j) = Vec2f(tempImagePoint[j].x, tempImagePoint[j].y);
}
err = norm(image_points2Mat, tempImagePointMat, NORM_L2);//2范数
total_err += err /= point_counts[i];
cout << "第" << i + 1 << "幅图像的平均误差:" << err << "像素" << l;
}
cout << "总体平均误差:" << total_err / image_count << "像素" << l;
cout << "评价完当作!" << l;
【注】:OpenCV的norm函数是将两个通道分隔计较(X1-X2)^2的值 , 然后同一乞降 , 开根号;即2范数;

猜你喜欢
- OpenCV:goodFeaturesToTrack角点检测的应用
- OpenCV:相机标定示例程序的使用
- OpenCV:相机标定函数和程序
- 解决无数人对安装opencv环境变量疑惑的终极答案
- 矩阵的范数怎么求
- python3+opencv3用拉普拉斯算子实现边缘检测
- python3.6.5环境 opencv3.3.1进行直方图均衡
