跳转到内容

Sensor Bit Depth#

相机的 Sensor Bit Depth 功能允许您更改图像传感器输出数据的位深。

减小传感器位深度可以提高相机的帧速率。增加传感器位深度可以提高图像质量。

该功能的使用#

为什么使用 Sensor Bit Depth#

传感器位深度定义了图像传感器输出的数据的位深度。相机执行的所有其他图像处理均基于此数据。

设置传感器位深度时,请遵循以下准则:

  • 为了获得最佳图像质量,请将传感器位深度设置为值。
    较高的传感器位深度可以改善图像质量,因为相机的内部图像计算基于更高的位深度。
  • 为了获得最佳性能,请将传感器位深度设置为值。
    较低的传感器位深度可以提高性能,因为传感器的读出时间较短。

Sensor Bit Depth 模式#

Sensor Bit Depth 模式允许您定义是否可以独立于所使用的 pixel format 来设置 sensor bit depth。您可以将 BslSensorBitDepthMode 参数设置为以下值之一:

  • Auto:根据使用的 pixel format 自动调整 sensor bit depth。这是默认设置。例如,如果将 pixel format 设置为 Bayer 12,则 sensor bit depth 将自动设置为 12 位。
  • Manual:可以独立于所用的 pixel format 设置 sensor bit depth。例如,您可以将相机配置为基于 12 位传感器数据输出 8 位图像数据(pixel format = Mono 8,sensor bit depth = 12 位)。

信息

  • 在 a2A1920、boA4096 和 boA4112 相机上,如果将 BslSensorBitDepthMode 参数设置为 Auto 并选择 8 位 pixel format(例如 Mono 8),则 sensor bit depth 将设置为 10 位。这样可以在不牺牲性能的情况下提高图像质量。
  • 在 boA4096 和 boA4112 相机上,将 sensor bit depth 设置为 8 位会产生以下效果:
    • 全井容量减少了1/4倍
    • 动态范围减小
    • 提高帧速率

设置 Sensor Bit Depth#

  1. BslSensorBitDepthMode 参数设置为Manual
  2. BslSensorBitDepth 参数设置为所需值。
    例如,将参数设置为 Bpp12,即可将位深度设置为 12 bpp(每像素位数)。

示例代码#

// Set the pixel format to Mono 8
camera.PixelFormat.SetValue(PixelFormat_Mono8);
// Set the sensor bit depth mode to Manual
camera.BslSensorBitDepthMode.SetValue(BslSensorBitDepthMode_Manual);
// Set the sensor bit depth to 8 bit
camera.BslSensorDataWidth.SetValue(BslSensorDataWidth_Bpp8);
INodeMap& nodemap = camera.GetNodeMap();
// Set the pixel format to Mono 8
CEnumerationPtr(nodemap.GetNode("PixelFormat"))->FromString("Mono8");
// Set the sensor bit depth mode to Manual
CEnumerationPtr(nodemap.GetNode("BslSensorBitDepthMode"))->FromString("Manual");
// Set the sensor bit depth to 8 bit
CEnumerationPtr(nodemap.GetNode("BslSensorDataWidth"))->FromString("Bpp8");
INodeMap& nodemap = camera.GetNodeMap();
// Set the pixel format to Mono 8
CEnumParameter(nodemap, "PixelFormat").SetValue("Mono8");
// Set the sensor bit depth mode to Manual
CEnumParameter(nodemap, "BslSensorBitDepthMode").SetValue("Manual");
// Set the sensor bit depth to 8 bit
CEnumParameter(nodemap, "BslSensorDataWidth").SetValue("Bpp8");
// Set the pixel format to Mono 8
camera.Parameters[PLCamera.PixelFormat].SetValue(PLCamera.PixelFormat.Mono8);
// Set the sensor bit depth mode to Manual
camera.Parameters[PLCamera.BslSensorBitDepthMode].SetValue(PLCamera.BslSensorBitDepthMode.Manual);
// Set the sensor bit depth to 8 bit
camera.Parameters[PLCamera.BslSensorDataWidth].SetValue(PLCamera.BslSensorDataWidth.Bpp8);
// Set the pixel format to Mono 8
Pylon.DeviceFeatureFromString(hdev, "PixelFormat", "Mono8");
// Set the sensor bit depth mode to Manual
Pylon.DeviceFeatureFromString(hdev, "BslSensorBitDepthMode", "Manual");
// Set the sensor bit depth to 8 bit
Pylon.DeviceFeatureFromString(hdev, "BslSensorDataWidth", "Bpp8");
/* 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 */
/* Set the pixel format to Mono 8 */
errRes = PylonDeviceFeatureFromString(hdev, "PixelFormat", "Mono8");
CHECK(errRes);
/* Set the sensor bit depth mode to Manual */
errRes = PylonDeviceFeatureFromString(hdev, "BslSensorBitDepthMode", "Manual");
CHECK(errRes);
/* Set the sensor bit depth to 8 bit */
errRes = PylonDeviceFeatureFromString(hdev, "BslSensorDataWidth", "Bpp8");
CHECK(errRes);

您也可以使用 pylon Viewer 轻松设置参数。