Image Signal Processor

The raw image that is acquired from the image sensor is passed directly into an image signal processor (ISP) to perform further image quality and geometry adjustments. The data flow of the ISP is illustrated below.

ISP Dataflow

ISP Dataflow

Black Level Correction

  • Device Control -> Sensors -> BlackLevel->
    • blackGainBlue Adjusts the black level gain for blue pixels.
    • blackGainGB Adjusts the black level gain for green-blue pixels.
    • blackGainGR Adjusts the black level gain for green-red pixels.
    • blackGainRed Adjusts the black level gain for red pixels.
    • blackGR Adjusts black level for green-red pixels.
    • blackRed Adjusts black level for red pixels.
    • blackBlue Adjusts black level for blue pixels.
    • blackGB Adjusts black level for green-blue pixels.

Python

This parameter is exposed as part of the device handle in Python. Example for blackGR shown.

device_params = device.GetParameters()
blackGR = device_params.Get("blackGR")
res = blackGR.SetValue(float(<value>))
res, value = blackGR.GetValue()
if not res.IsOK():
	# Error handling

ROS2

Only the level controls, not the gain controls are exposed as part of the ROS2 driver. The parameters are runtime adjustable after the driver has been started, example for blackGR shown.

ros2 run bottlenose_camera_driver bottlenose_camera_driver_node --ros-args \
    ... \
    -p blackGR:=4200

White Balance Adjustment

  • Device Control -> Sensors -> WhiteBalance ->
    • wbBlue Adjusts the white balance weighting for the blue component of the image.
    • wbGreen Adjusts the white balance weighting for the green component of the image.
    • wbRed Adjusts the white balance weighting for the red component of the image.
    • wbAuto Let the camera adjust the white balance automatically.

Python

This parameter is exposed as part of the device handle in Python. Example for wbAuto shown.

device_params = device.GetParameters()
wbAuto = device_params.Get("wbAuto")
res = wbAuto.SetValue(float(<value>))
res, value = wbAuto.GetValue()
if not res.IsOK():
	# Error handling

ROS2

All parameters are exposed as part of the ROS2 driver. They are runtime adjustable after the driver has been started, example for wbAuto shown.

ros2 run bottlenose_camera_driver bottlenose_camera_driver_node --ros-args \
    ... \
    -p wbAuto:=true

Color Profile Configuration

Please see detailed instructions here.

Gamma Correction

  • Device Control -> Sensors ->
    • gamma Adjust the gamma exponent of the correction.
    • gammaBlackCorrect Shift the spectrum of the gamma correction to account for black-level changes.

Python

This parameter is exposed as part of the device handle in Python. Example for gamma shown.

device_params = device.GetParameters()
gamma = device_params.Get("gamma")
res = gamma.SetValue(float(<value>))
res, value = gamma.GetValue()
if not res.IsOK():
	# Error handling

ROS2

Only the gamma parameter is exposed as part of the ROS2 driver. It is runtime adjustable after the driver has been started.

ros2 run bottlenose_camera_driver bottlenose_camera_driver_node --ros-args \
    ... \
    -p gamma:=<value>

Image Enhancement

The ISP supports numerous image enhancement features that can be found under
Device Control -> Sensors -> ImageQuality in eBusPlayer.

Python

These parameters are exposed as part of the device handle in Python. Example for brightness shown.

device_params = device.GetParameters()
interval = device_params.Get("brightness")
res = interval.SetValue(float(<value>))
res, value = interval.GetValue()
if not res.IsOK():
	# Error handling

ROS2

None of the Image Enhancement controls are currently exposed as part of the ROS2 driver.

Undistortion and Rectification

Please see Stereo Calibration for more information.

Advanced Features

Please contact us for more information about Color Noise Reduction, lens-shading correction, UV suppression (image quality), edge suppression (image quality), coring suppression (image quality), and non-linear contrast (image quality). These building blocks are exposed as GigE Vision parameters too and can be changed under the appropriate Device Control -> Sensors -> topic handle.

Python

They can also be accessed via the Python API as part of the device handle with the same parameter names shown in eBusPlayer.

ROS2

These features are not exposed as part of the ROS2 driver yet.