0

Kinect の深度データを画像 (Bgr565 形式) に変換しています。標準の for ループを使用して (色にマップするために) 深度ピクセルの配列を反復処理すると、滑らかな画像が得られます。しかし、Parallel.For を使用すると、画像がちらつきます。

コードセクションは次のとおりです。どんな助けでも大歓迎です:

// === Single-threaded depth to color conversion ===
        for (int i = 0; i < depthPixelsArray.Length; ++i)
        {
            depth = (short)(depthPixelsArray[i] >> DepthImageFrame.PlayerIndexBitmaskWidth);
            if (depth >= colorBoundary)
                unchecked { colorPixelsArray[i] = (short)0xF800; }
            else colorPixelsArray[i] = depth;
        }

// === Multi-threaded depth to color conversion ===
 Parallel.For (0, depthPixelsArray.Length, delegate(int i)
            {
                depth = (short)(depthPixelsArray[i] >> DepthImageFrame.PlayerIndexBitmaskWidth);
                if (depth >= colorBoundary)
                    unchecked { colorPixelsArray[i] = (short)0xF800; }
                else colorPixelsArray[i] = depth;
            }
            );
4

1 に答える 1

0

並列処理の進行中にそれらをレンダリングしている場合、これが発生する可能性があるようです。シングル スレッドの場合、レンダリングと処理はおそらくシーケンシャルな操作なので、すべて問題なく表示されます。Parallel.For を呼び出すと、返されるのはParallelLoopResultだけですが、ループはまだ完了していません。このまだ処理中の結果をレンダリングすると、ちらつきの原因になる可能性があります。レンダリングに進む前に、結果にIsCompletedが設定されていることを確認する必要があります。

それが役立つことを願っています!

于 2012-06-13T18:41:47.520 に答える