7 – Camera Calibration database
The Argus project contains a growing database of camera calibration coefficients using the standard pinhole + radial and tangential distortion model as well as the fisheye or omnidirectional model described in Scaramuzza et al. (2006) and Urban et al. (2015).
These coefficients may be useful for other purposes so we provide them here in an occasionally updated set of tables. Scroll down – the tables are wide so they’re pushed down below the WordPress decorations on the right of the page.
Note that although the settings specify the recording rate in frames per second (fps), this is not expected to influence the camera lens calibration. Furthermore, different “color” GoPro cameras of the same series typically have the same lens properties if they are in the same shooting mode, so you can likely use GoPro Hero3 White settings for a GoPro Hero3 Black as long as they’re in the same resolution and viewing angle.
Cameras calibrated with the standard distortion model:
Some definitions:
F = focal length measured in pixels
W = image width in pixels
H = image height in pixels
cx = image center (lateral)
cy = image center (vertical)
A = pixel aspect ratio
k1 = 2nd order radial distortion coefficient
k2 = 4th order radial distortion coefficient
t1 = 1st tangential distortion coefficient
t2 = 2nd tangential distortion coefficient
k3 = 6th order radial distortion coefficient
Camera model | Mode | F | W | H | cx | cy | A | k1 | k2 | t1 | t2 | k3 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GoPro Hero3 Black | 720p-120fps-narrow | 1101 | 1280 | 720 | 639.5 | 359.5 | 1 | -0.359 | 0.279 | 0 | 0 | -0.16 |
GoPro Hero3 White | 1080p-30fps-wide | 1230 | 1920 | 1080 | 960 | 540 | 1 | -0.32 | 0.126 | 0 | 0 | 0 |
GoPro Hero4 Black | 1080p-120fps-wide | 900 | 1920 | 1080 | 959.5 | 539.5 | 1 | -0.25 | 0.06 | 0 | 0 | 0 |
GoPro Hero4 Black | 1440p-80fps-wide | 883 | 1920 | 1440 | 959.5 | 719.5 | 1 | -0.256 | 0.081 | 0 | 0 | 0 |
GoPro Hero4 Black | 2.7K-60fps-medium | 1788 | 2704 | 1520 | 1351.5 | 759.5 | 1 | -0.2583 | 0.0770 | 0 | 0 | 0 |
GoPro Hero4 Silver | 720p-120fps-narrow | 1150 | 1280 | 720 | 640 | 360 | 1 | -0.31 | 0.17 | 0 | 0 | 0 |
Cameras calibrated with the fisheye distortion model:
Some definitions:
FC = a number specifying the height of the projected upon image plane when undistortion is accomplished
W = image width in pixels
H = image height in pixels
C = parameter C
D = parameter D
E = parameter E
cx = image center (lateral)
cy = image center (vertical)
S = polynomial coefficients (5)
O = other polynomial coefficients (varying number)
Camera model | Mode | FC | W | H | C | D | E | cx | cy | S1 | S2 | S3 | S4 | S5 | O | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GoPro Hero3 Black | 720p-60fps-wide | 4 | 1280 | 720 | 1.038962477337479 | 0.011039937655688 | -0.010160134900257 | 3.495968049386204e+02 | 6.551208185430136e+02 | -5.964860064092100e2 | 0 | 0.000006317642603e2 | -0.000000002252898e2 | -0.000000000000015e2 | 0.031410779538021e3 | 0.262278344036545e3 | 0.938094763439947e3 | 1.923855551044671e3 | 2.568702786546738e3 | 2.335637424609530e3 | 1.936382148401258e3 | 1.294290018279926e3 | ||
GoPro Hero3 Black | 1080p-30fps-wide | 4 | 1920 | 1080 | 1.021048672884161 | 0.050700641021834 | -0.050174135405367 | 5.046272334476868e+02 | 9.595023792225445e+02 | -8.756988129568118e2 | 0 | 0.000004379234206e2 | -0.000000001157497e2 | -0.000000000000005e2 | 0.046748122943091e3 | 0.436803624621165e3 | 1.798819969519065e3 | 4.277870045493782e3 | 6.535992531565245e3 | 6.841467269249026e3 | 5.071131915877356e3 | 3.380384896639794e3 | 1.984422499996136e3 | |
GoPro Hero3 Black | 2.7k-30fps | 4 | 2704 | 1524 | 1.010103664726166 | 0.027626104226261 | -0.026842379879826 | 7.154242361854845e+02 | 1.378448922157604e+03 | -1.261953803099550e3 | 0 | 0.000000314144462e3 | -0.000000000078517e3 | 0.000000000000014e3 | 0.018207972798881e3 | 0.109900472073467e3 | 0.378600161566831e3 | 0.995200359638239e3 | 1.681133481617615e3 | 2.745646702683811e3 | 2.494533139909354e3 | |||
GoPro Hero3 Black | 2.7kcin-24fps | 4.8 | 2704 | 1440 | 1.010142699965713 | 0.056189072228797 | -0.055428359998263 | 6.719627349026216e+02 | 1.348111096592302e+03 | -1.181168011225933e3 | 0 | 0.000000353352763e3 | -0.000000000133837e3 | 0.000000000000045e3 | -0.010915494583628e3 | -0.097138619196201e3 | -0.440136716295501e3 | -1.121502230469040e3 | -1.480040734347465e3 | -0.754150026997637e3 | 1.352944119973815e3 | 2.069996305321981e3 | ||
GoPro Hero3 Black | 4k-15fps | 4 | 3840 | 2160 | 1.001151494453641 | 0.038094926574890 | -0.037901447244133 | 1.002377931339334e+03 | 1.953556340432706e+03 | -1.791690890781179e3 | 0 | 0.000000202331087e3 | -0.000000000016437e3 | -0.000000000000003e3 | 0.014726715326858e4 | 0.136554923644694e4 | 0.554387714551459e4 | 1.292957564207057e4 | 1.922002588130750e4 | 1.924512900717616e4 | 1.330366650807437e4 | 0.782923639349421e4 | 0.418149398196921e4 | |
GoPro Hero3 Black | 4kcin-12fps | 4.5 | 4096 | 2160 | 1.000303083861387 | 0.053757474022190 | -0.054021727863310 | 1.003594159571279e+03 | 2.042792490105998e+03 | -1.790873060476198e3 | 0 | 0.000000207063480e3 | -0.000000000019161e3 | -0.000000000000003e3 | 0.038421375060623e4 | 0.377984221587008e4 | 1.645626828732992e4 | 4.173878402843500e4 | 6.827934778214506e4 | 7.539572241611399e4 | 5.735719261133632e4 | 3.019832887177926e4 | 1.237259074829096e4 | 0.476257082225256e4 |
GoPro Hero3 Black | 1440p-48fps | 4 | 1920 | 1440 | 1.000263727706387 | 0.036457567337562 | -0.036141151593174 | 6.859483202825369e+02 | 9.575118816472882e+02 | -8.574307917841457e2 | 0 | 0.000004533399186e2 | -0.000000001373757e2 | 0.000000000000142e2 | 0.040823980616434e3 | 0.367763767761128e3 | 1.464252736627781e3 | 3.379714599070690e3 | 5.051762641847280e3 | 5.270502471520158e3 | 4.011903355856420e3 | 2.938078150796307e3 | 1.877678532184093e3 | |
GoPro Hero3 Black | 960p-48fps | 4 | 1280 | 960 | 0.999984821016412 | 0.035932434111839 | -0.035631399978587 | 4.575550574978913e+02 | 6.399138833590620e+02 | -5.729749714788942e2 | 0 | 0.000007122657255e2 | -0.000000004471922e2 | 0.000000000001889e2 | -0.015543967682837e3 | -0.103262099145795e3 | -0.287575708562884e3 | -0.383356933536081e3 | -0.073757842138703e3 | 0.494647199061879e3 | 1.192731341254540e3 | 1.135360273770770e3 | ||
GoPro Hero3 Black | WVGA-120fps | 4 | 848 | 480 | 1.009032072040352 | 0.040311274198631 | -0.039391290447238 | 2.246529853797306e+02 | 4.260655495716827e+02 | -3.889177785982952e2 | 0 | 0.000009923934804e2 | -0.000000006709810e2 | 0.000000000002219e2 | 0.015936841496895e3 | 0.109263579553096e3 | 0.346182259433937e3 | 0.678975611817417e3 | 0.857007565813106e3 | 1.010455834950723e3 | 0.802126886658310e3 | |||
GoPro Hero4 Black | 1440p-80fps-wide | 4 | 1920 | 1440 | 0.999938379179311 | -0.016187871855188 | 0.016810280637347 | 718.4445375924397 | 977.1355515393601 | -8.477755708037934e2 | 0 | 0.000003883048139e2 | -0.000000001510688e2 | 0.000000000000937e2 | 0.023985653458955e3 | 0.203838160012703e3 | 0.734981309550883e3 | 1.410692016597674e3 | 1.452954876183546e3 | 0.695737475972601e3 | 0.173495542578852e3 | 1.092192190554513e3 | 1.509061883254690e3 | |
GoPro Hero4 Black | 2.7k-60fps-wide | 4 | 2704 | 1520 | 0.999289595465724 | -0.006963540857230 | 0.007533029275197 | 7.669108374384379e+02 | 1.352406563245692e+03 | -1.234767106495970e3 | 0 | 0.000000233157305e3 | -0.000000000021227e3 | 0.000000000000014e3 | 0.003495935840111e3 | -0.000934751560414e3 | -0.079964826002906e3 | -0.160849381110099e3 | 0.072387040959304e3 | 1.641972973579676e3 | 2.202560631107756e3 | |||
GoPro Hero4 Black | 4k-30fps-wide | 4 | 3840 | 2160 | 0.999855446730588 | -0.007072428051427 | 0.007617267596385 | 1.088937028247496e+03 | 1.920792960011589e+03 | -1.750339352554267e3 | 0 | 0.000000156358120e3 | -0.000000000000341e3 | 0.000000000000001e3 | 0.012712262204542e3 | 0.092259347275331e3 | 0.377119290809140e3 | 0.901910976373143e3 | 2.835853284356173e3 | 3.250686093619848e3 | ||||
GoPro Hero4 Black | 2.7k 4:3-30fps-wide | 5.8 | 2704 | 2028 | 1.002479612109967 | -0.002436317109822 | 0.003442834555677 | 9.999567386181384e+02 | 1.374413779158510e+03 | -1.186451177097442e3 | 0 | 0.000000248481215e3 | -0.000000000042082e3 | 0.000000000000027e3 | 0.027027547457438e3 | 0.204554974397187e3 | 0.602623784593015e3 | 0.824181901959244e3 | 0.477441395049410e3 | 0.148197002949612e3 | 1.446621729059608e3 | 2.067405921832096e3 | ||
GoPro Hero4 Black | 1080p-30fps-wide | 4 | 1920 | 1080 | 1.007781524689579 | -0.003542483075365 | 0.003742925400506 | 5.313744653721496e+02 | 9.760901992270241e+02 | -8.782338276361955e2 | 0 | 0.000003102319339e2 | 0.000000000032907e2 | 0.000000000000103e2 | 0.005078009041660e3 | 0.032201672029899e3 | 0.134345783049311e3 | 0.351984725390143e3 | 1.334363515806159e3 | 1.600733049338611e3 | ||||
GoPro Hero4 Black | 960p-60fps-wide | 5 | 1280 | 960 | 0.999446991404943 | -0.001094974428309 | 0.001149761071764 | 4.726683719824036e+02 | 6.506339006993075e+02 | -5.612277003834659e2 | 0 | 0.000004846941429e2 | 0.000000000028547e2 | 0.000000000000354e2 | 0.003928536711933e3 | 0.025801577482894e3 | 0.103206799918244e3 | 0.255378726383932e3 | 0.880152554349658e3 | 1.032908332215831e3 | ||||
GoPro Hero4 Black | 720p-60fps-wide | 4 | 1280 | 720 | 0.999772046685620 | 0.002911897081038 | -0.002638157541992 | 3.517153276518804e+02 | 6.508131998317431e+02 | -5.839327530779753e2 | 0 | 0.000004546856744e2 | 0.000000000271871e2 | 0.000000000000303e2 | 0.004564589316356e3 | 0.025087086078785e3 | 0.088378251137011e3 | 0.220820620779890e3 | 0.873586671326510e3 | 1.060824939018812e3 | ||||
GoPro Hero4 Black | WVGA-240fps-wide | 4 | 848 | 480 | 1.006134958833511 | -3.294295058161427e-04 | 5.270098550859433e-04 | 2.355247543774561e+02 | 4.308256491888478e+02 | -3.874821106938145e2 | 0 | 0.000007030006369e2 | 0.000000000073133e2 | 0.000000000001439e2 | 0.016660776634262e2 | 0.102341271571253e2 | 0.485609841775483e2 | 1.413458342092289e2 | 5.800891528406308e2 | 7.042820095894670e2 |
I am curious if this will be update for the GoPro Hero 6 because that is what I am using at the moment.
Thanks!
Hi David,
We do plan to update this to the Hero6 and later GoPros, but don’t have any on-site at the moment. The Patterns & Calibrate modules should be able to produce distortion models good enough for most purposes, and you can use the resulting values with other Argus modules.
Cheers,
Ty Hedrick
Hi Tyson,
I’m running Argus 2.1 I think (I installed it on 2020-05-26) and it has lens parameters for GoPro Hero6 Black in DWarp. Could I use these values as the camera input values in Wand?
Cheers, and thanks for developing and maintaining this amazing software 🙂
Francisko
Hello,
I am planning to use GoPro Hero 6 Black to record penguins in an aquarium. The cameras will be attached to the aquarium walls – on the outside. I would like to use the max fps setting, which means a wide FOV. Plus perhaps a distortion due to the air to water transition? Therefore, I would like to calibrate my cameras using the dot grid. However, I can’t find it. Could you tell me where exactly I should find the “Extras” folder? Or perhaps email me a jpeg or a pdf of the pattern? Thank you in advance.
Cheers,
Danuta
Hi Danuta,
You can grab the dot grid file from this link – http://argus.web.unc.edu/wp-content/uploads/sites/9976/2018/06/new-calibration-dots.pdf
What you describe sounds like a hard calibration problem and your best shot at getting it to work will be to have the cameras right up against the aquarium glass and calibrate with a dot grid in the water near where the penguins are likely to swim. Good luck, it sounds like a really cool project.
Cheers,
Ty Hedrick
Hi Ty,
Thank you so much!
Cheers,
Danuta
Hi again,
I have run into some problems when trying to use the Argus-Calibrate on my .pkl file (with the “Omnidirectional model” for the Distortion parameter). The Log returned the following error:
Traceback (most recent call last):
File “c:\python\lib\site-packages\argus_gui-2.1.dev3-py3.6.egg\argus_gui\resources\scripts/argus-calibrate”, line 93, in
if calibrator.get_initial():
File “c:\python\lib\site-packages\argus-0.0.9-py3.6.egg\argus\calibrations.py”, line 146, in get_initial
NameError: name ‘INITIAL_FISHEYE’ is not defined
Is there a step I have missed, or files I failed to download with Argus? Could you please advise me on how to proceed?
Thank you in advance for your help.
Cheers,
Danuta
How do I get the Fx and Fy for the camera matrix? Only one focal length is given here (F).
Hi Will,
Argus assumes that Fx and Fy are identical and represents them both with F. This assumption appears to hold for all modern consumer grade hardware and enforcing it makes the optimization process a bit more constrained and thus a bit more reliable.
Cheers,
Ty Hedrick
Hello,
I love the idea of this site, your database can be really helpful.
Part of my thesis is a photogrammetric model (in Photoscan) with a GoPro Hero 4 Black. I grabbed a video at 120fps, 1920×1080, Narrow FOV and fisheye distortion. I think that the resolution and the narrow mode can be the cause of different calibration parameters than the ones included in the table above. Could you help me determine them?
Hi Panos,
I’ll see if we have a lens calibration for the Hero4 black in that shooting mode. However, I’m a bit unclear on your description – you wrote narrow & fisheye, but the GoPro narrow and medium modes are usually best calibrated with a pinhole (i.e. radial + tangential coefficients) model instead of a fisheye model (required for wide modes). Do you have a specific need for fisheye coefficients?
Cheers,
Ty Hedrick
Hi~
I’d like to use GoPro Hero4 Black as Cameras calibrated, mode:2.7k-60fps-wide.
Could someone kindly tell me how to use the following parameters in Fisheye camera model for opencv (linl:https://docs.opencv.org/4.1.0/db/d58/group__calib3d__fisheye.html)
—————————————————————–
C = parameter C
D = parameter D
E = parameter E
S = polynomial coefficients (5)
O = other polynomial coefficients (varying number)
Thanks!
Hi Gary,
Argus uses two different “fisheye” camera models for removing distortion from cameras with a very wide field of view. The one you’re referencing is Davide Scaramuzza’s Omnidirectional Camera model (see http://rpg.ifi.uzh.ch/docs/omnidirectional_camera.pdf). This model does not correspond to the “stock” OpenCV fisheye camera model, and there is no native OpenCV implementation, but see undistort.py in argus_gui and the docs for the undistorter at https://argus-docs.readthedocs.io/en/latest/
Cheers,
Ty Hedrick
Thank you for your detailed reply and the suggestion. I’ll look into it.
Hi there,
is there a table with the information above for the Hero Session?
Thank you!
Hi, Mark:
We do not have a Hero Session in house to test. However, Argus is designed for you to make your own profiles. Check out the documentation to see how to film a dot grid, then run Patterns and Calibrate in Argus to make your own profile.
As one note: if you are filming in a wide mode, choose “Omnidirectional” in Argus-Calibrate. Choose “Pinhole” for medium and narrow modes.
Cheers,
Brandon Jackson
it’s probably too late, but I just created the matrix with opencv 4.7.0 for GoPro Session5
“`
camera_matrix:
– – 1571.032114943516
– 0.0
– 1821.056944795136
– – 0.0
– 1590.172674168589
– 1375.603445490993
– – 0.0
– 0.0
– 1.0
dist_coeff:
– – -0.21475599151688318
– 0.05125658290605931
– 0.00045962738286915727
– 0.0005862283750704241
– -0.00602300442453335
“`
Hey,
your databse looks great! Do you also have the camera calibration coefficients for the GoPro Hero5 Black (standard distortion model)?
I am interested in the values of all modes. I could not find a detailed description in the internet. Does someone have an idea where I can find the required information?
Thank you in advance!
Cheears
Hi konstantinblum@web.de,
Unfortunately, we never had a Hero 5 camera in house so I don’t have the calibration parameters for it. If you have one I can walk you through calibrating it. Also, my notes do say that the Hero5 is the first GoPro to have the “linear” mode option, and that the hardware distortion removal of linear mode is more consistent than the Argus software implementation, so you should probably use linear mode. I don’t remember if the Hero 5 has a “narrow/medium/wide” field of view setting or a slider; if it is a slider you’re probably best using the maximum or minimum only since those are the only repeatable settings.
Cheers,
Ty Hedric
Dear Hedric,
Thank you so much for your fast response.
The Hero 5 has a narrow/medium/wide field of view setting, but unfortunately nobody remembers in which mode the pictures were recorded.
Do you know whether there have been big changes according the camera coefficients from Hero 4 to Hero 5?
Is there a possibility to get the full table with the camera coefficients for the standard distortion model? Above, only parts of the table are visible. This would already be very helpful to get the workflow done.
Thank you in advance!
Cheers,
Julian
Hi Julian,
Here’s a spreadsheet with the only Hero4 pinhole coefficients I have, they may be of some use – I do have some email correspondence suggesting that the Hero 5 and Hero 4 have pretty similar lens settings.
Note that all “wide” modes require a fisheye distortion model, only narrow and medium work with the standard pinhole model.
Do you know if all cameras were using the same mode? Also, it might be possible to use the GoPro-provided software to find out what shooting mode the camera was in; there are several metadata streams in the mp4 file that are GoPro proprietary and Argus can’t read.
Cheers,
Ty Hedrick
Mode focal_length image_width image_height cx cy aspect_ratio k1 k2 t1 t2 k3
2.7K-60fps-medium 1788 2704 1520 1351.5 759.5 1 -0.2583 0.077 0 0 0
1080p-120fps-narrow 1780 1920 1080 959.5 539.5 1 -0.255 -0.07 0 0 0.3
Dear Hedrick,
thank you so much for the table of coefficients and the information. This was very helpful!
I will have a closer at the metadata, thank you for that suggestion.
Cheers,
Julian