Camera calibration information for BlueROV's camera

Hi,

I have collected few image stream using BlueROV’s camera. Now need to perform image processing with those images. Since I do not have access to the camera anymore, I am wondering if anyone in the forum has those camera calibration parameters and share them. The camera model that I have used is USBFHD06H. The other information that I have for the camera are

Field of view (Horizontal): 80 degree
Field of view (Vertical): 64 degree
Focal length: 2.97 mm
Format: 1/2.9’
Distortion: 1%

Thank you.

Hi @Anirban, welcome to the forum! :slight_smile:

Camera calibration to determine the intrinsic and distortion parameters is unfortunately unique to individual cameras, and will also depend on the lens focus/zoom you were using at the time, as well as some additional light refraction that depends on the salinity and temperature of the water you were operating in. Calibration for the extrinsic parameters is completely situation-dependent (it involves the things being imaged), and likely isn’t what you’re asking about.

I can possibly do an intrinsics calibration in air tomorrow of mine, but be aware that there’s no guarantee that will be close to the parameters of the camera you were using, since mine may be at a different zoom level, have different lens and image placement imperfections in manufacturing, and won’t be in water. At best it might capture some aspect of how the cameras and enclosure domes come from the factory, but I don’t know how consistent either of those are.

Hi Eliot,

Thank you for your response. I totally understand that there are many factors that decide the camera calibration parameters. But even if you can give me the camera calibration parameters when calibrated in air, I think that will allow me to get started.

Thank you.

Anirban

My results were as follows:

'''
Results of camera calibration, as per the opencv tutorial:
  https://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html
  'imgpoints' appending corrected to use sub-pixel corner values
    (`corners2`) instead of the tutorial typo which just uses `corners`.

NOTE: 
  Calibration performed on Blue Robotics' Low Light Camera, in air.
  Camera was inside electronics enclosure, so was affected by dome
    distortion, but the intrinsic parameters and distortion coefficients
    of this setup cannot be assumed to hold true for any other camera or
    setup - calibration is individual device and setup specific.
'''
import numpy as np

# [ f_x,  0 , c_x]
# [  0 , f_y, c_y]
# [  0 ,  0 ,  1 ]
camera_intrinsics_matrix = np.array(
    [[1.032815861728502114e+03, 0.000000000000000000e+00, 9.684981097972511179e+02],
     [0.000000000000000000e+00, 1.033852887510551909e+03, 5.303797546077584002e+02],
     [0.000000000000000000e+00, 0.000000000000000000e+00, 1.000000000000000000e+00]]
)

# [k_1, k_2, p_1, p_2, k_3]
camera_distortion_coefficients = np.array(
    [[1.818389051822951602e-02, -1.445940107627855138e-02, -3.952855470630491520e-04, 
       -1.943097662521165594e-05, 5.055176384358054699e-03]]
)

# mean reprojection error for the images I calibrated with was
mean_error = 0.04207598111470049 # px
1 Like

Thank you for sharing the parameters.

1 Like