2011-08-11 3 views
0

I는 다음의 범위에서의 YCbCr 데이터를 출력 단의 SoC 카메라 모듈이 : (0 -> 255) Y 의 Cb 및 CR (-127 -> 127)해야는 CbCr 값 서명 또는 서명 될

을 이제 제 질문은, libjpeg가 이러한 서명 된 값을 받아들이는지 아니면 서명 된 값을 0 -> 255 범위에 있도록 변경해야합니까?

저는 ATMEL에서 SAM7s-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)?

그리고 누군가가 순서에 조언 할 수 있다면 배열도 포장해야 도움이 될 것입니다. Wikipedia JFIF에 따르면

많은 감사 deBoogle

답변

0

255을 사용하고 있습니다. Cb 및 Cr 색상 차이에 128을 추가해야하는 것처럼 보입니다.