This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: VLIB Fundamental Matrix Comparison (between x86 OpenCV API and TI VLIB API)

Part Number: TDA4VM


Hello All,

     We have a use-case where we are using Fundamental Matrix API. We tried Fundamental Matrix Computation API on both x86 and TI, where we gave same set of input to both. The x86 version is the one available with OpenCV and the one on TI is with VLIB Library. We are observing the differences in output between OpenCV API and VLIB API. Following are more details on this : 

I have also attached the test data which we used for comparison.

API's for comparison : 

TI (VLIB) x86 (OpenCV)
VLIB_findFundamentalMat
findFundamentalMat

Input Configuration (API Parameters) :

Configuration Name  VLIB_findFundamentalMat (TI VLIB) Config value findFundamentalMat (X86 OpenCV) Config value
numfeatures  319 (data shared below) 319 (data shared below)
distThreshold
0.9
0.9
degenThreshold
0.176
NA
numItr4RANSAC
0x7FFFFFFF
NA
method
0x1F
FM_RANSAC

Input Data : (Note :The data attached is for Single Run ) [Attached a CSV File containing all the matched Image Coordinates]

I have attached an excel sheet containing all the correspondence's (matched pixel coordinates of previous and current images) . 

Image Configuration:

    Width * Height : 1280 * 720

    Principal Point X : 640

    Principal Point Y : 360

    Focal Length X : 2710.56

    Focal Length Y : 2698.07

Differences In Output :

TI Fundamental Mat O/P (3 * 3 Matrix) x86 Fundamental Mat O/P (3 * 3 Matrix)
[ -0.000000367, -0.000000030, -0.000000525,
  -0.000007015, -0.000000573, 0.000000592,
  0.001185923, 0.000098398, -0.010825714 ]
 [ 6.150850283990125e-05, -0.00109855653582384, -0.7636175924823848,
   0.001306624128030765, 0.0003766128779860109, -1.048454432812976,
   0.6343923978386575, 0.979978637884417, 1 ]

Attachment :

feature_matching_coordinates_count_293.csv

I hope the above data is sufficient for the problem statement. Please let us know if we are missing anything else. Your support is highly appreciated.

Thanks and Best Regards,

Neel

  • I have one observation, the degeneracy check is different in TI and x86 (on TI side we provide an additional parameter), also I see the output matches closely if I disable Rank Enforcement and Least Square. I am not sure the reason for this. But seems, my issue is partially solved. But I'll still keep this thread open to understand further. I dont have any replies yet. Any help is appreciated.

  • Hi,

    It is not expected to bit-match exactly with opencv, TI implementation is independent and it is should be near to any basic F matrix calculation. You may modify rank enforcement part or least square solution part, as there are not much optimization possible in those areas. Main compute goes in inlier finding in each ransac iteration, so apart from this inlier finding code rest other are kind of pure C code hence can be modified easily without worrying for optimization. 

    If you have found any bug in rank enforcement or least square solution part then please let us know.

    Regards

    Deepak Poddar