跳至內容
測試伺服器
開發伺服器

處理去馬賽克(Debayering)所造成的遺失像素值#

在彩色相機中,RGB 值是透過「去拜爾化」(有時也稱為「去馬賽克」)演算法,根據像素資料計算得出的。搜尋「拜爾轉換」即可找到多種執行此操作的方法。以下展示了一種簡單的轉換方式:

拜耳轉換

此範例展示了一個「RG」拜耳陣列,其中每個像素的完整 RGB 資訊,是根據該像素及其鄰近像素的拜耳陣列亮度值所推導而來。綠色亮度值會進行平均處理。如您所見,在畫面邊緣處,由於無法再從鄰近像素取得資訊,此過程會遇到一些邊緣情況。當前像素的右側和/或下方沒有任何像素。

許多複雜的拜耳轉換都會出現這種情況,因為周邊像素的資訊至關重要。在終端用戶解決方案中,可以針對這些情況採取不同的處理方式。例如,應用程式可以將倒數第二個像素的資料複製到最後一個像素中。

為了提供完全的靈活性,圖像在邊框和角落處將以零 (0) 值呈現。這會導致最後一行和最後一列出現黑色像素。

可透過以下pylon C++API 轉換函式對這些像素進行裁切:

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

或者使用pylon .NETAPI:

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");

返回知識文章