Advertisement
Guest User

Untitled

a guest
Mar 15th, 2013
1,024
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. void  resizeBilinearGray(uint8_t *pixels, uint8_t *temp, int w, int h, int w2, int h2) {
  2.  
  3.     int A, B, C, D, x, y, index, gray ;
  4.     float x_ratio = ((float)(w-1))/w2 ;
  5.     float y_ratio = ((float)(h-1))/h2 ;
  6.     float x_diff, y_diff;
  7.     int offset = 0 ;
  8.  
  9.     for (int i=0;i<h2;i++) {
  10.         for (int j=0;j<w2;j++) {
  11.             x = (int)(x_ratio * j) ;
  12.             y = (int)(y_ratio * i) ;
  13.             x_diff = (x_ratio * j) - x ;
  14.             y_diff = (y_ratio * i) - y ;
  15.             index = y*w+x ;
  16.  
  17.             // range is 0 to 255 thus bitwise AND with 0xff
  18.             A = pixels[index] & 0xff ;
  19.             B = pixels[index+1] & 0xff ;
  20.             C = pixels[index+w] & 0xff ;
  21.             D = pixels[index+w+1] & 0xff ;
  22.  
  23.             // Y = A(1-w)(1-h) + B(w)(1-h) + C(h)(1-w) + Dwh
  24.             gray = (int)(
  25.                         A*(1-x_diff)*(1-y_diff) +  B*(x_diff)*(1-y_diff) +
  26.                         C*(y_diff)*(1-x_diff)   +  D*(x_diff*y_diff)
  27.                         ) ;
  28.  
  29.             temp[offset++] = gray ;
  30.         }
  31.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement