2d 2d對極幾何約束

2021-10-08 06:45:18 字數 2465 閱讀 6745

#include < iostream>

#include

#include

#include

#include

// #include 「extra.h」 // use this if in opencv2

using namespace std;

using namespace cv;

void find_feature_matches(

const mat &img_1, const mat &img_2,

std::vector< keypoint> &keypoints_1,

std::vector< keypoint> &keypoints_2,

std::vector< dmatch> &matches);

void pose_estimation_2d2d(

std::vector< keypoint> keypoints_1,

std::vector< keypoint> keypoints_2,

std::vector< dmatch> matches,

mat &r, mat &t);

// 畫素座標轉相機歸一化座標

point2d pixel2cam(const point2d &p, const mat &k);

int main()

return 0;

}void find_feature_matches(const mat &img_1, const mat &img_2,

std::vector< keypoint> &keypoints_1,

std::vector< keypoint> &keypoints_2,

std::vector< dmatch> &matches)

printf("-- max dist : %f \n", max_dist);

printf("-- min dist : %f \n", min_dist);

//當描述子之間的距離大於兩倍的最小距離時,即認為匹配有誤.但有時候最小距離會非常小,設定乙個經驗值30作為下限.

for (int i = 0; i < descriptors_1.rows; i++) }}

point2d pixel2cam(const point2d &p, const mat &k)

void pose_estimation_2d2d(std::vector< keypoint> keypoints_1,

std::vector< keypoint> keypoints_2,

std::vector< dmatch> matches,

mat &r, mat &t)

//-- 計算基礎矩陣f

mat fundamental_matrix;

fundamental_matrix =findfundamentalmat(points1, points2, fm_8point);//計算f

cout << "fundamental_matrix is " << endl << fundamental_matrix << endl;

//-- 計算本質矩陣e

point2d principal_point(325.1, 249.7); //相機光心, tum dataset標定值

double focal_length = 521; //相機焦距, tum dataset標定值

mat essential_matrix;

essential_matrix =findessentialmat(points1, points2, focal_length, principal_point);//計算e

cout << "essential_matrix is " << endl << essential_matrix << endl;

//-- 計算單應矩陣h

//-- 但是本例中場景不是平面,單應矩陣意義不大

mat homography_matrix;

homography_matrix =findhomography(points1, points2, ransac, 3);//計算h

cout << "homography_matrix is " << endl << homography_matrix << endl;

//-- 從本質矩陣中恢復旋轉和平移資訊.

// 此函式僅在opencv3中提供

recoverpose(essential_matrix, points1, points2, r, t, focal_length, principal_point);//根據e,返回可用解r,t

cout << "r is " << endl << r << endl;

cout << "t is " << endl << t << endl;

SLAM第6章 求解位姿變換 2D 2D

第3至5章講了3d 3d和3d 2d問題,為了全面介紹相機位姿的求解方法,本章介紹2d 2d問題。根據3d 3d和3d 2d問題的描述,就可以理解2d 2d問題 相機在兩個位置看到了同樣的3維點,即知道畫素座標,求這兩個相機的位姿關係。對極幾何有極線 極點等概念,而我們不需要這些,只需要知道空間向量...

D2D技術介紹

一 d2d技術概述 d2d device to device 通訊是由3gpp組織提出的一種在通訊系統的控制下,允許lte終端之間在沒有基礎網路設施的情況下,利用小區資源直接進行通訊的新技術。它能夠提公升通訊系統的頻譜效率,在一定程度上解決無線通訊系統頻譜資源匱乏的問題。與此同時,它還可以有效降低終...

Newcoder 128 D 最短路2(計算幾何)

description 假設排球場是個無限大的網格,即對於任意的整數z zz,都有x z x zx z和y zy z y z的直線存在,同學a a x,ay a a x,a y a ax ay 和同學b b x,by b b x,b y b bx by 站在整點座標 即ax,ay,b x,by a ...