0
\$\begingroup\$

I am involved in a community project where I need to employ computer vision on common smartphone models (Samsung Galaxy S 5/6/7, iPhones etc.). Doing that involves calibrating the phone's camera for computer vision. People will be using their phones within the project and I wonder whether I may be able to calibrate the camera on given phone models myself and only supply calibration data to the users so they wont have to bother with a camera calibration themselves. The camera's focus will be fixed (probably to infinity).

I think the problem goes back to the smartphone's camera manufacturing precision - if it is good enough, a "pre-calibration" may be possible. The sensor placement within PCB and (autofocus) lens properties are probably in question here. Unfortunately I nave no experience with surface mount large-scale manufacturing process to judge on the precision. I guess the camera modules are probably supplied as a whole which I think could help to keep the precision (sensor and lens are enclosed in a single device which is then places on phone's motherboard?).

EDIT: Simply said - should all the cameras of the exact given model be physically same (both dimensions and placement of lens vs sensor, also same lens distortion) than a single calibration (or say an average from 10 calibrations on 10 various phone pieces of that same model) should be enough for the rest of the crowd (1000s of users) using that model.

\$\endgroup\$
  • 1
    \$\begingroup\$ i would not rely on any sort of pre-calibration; use the image itself to find the dimensions and ratios. \$\endgroup\$ – dandavis Apr 21 '17 at 9:25
  • \$\begingroup\$ If you have a smartphone available that is not totally glued up, take it apart and have a look at the camera. It usually is a module connected to the main PCB with some flex cable. It is also wiggling around a lot in its position. Depending on what you actually want to calibrate, this means that even just shaking the phone will void the calibration. We have no ideas about the scales involved. \$\endgroup\$ – PlasmaHH Apr 21 '17 at 9:26
  • \$\begingroup\$ I am talking about a common camera calibration with OpenCV. I edited the question and added link to calibration procedure. \$\endgroup\$ – Kozuch Apr 21 '17 at 9:40
  • \$\begingroup\$ @dandavis Yes I will be using the image itself for the calibration (see link added above), but the question is whether I can only do the calibration once for a single smartphone model. \$\endgroup\$ – Kozuch Apr 21 '17 at 9:42
  • \$\begingroup\$ @Kozuch: oh, that' easier to answer: no; use per-instance, not even per-phone; it might not be the same on tuesday as it was on monday (updates, dropping, smudges). \$\endgroup\$ – dandavis Apr 21 '17 at 9:44
1
\$\begingroup\$

Simply said - should all the cameras of the exact given model be physically same (both dimensions and placement of lens vs sensor) than a single calibration (or say an average from 10 calibrations on 10 various phone pieces of that same model) should be enough for the rest of the crowd (1000s of users) using that model.

So, first of all, I doubt you'll be able to figure out the exact given model – just because two phones look identical on the outside doesn't mean all the components inside are the same. Such phones are manufactured in large numbers, and supply for some of the components needed will be, by a skillful supply management, eventually be switched over, if economic or availability reasons require it.

Then: while I'd indeed expect the manufacturing tolerances of the opto-mechanic aspects of the cameras to be very close, these are not devices sold as calibrated camera systems (as you'd buy them if you were e.g. someone strapping a CV system onto a car). So, the manufacturer won't be spending calibration time on the cameras, and they will somewhat differ.

Then, the camera is somehow fixed inside your phone's enclosure. There's a range of ways of doing that: Gluing the camera to the case, soldering it onto the main PCB, connecting it with a flex cable, fixing it with elastic bands... So, that placement is absolutely not going to be as reliable for different models.

Then: Even if this works, you'll need to implement a calibration routine for one phone. The nice thing about software is: it inherently runs on all compatible computers, so you can run the same calibration on any phone. "Community Project" means that you can probably set up some calibration rig where you just strap your phone onto a well-defined holder, and then calibrate against your calibration target, get e.g. an OpenCV camera distortion matrix, and be done with it within seconds. And then, you'd be able to support any phone with sufficiently good camera!

\$\endgroup\$
  • \$\begingroup\$ Thanks for valuable answer. On Android one easily figures out the exact phone model (like SM-G901F) but you may be right that he manufacturer may switch component even for that exact model. The positioning of the whole camera module (lens+sensor) against phone's PCB is not an issue within the calibration. Finally, an online community is meant - the users will be geographically dispersed so a common "calibration rig" (even though a brilliant idea) is not a solution really. For a calibration user will have to print out checkerboard, measure and glue it on very flat surface, then do calibration. \$\endgroup\$ – Kozuch Apr 21 '17 at 9:56
  • \$\begingroup\$ No, you cannot easily figure out exact model on any phone – why should the software even know about the manufacturer having used a camera with a slightly different lens? \$\endgroup\$ – Marcus Müller Apr 21 '17 at 9:58
  • \$\begingroup\$ Sure, one can only get a model name/number that the manufacturer builds into phone's ROM. Of course this info will not guarantee a 100% exact HW configuration info but I would hope on the branded (higher-end) models the HW configuration does not change that much over manufacturing lifetime. So this is my hope for the project. \$\endgroup\$ – Kozuch Apr 21 '17 at 10:10
  • 1
    \$\begingroup\$ @Kozuch you're approaching this with a bias :) but yeah, that hope is somewhat justified, though I certainly can't claim it works for consumer electronics overly well (but haven't done such investigations on the relation between firmware-known hardware model and actual hardware for smart phones myself) \$\endgroup\$ – Marcus Müller Apr 21 '17 at 10:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.