最新の CMOS カメラのほとんどは、12 ビットのベイヤー画像を生成できます。12ビットの画像データ配列を16ビットに変換して処理できるようにする最速の方法は何ですか? 実際の問題は、各 12 ビット数値を 4 つのゼロでパディングすることです。リトル エンディアンを想定できます。SSE2/SSE3/SS4 も許容されます。
追加されたコード:
int* imagePtr = (int*)Image.data;
fixed (float* imageData = img.Data)
{
float* imagePointer = imageData;
for (int t = 0; t < total; t++)
{
int i1 = *imagePtr;
imagePtr = (int*)((ushort*)imagePtr + 1);
int i2 = *imagePtr;
imagePtr = (int*)((ushort*)imagePtr + 2);
*imagePointer = (float)(((i1 << 4) & 0x00000FF0) | ((i1 >> 8) & 0x0000000F));
imagePointer++;
*imagePointer = (float)((i1 >> 12) & 0x00000FFF);
imagePointer++;
*imagePointer = (float)(((i2 >> 4) & 0x00000FF0) | ((i2 >> 12) & 0x0000000F));
imagePointer++;
*imagePointer = (float)((i2 >> 20) & 0x00000FFF);
imagePointer++;
}
}