FindFundamentalMat

FindFundamentalMat是一個函式。

基本介紹

  • 中文名:FindFundamentalMat
  • 外文名:FindFundamentalMat
  • 定義:兩幅圖像中對應點計算出基本矩陣
  • 類型:數學計算程式
函式形式,參數,說明,例子1,例子2,

函式形式

int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2, CvMat* fundamental_matrix, int method=CV_FM_RANSAC, double param1=1., double param2=0.99, CvMat* status=NULL);

參數

  • points1
  • 第一幅圖像點的數組,大小為2xN/Nx2 或 3xN/Nx3 (N 點的個數),多通道的1xN或Nx1也可以。點坐標應該是浮點數(雙精度或單精度)。:
  • points2
  • 第二副圖像的點的數組,格式、大小與第一幅圖像相同。
  • fundamental_matrix
  • 輸出的基本矩陣。大小是 3x3 或者 9x3 ,(7-點法最多可返回三個矩陣).
  • method
  • 計算基本矩陣的方法
  • CV_FM_7POINT – 7-點算法,點數目= 7
  • CV_FM_8POINT – 8-點算法,點數目 >= 8
  • CV_FM_RANSAC – RANSAC 算法,點數目 >= 8
  • CV_FM_LMEDS - LMedS 算法,點數目 >= 8
param1
這個參數只用於方法RANSAC。它是點到對極線的最大距離,超過這個值的點將被捨棄,不用於後面的計算。通常這個值的設定是0.5 or 1.0 。
param2
這個參數只用於方法RANSAC 或 LMedS 。 它表示矩陣正確的可信度。例如可以被設為0.99 。
status
具有N個元素的輸出數組,在計算過程中沒有被捨棄的點,元素被被置為1;否則置為0。這個數組只可以在方法RANSAC and LMedS 情況下使用;在其它方法的情況下,status一律被置為1。這個參數是可選參數。

說明

函式 FindFundamentalMat 利用上面列出的四種方法之一計算基本矩陣,並返回基本矩陣的值:沒有找到矩陣,返回0,找到一個矩陣返回1,多個矩陣返回3。 計算出的基本矩陣可以傳遞給函式cvComputeCorrespondEpilines來計算指定點的對極線。

例子1

:使用 RANSAC 算法估算基本矩陣。
int numPoints = 100;
CvMat* points1;
CvMat* points2;
CvMat* status;
CvMat* fundMatr;
points1 = cvCreateMat(2,numPoints,CV_32F);
points2 = cvCreateMat(2,numPoints,CV_32F);status = cvCreateMat(1,numPoints,CV_32F);
/* 在這裡裝入對應點的數據... */
fundMatr = cvCreateMat(3,3,CV_32F);
int num = cvFindFundamentalMat(points1,points2,fundMatr,CV_FM_RANSAC,1.0,0.99,status);
if( num == 1 ) printf("Fundamental matrix was found\n");
else printf("Fundamental matrix was not found\n");

例子2

:7點算法(3個矩陣)的情況。
CvMat* points1;CvMat* points2;
CvMat* fundMatr;points1 = cvCreateMat(2,7,CV_32F);
points2 = cvCreateMat(2,7,CV_32F);
/* 在這裡裝入對應點的數據... */
fundMatr = cvCreateMat(9,3,CV_32F);
int num = cvFindFundamentalMat(points1,points2,fundMatr,CV_FM_7POINT,0,0,0);printf("Found %d matrixes\n",num);

相關詞條

熱門詞條

聯絡我們