当前位置:网站首页 > 创业 > 正文

OpenCV:norm-范数求解函数

0 张子豪 张子豪 2025-10-12 09:03 1

距离的界说是一个宽泛的概念,只要知足非负、自反、三角不等式就可以称之为距离。

范数是一种强化了的距离概念,它在界说上比距离多了一条数乘的运算法例。有时辰为了便于理解,我们可以把范数看成距离来理解。

在数学上,范数包罗标的目的量范数和矩阵范数,标的目的量范数表征标的目的量空间中标的目的量的巨细,矩阵范数表征矩阵引起转变的巨细。

一种非严密的诠释就是,对应标的目的量范数,标的目的量空间中的标的目的量都是有巨细的,这个巨细若何怀抱,就是用范数来怀抱的,分歧的范数都可以来怀抱这个巨细,就比如米和尺都可以来怀抱远近一样;对于矩阵范数,学过线性代数,我们知道,经由过程运算AX=B,可以将标的目的量X转变为B,矩阵范数就是来怀抱这个转变巨细的。

本文本家儿要介绍:

OpenCV矩阵暗示形式,

范数界说;

范数性质;

OpenCV三种范数格局;

应用实例;

数学概念;

东西/原料

  • opencv 2410

方式/步调

  1. 1

    OpenCV中矩阵暗示形式:

    CV_8UC1:一个8位无符号整型单通道矩阵,

    CV_32FC2:一个32位浮点型双通道矩阵,

     

    CV_8UC1           CV_8SC1          CV_16UC1        CV_16SC1

    CV_8UC2           CV_8SC2          CV_16UC2        CV_16SC2

    CV_8UC3           CV_8SC3          CV_16UC3        CV_16SC3

    CV_8UC4           CV_8SC4          CV_16UC4        CV_16SC4

     

    CV_32SC1          CV_32FC1         CV_64FC1

    CV_32SC2          CV_32FC2         CV_64FC2

    CV_32SC3          CV_32FC3         CV_64FC3

    CV_32SC4          CV_32FC4         CV_64FC4

    通道暗示每个点能存放几多个数,近似于RGB彩色图中的每个像素点有三个值,即三通道。

    图像中的深度暗示每个值由几多位来存储,是一个精度问题,

    一般图像是8bit(位)的,则深度是8。

  2. 2

    范数的界说║x║:

    设,知足

    ①正心猿意马性:║x║≥0,║x║=0 if x=0

    ②齐次性:║cx║=│c│║x║,

    ③三角不等式:║x+y║≤║x║+║y║

    则称Cn中界说了标的目的量范数,║x║为标的目的量x的范数.

  3. 3

    范数的性质:

    标的目的量范数是标的目的量的一种具有特别性质的实值函数。

    常用标的目的量范数有,令x=( x1, x2, … ,xn)T

    1-范数:║x║1=│x1│+│x2│+…+│xn│//标的目的量中的绝对值乞降

    2-范数:║x║2=(│x1│2+│x2│2+…+│xn│2)^1/2  //欧几里得距离

    ∞-范数:║x║∞=max(│x1│,│x2│, … ,│xn│)  //标的目的量中的max

  4. 4

    OpenCV: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. 5

    应用实例:用于评估相机标心猿意马的表里参质量

    法式如下:

    cout << "每幅图像的标心猿意马误差:" << endl; 

    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 << "像素" << endl; 

    cout << "总体平均误差:" << total_err / image_count << "像素" << endl; 

    cout << "评价完当作!" << endl; 

     

    【注】:OpenCV的norm函数是将两个通道分隔计较(X1-X2)^2的值,然后同一乞降,开根号;即2范数;

  6. 6

    数学概念(弥补)

    例如:

    Mat common_point1 = Mat(1, 3, CV_32FC2); 

    Mat cur_point1 = Mat(1, 3, CV_32FC2); 

    for (size_t i = 0; i < 3; i++) 

        common_point1.at<Vec2f>(0, i) = Vec2f(6, 5); 

        cur_point1.at<Vec2f>(0, i) = Vec2f(4,4); 

    err = norm(common_point1, cur_point1, NORM_L2); 

    printf("err为 : %f个像素 \n", err); 

    成果为:sqrt((6-4)^2+(5-4)^2+(6-4)^2+(5-4)^2+(6-4)^2+(5-4)^2)=3.87

注重事项

  • 【注】: 问题:为什么不将图像像素坐标经由过程表里参转换为宿世界物理坐标?
  • 这是因为当把图像像素坐标转换为宿世界坐标时,是一条射线,无法还原出深度Z;

来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!


本文链接:https://www.ibaiwen.com/web/240026.html

张子豪

张子豪

TA很懒,啥都没写...

@百闻娱乐 本站部分内容转自互联网,若有侵权等问题请及时与本站联系,我们将在第一时间删除处理。 | 粤ICP备2024343649号 | (地图