2012-12-07 2 views
1

여러 픽셀을 YUV (nv21) 이미지 형식에서 RGB 형식으로 변환하려고합니다. (예, 일부 픽셀이지만 런타임 제한 때문에 전체 이미지가 아닙니다) 현재 저는 인터넷에서 decodeyuv420SP 기능 :decodeyuv420sp 단일 픽셀 버전

static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) { 
     final int frameSize = width * height; 

     for (int j = 0, yp = 0; j < height; j++) { 
     int uvp = frameSize + (j >> 1) * width, u = 0, v = 0; 
     for (int i = 0; i < width; i++, yp++) { 
      int y = (0xff & ((int) yuv420sp[yp])) - 16; 
      if (y < 0) y = 0; 
      if ((i & 1) == 0) { 
       v = (0xff & yuv420sp[uvp++]) - 128; 
       u = (0xff & yuv420sp[uvp++]) - 128; 
      } 

      int y1192 = 1192 * y; 
      int r = (y1192 + 1634 * v); 
      int g = (y1192 - 833 * v - 400 * u); 
      int b = (y1192 + 2066 * u); 

      if (r < 0) r = 0; else if (r > 262143) r = 262143; 
      if (g < 0) g = 0; else if (g > 262143) g = 262143; 
      if (b < 0) b = 0; else if (b > 262143) b = 262143; 

      rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff); 
     } 
    } 
    } 

지금 나는 그것이 R, G를 반환 할 수있는 몇 가지 수정 성, 특정 픽셀의 B 값 (X, Y), 을 만들고 싶어하지만 정확히 이해할 수 없다 그것 YUV 픽셀이 둘 이상의 RGB 픽셀에 해당하는 것처럼 보입니다. 누군가이 문제를 도와 줄 수 있습니까? 감사합니다.

답변

0

이것은 빠르고 빠르지 만 작동한다고 생각합니다. 내가하고있는 일은 루프를 제거하고 주어진 X, Y (여기서는 "행"및 "열"로 표현됨)로 대체하는 것입니다. 왜냐하면 우리는 "y"를 사용하여 다른 것을 의미하기 때문입니다.

int uvp = frameSize + (row >> 1) * width, u = 0, v = 0; 
    int yp = row*width + column; 
    int y = (0xff & ((int) yuv420sp[yp])) - 16; 
    if (y < 0) y = 0; 
    if ((column & 1) == 0) { 
     v = (0xff & yuv420sp[uvp++]) - 128; 
     u = (0xff & yuv420sp[uvp++]) - 128; 
    } 

    int y1192 = 1192 * y; 
    int r = (y1192 + 1634 * v); 
    int g = (y1192 - 833 * v - 400 * u); 
    int b = (y1192 + 2066 * u); 

    if (r < 0) r = 0; else if (r > 262143) r = 262143; 
    if (g < 0) g = 0; else if (g > 262143) g = 262143; 
    if (b < 0) b = 0; else if (b > 262143) b = 262143; 

    result = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff); 

희망이 있습니다.

관련 문제