Changeset 617

Show
Ignore:
Timestamp:
02/17/10 11:44:49 (5 months ago)
Author:
anthony_rowe
Message:

added interger yuv conversion

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/projects/cmucam1/ppm-fd/yuv2rbg.c

    r616 r617  
    22#include <stdlib.h> 
    33 
     4int clip(int x) 
     5{ 
     6if(x>255) x=255; 
     7if(x<0) x=0; 
     8return x; 
     9} 
    410 
    511int main() 
     
    713FILE *fp,*out_fp,*mono_fp; 
    814int x,y,x_size,y_size,depth; 
    9 int yc,uc,vc,r,g,b; 
     15int yc,uc,vc,r,g,b,C,D,E; 
    1016char type[32]; 
    1117 
     
    3036        //g = 1.164*(yc - 16) - 0.813*(vc - 128) - 0.391*(uc - 128); 
    3137        //r = 1.164*(yc - 16) + 1.596*(vc - 128); 
    32         r = yc + 1.403*vc; 
    33         g = yc - 0.344*uc - 0.714 * vc; 
    34         b = yc + 1.770 * uc; 
    35         if (r > 255) r = 255; 
    36         if (g > 255) g = 255; 
    37         if (b > 255) b = 255; 
    38         if (r < 0) r = 0; 
    39         if (g < 0) g = 0; 
    40         if (b < 0) b = 0; 
     38        //r = yc + 1.403*vc; 
     39        //g = yc - 0.344*uc - 0.714 * vc; 
     40        //b = yc + 1.770 * uc; 
     41        //r = yc + 1.402 * (uc-128); 
     42        //g = yc - 0.34414 * (vc-128) - 0.71414 * (uc-128); 
     43        //b = yc + 1.772 * (vc-128); 
     44        C= yc - 16; 
     45        D= uc - 128; 
     46        E= vc - 128; 
     47 
     48        r = ( 298 * C           + 409 * E + 128) >> 8; 
     49        g = ( 298 * C - 100 * D - 208 * E + 128) >> 8; 
     50        b = ( 298 * C + 516 * D           + 128) >> 8; 
     51 
     52        r=clip(r); 
     53        g=clip(g); 
     54        b=clip(b); 
    4155 
    4256        fprintf( out_fp,"%c%c%c",r,g,b);