跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

处理由去马赛克引起的丢失像素值#

在彩色相机中,RGB 值是通过使用去马赛克(有时也称为插值)算法从像素数据计算得出的。搜索“Bayer 转换”将向您展示执行此操作的多种方法。下面展示了一个简单的转换示例:

Bayer 转换

该示例展示了一个“RG”Bayer 排列,其中每个像素的完整 RGB 信息都是根据该像素及其相邻像素的相应 Bayer 排列强度值推导出来的。绿色分量强度取平均值。正如您所看到的,该过程在图像帧边缘没有更多来自相邻像素的信息时,会遇到一些边界情况。当前像素的右侧和/或下方没有像素。

许多复杂的 Bayer 转换都会发生这种情况,因为来自周围像素的信息至关重要。终端用户解决方案可以通过不同方式处理这些情况。例如,应用程序可以将倒数第二个像素的数据复制到最后一个像素中。

为了提供完全的灵活性,图像边缘和角落处的像素值将为零 (0)。这会在最后一行和最后一列中产生黑色像素。

可以使用以下 pylon C++ API 转换器函数裁剪这些像素:

CImageFormatConverter converter;
converter.OutputPixelFormat = PixelType_BGR8packed;
converter.InconvertibleEdgeHandling = InconvertibleEdgeHandling_Clip;

或使用 pylon .NET API:

private PixelDataConverter converter = new PixelDataConverter();
converter.OutputPixelFormat = PixelType.BGRA8packed;
converter.Parameters\[PLPixelDataConverter.InconvertibleEdgeHandling\].TrySetValue(PLPixelDataConverter.InconvertibleEdgeHandling.Clip);

以下代码演示了 pylon C.NET 中的此函数:

PYLON_IMAGE_FORMAT_CONVERTER_HANDLE hImageCon = Pylon.ImageFormatConverterCreate();
NODEMAP_HANDLE nodemap = Pylon.ImageFormatConverterGetNodeMap(hImageCon);
NODE_HANDLE node = GenApi.NodeMapGetNode(nodemap,"InconvertibleEdgeHandling");
GenApi.NodeFromString(node,"Clip");

返回知识库文章