2011-08-11 26 views
0

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

答えて

0

Wikipedia JFIFによる0-255を使用しています。あなたはCbとCrの色の違いに128を加えなければならないようです。

関連する問題