コンテンツにスキップ
ステージングサーバー
開発サーバー

デベリングによって引き起こされる画素値の欠損の処理#

カラーカメラでは、デベイヤリング(デモザイキングとも呼ばれます)アルゴリズムを使用して、ピクセルデータからRGB値が計算されます。「Bayer conversion」を検索すると、これを実行するためのさまざまな方法が表示されます。簡単な変換例を以下に示します。

Bayer 変換

この例は「RG」Bayer配列を示しており、各ピクセルの完全なRGB情報は、そのピクセルおよび隣接ピクセルの対応するBayer配列の輝度値から導出されます。緑の輝度は平均化されます。ご覧のとおり、このプロセスでは、隣接ピクセルからの情報がこれ以上利用できないフレームの端で、いくつかのエッジケースが発生します。現在のピクセルの右側や下側にピクセルが存在しません。

周辺ピクセルからの情報が不可欠であるため、これは多くの複雑なBayer変換で発生します。このような状況には、エンドユーザーソリューションにおいてさまざまな方法で対処できます。たとえば、アプリケーションによって、最後から2番目のピクセルデータを最後のピクセルにコピーすることができます。

最大限の柔軟性を提供するため、画像は境界とコーナーにゼロ(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");

ナレッジ記事に戻る