Iは、以下の範囲にYCbCrデータを出力するAAのSoCカメラモジュールを有する:(0 - > 255) Y Cb、Crの(-127 - > 127)万一のCbCr値は、符号付きまたは符号なしこと
を今、私の質問は、libjpegはこれらの符号付きの値を受け入れるのですか、または符号付きの値を0〜255の範囲で変更する必要がありますか?
私は、ATMELがSAM3s-EKの一部として提供するlibjpeg 'bolt-on' jpegコンプレッサを使用しています。 ijg_compress_raw_no_padding機能用のボルトオンパーツのコードは、これはのlibjpegフォームにYCbCrデータの私の素敵なきちんとした配列を取得して操作する限り、私は見ることができるように...以下のようになり同類;-)
static void _init_sarray_imcu_row(JSAMPIMAGE *image,JSAMPLE *src,uint32_t y_pos,uint32_t width,uint32_t rows)
{
JSAMPLE *r0;
JSAMPLE *r1;
JSAMPARRAY ay = (*image)[0];
JSAMPARRAY au = (*image)[1];
JSAMPARRAY av = (*image)[2];
JSAMPROW ry0,ru,rv,ry1;
int i,j;
for(i = 0; i < rows/2 ;i++)
{
r0 = & src[ (i * 2 + y_pos) * width * 2];
r1 = & src[ (i * 2 + y_pos + 1) * width * 2];
ry0 = ay[i*2];
ry1 = ay[i*2+1];
ru = au[i];
rv = av[i];
for(j = 0; j < width /2; j++)
{
ry0[j * 2] = r0[j*4];
ry1[j * 2] = r1[j*4];
ry0[j * 2 + 1] = r0[j*4+2];
ry1[j * 2 +1] = r1[j*4+2];
ru[j] = (r0[ j * 4 + 1] + r1[j*4+1])/2;
rv[j] = (r0[ j * 4 + 3] + r1[j*4+3])/2;
}
}
}
私は、この関数を送信する生データ配列内の値の順序を完全には分かっていません。 YCbCrYやYCbYCrなどがありますが、これは出力画像を見ると明白になるので遊べます。
一部の色が混ざって見える画像が表示されていますが、赤色の&が黄色と緑色に置き換えられているようです。
だから私はそれがそこに失われただけの場合には、私の最初の質問を繰り返します
は、この関数は唯一の地域0-> 255の値を受け入れるか、またはYとカメラからであるとして、それは、(データを受け入れません0~255)、Cb & Cr(-127~127)
そして、もし誰かがその配列を助言することができれば、それは助けになる配列を詰め込むべきです。
感謝 deBoogle