Skip to content

Scaling#

The Scaling camera feature allows you to zoom in and zoom out of your images.

Using the Feature#

How It Works#

The Scaling feature introduces a virtual sensor plane that can be scaled using the BslScalingFactor parameter. The BslScaledSensorWidth and BslScaledSensorHeight parameters indicate the current size of the virtual sensor.

  • A lower scaling factor increases the size of the virtual sensor.
  • A higher scaling factor decreases the size of the virtual sensor.

Formula

Virtual sensor size = Physical sensor size / BslScalingFactor

Example: Assume your camera sensor has a resolution of 2592 x 1944 pixels. If you set the BslScalingFactor parameter to 0.5, the virtual sensor will be twice the size of the physical sensor, i.e., 5184 x 3888 pixels.

Zooming In#

To zoom in, set the BslScalingFactor parameter to a value lower than 1.0.

This increases the size of the virtual sensor while the image ROI size and position remain the same.

Example: In the example below, the BslScalingFactor parameter is set to 0.5. The size of the virtual sensor halves while the image ROI size and position remain the same.

As a result, image content will appear zoomed in and shifted to the upper left.

Example: Zooming In

Zooming Out#

To zoom out, set the BslScalingFactor parameter to a value higher than 1.0.

This decreases the size of the virtual sensor while the image ROI size and position remain the same.

Info

The virtual sensor can't be smaller than the image ROI.

Therefore, you may have to reduce the height and width of the image ROI before you can zoom out.

Example: In the example below, the BslScalingFactor parameter is set to 2.0. The size of the virtual sensor doubles while the image ROI size and position remain the same.

As a result, image content will appear zoomed out and shifted to the lower right.

Example: Zooming Out

Sample Code#

// Set scaling to 0.5, i.e., set the size of the
// virtual sensor to 2x the size of the physical sensor
camera.BslScalingFactor.SetValue(0.5);
// Get the size of the virtual sensor
double scaledWidth = camera.BslScaledSensorWidth.GetValue();
double scaledHeight = camera.BslScaledSensorHeight.GetValue();
// Disable scaling
camera.BslScalingFactor.SetValue(1.0);
INodeMap& nodemap = camera.GetNodeMap();
// Set scaling to 0.5, i.e., set the size of the
// virtual sensor to 2x the size of the physical sensor
CFloatParameter(nodemap, "BslScalingFactor").SetValue(0.5);
// Get the size of the virtual sensor
double scaledWidth = CFloatParameter(nodemap, "BslScaledSensorWidth").GetValue();
double scaledHeight = CFloatParameter(nodemap, "BslScaledSensorHeight").GetValue();
// Disable scaling
CFloatParameter(nodemap, "BslScalingFactor").SetValue(1.0);
// Set scaling to 0.5, i.e., set the size of the
// virtual sensor to 2x the size of the physical sensor
camera.Parameters[PLCamera.BslScalingFactor].SetValue(0.5);
// Get the size of the virtual sensor
double scaledWidth = camera.Parameters[PLCamera.BslScaledSensorWidth].GetValue();
double scaledHeight = camera.Parameters[PLCamera.BslScaledSensorHeight].GetValue();
// Disable scaling
camera.Parameters[PLCamera.BslScalingFactor].SetValue(1.0);
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
double scaledWidth = 0;
double scaledHeight = 0;
/* Set scaling to 0.5, i.e., set the size of the */
/* virtual sensor to 2x the size of the physical sensor */
errRes = PylonDeviceSetFloatFeature(hdev, "BslScalingFactor", 0.5);
CHECK(errRes);
/* Get the size of the virtual sensor */
errRes = PylonDeviceGetFloatFeature(hdev, "BslScaledSensorWidth", &scaledWidth);
CHECK(errRes);
errRes = PylonDeviceGetFloatFeature(hdev, "BslScaledSensorHeight", &scaledHeight);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetFloatFeature(hdev, "BslScalingFactor", 1.0);
CHECK(errRes);
# Set scaling to 0.5, i.e., set the size of the
# virtual sensor to 2x the size of the physical sensor
camera.BslScalingFactor.Value = 0.5
# Get the size of the virtual sensor
scaledWidth = camera.BslScaledSensorWidth.Value
scaledHeight = camera.BslScaledSensorHeight.Value
# Disable scaling
camera.BslScalingFactor.Value = 1.0

You can also use the pylon Viewer to easily set the parameters.