您当前的位置: 首页 >  opencv

鱼儿-1226

暂无认证

  • 0浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

基于OpenCV的图像配准之后的透视变换

鱼儿-1226 发布时间:2020-07-31 10:32:59 ,浏览量:0

??在通过SIFT、SURF或者ORB进行特征点检测,生成了特征点和特征点描述子的vector后,如何进一步的进行对于图像的矫正。这个时候就用到了opencv的另外两个函数findHomography和perspectiveTransform。  ??findHomography是用来计算两张图像的单应性矩阵的。opencv的官方文档中有详细的使用说明:  ??前两个参数分别是通过之前的特征检测找到的特征点,第三个参数为计算单应性矩阵的方法,默认为使用所有的点。第四个参数仅在第三个参数为CV_RANSAC时使用,为最大允许的特征点对间二次投影的误差。  ??perspectiveTransform函数为通过单应性矩阵生成校正之后的图像。  ??前两个参数为原始图像和矫正之后的图像的点的集合。只能为2维或3维的向量。这里的点的集合指的是图像的位置排布,和像素值没有任何关系。第三个参数即为之前求出的单应性矩阵。  ??注意:生成的矫正图像为点的集合,即为vector向量,并不是图像,生成的只是原始图像与校正图像的位置对应关系,图像的生成在下面的例子中会说明。  示例:

int main()  
{  
    Mat img_1 = imread("00068.jpg");  
    Mat img_2 = imread("00069.jpg");  
    if (!img_1.data || !img_2.data)  
    {  
        cout  good_matches;
    vector leftPoint,rightPoint;
    for( int i = 0; i < descriptors_1.rows; i++ )  
    {   
        if( matches[i].distance < 0.6*max_dist )  
        {   
            good_matches.push_back( matches[i]);
            leftPoint.push_back(keyPoints_1[matches[i].queryIdx].pt);//保存左图像的关键点
            rightPoint.push_back(keyPoints_2[matches[i].trainIdx].pt);//保存右图像的关键点
        }  
    }  


    Mat Homography = findHomography(leftPoint,rightPoint,CV_RANSAC,3);//生成单应性矩阵
    cout            
关注
打赏
1604459285
查看更多评论
0.0402s