We're attempting to use the DlsPnp function and are encountering some difficulties regarding the expected input. For reference, we are using pixel coordinates of points from a fisheye photo of a dome. Documentation states that we should be passing in "normalized image rays", but we are unclear on what this means. We've passed in pixel coordinates in different formats but consistently get either no solutions or very inaccurate solutions. What specifically does DslPnp expect as input for this parameter? If it is just pixel coordinates, should they be normalized beforehand, as some of the documentation states? If so, how should they be normalized / what normalization function should be used? Every time we've passed in non-normalized pixel coordinates, the function returns no solutions. Any help you can give us would be greatly appreciated!
--
You received this message because you are subscribed to the Google Groups "Theia Vision Library" group.
To unsubscribe from this group and stop receiving emails from it, send an email to theia-vision-lib...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
By setting the intrinsics_to_optimize flag for focal length, we were able to get a focal length correct for our camera. However, even with that, our PnP results were still incorrect, so we're assuming our radial distortion, at least, is off. Additionally, the aspect ratio being returned by the calibrator is definitely wrong -- the actual aspect ratio for our input images is 1.4. One of our devs suspects that the intrinsics results we're getting are 'idealized' values and not actually tied to our camera / the images we're inputting.
We're currently using PnP because it sounds like it will produce more accurate results, and we need a relatively high degree of accuracy for our project. However, we did try P3P and got bad results there too -- presumably because something is wrong with our intrinsics. If we get functioning results from the intrinsics calibrator, we could potentially use P3P rather than PnP.
W1108 16:53:34.403436 32086 levenberg_marquardt_strategy.cc:114] Linear solver failure. Failed to compute a step: Eigen failure. Unable to perform dense Cholesky factorization.
We're seeing 10 to 20 of these per image.
Additionally, I now see we're failing two of the tests from 'make test' -- 6 and 16. I don't know if these are related to our problems or not; as far as we know, we strictly just want to calibrate our camera, get the intrinsics, and use those for our P3P / PnP as needed. So, if these failures are irrelevant, feel free to ignore! If they do pertain to the problem, here are the error logs:
Running the cascade hashing feature matcher test by itself, I get this:
I1109 10:24:56.294071 1958 test_main.cc:48] Running tests with logs enabled.
[==========] Running 5 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 5 tests from CascadeHashingFeatureMatcherTest
[ RUN ] CascadeHashingFeatureMatcherTest.NoOptionsInCore
I1109 10:24:56.294692 1958 fisher_vector_extractor.cc:116] Training GMM for Fisher Vector extractin with 20 features sampled from 20 total features.
[ OK ] CascadeHashingFeatureMatcherTest.NoOptionsInCore (1 ms)
[ RUN ] CascadeHashingFeatureMatcherTest.RatioTestInCore
I1109 10:24:56.295593 1958 fisher_vector_extractor.cc:116] Training GMM for Fisher Vector extractin with 3 features sampled from 3 total features.
[ OK ] CascadeHashingFeatureMatcherTest.RatioTestInCore (0 ms)
[ RUN ] CascadeHashingFeatureMatcherTest.NoOptionsOutOfCore
I1109 10:24:56.296512 1958 fisher_vector_extractor.cc:116] Training GMM for Fisher Vector extractin with 20 features sampled from 20 total features.
[ OK ] CascadeHashingFeatureMatcherTest.NoOptionsOutOfCore (1 ms)
[ RUN ] CascadeHashingFeatureMatcherTest.RatioTestOutOfCore
I1109 10:24:56.297212 1958 fisher_vector_extractor.cc:116] Training GMM for Fisher Vector extractin with 3 features sampled from 3 total features.
[ OK ] CascadeHashingFeatureMatcherTest.RatioTestOutOfCore (1 ms)
[ RUN ] CascadeHashingFeatureMatcherTest.NoDescriptorsInCore
F1109 10:24:56.297806 1958 feature_matcher.cc:157] Check failed: descriptors.size() > 0 (0 vs. 0)
*** Check failure stack trace: ***
@ 0x7fb03b3ea0cd google::LogMessage::Fail()
@ 0x7fb03b3ebf33 google::LogMessage::SendToLog()
@ 0x7fb03b3e9c28 google::LogMessage::Flush()
@ 0x7fb03b3ec999 google::LogMessageFatal::~LogMessageFatal()
@ 0x55f39b8cca3e (unknown)
@ 0x55f39b8c00ac (unknown)
@ 0x55f39b8906f1 (unknown)
@ 0x55f39b8be3ca (unknown)
@ 0x55f39b8b406d (unknown)
@ 0x55f39b8b467d (unknown)
@ 0x55f39b8b48d5 (unknown)
@ 0x55f39b8b5b8f (unknown)
@ 0x55f39b8b5e92 (unknown)
@ 0x55f39b88806c (unknown)
@ 0x7fb039a3f1c1 __libc_start_main
@ 0x55f39b88e71a (unknown)
@ (nil) (unknown)
Aborted (core dumped)
Which looks related to GLog?
Running the normalized graph cut test, the first two tests fail and the third runs fine:
I1109 10:24:26.285338 1941 test_main.cc:48] Running tests with logs enabled.
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from NormalizedGraphCut
[ RUN ] NormalizedGraphCut.SimpleGraph
unknown file: Failure
C++ exception with description "ncv must satisfy nev < ncv <= n, n is the size of matrix" thrown in the test body.
[ FAILED ] NormalizedGraphCut.SimpleGraph (0 ms)
[ RUN ] NormalizedGraphCut.SimpleGraph1
unknown file: Failure
C++ exception with description "ncv must satisfy nev < ncv <= n, n is the size of matrix" thrown in the test body.
[ FAILED ] NormalizedGraphCut.SimpleGraph1 (0 ms)
(the third runs normally after that).
Sorry to hit you with all these questions; we're very new to Theia, but we're really hoping to get it to work because it would save us a lot of time and trouble. Thanks so much for all your support! Let me know if you'd still like me to email you some sample data.