Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. function sigma( x ) {
  2. return x / (Math.abs(x) + 0.4);
  3. }
  4.  
  5. function avgYUV( data ) {
  6. var rgb = { r : 0, g : 0, b : 0 };
  7. var yuv = { y : 0, u : 0, v : 0 };
  8. var count = 0;
  9. for ( i = 0; i<data.data.length; i=i+4 ) {
  10. // Ignore white color. Suppose we hate it.
  11. if ( data.data[i] == 255 &&
  12. data.data[i + 1] == 255 &&
  13. data.data[i + 2] == 255 ) {
  14. continue;
  15. }
  16. rgb.r = data.data[i] / 255;
  17. rgb.g = data.data[i + 1] / 255;
  18. rgb.b = data.data[i + 2] / 255;
  19.  
  20. yuv.y += 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;
  21. yuv.u += -0.147 * rgb.r - 0.289 * rgb.g + 0.436 * rgb.b;
  22. yuv.v += 0.615 * rgb.r - 0.515 * rgb.g - 0.100 * rgb.b;
  23.  
  24. count += 1;
  25. }
  26.  
  27. yuv.y = yuv.y/count;
  28. yuv.u = yuv.u/count;
  29. yuv.v = yuv.v/count;
  30.  
  31. yuv.y = sigma(yuv.y);
  32. yuv.u = sigma(yuv.u);
  33. yuv.v = sigma(yuv.v);
  34.  
  35. rgb.r = yuv.y + 1.3983 * yuv.v;
  36. rgb.g = yuv.y - 0.3946 * yuv.u - 0.58060 * yuv.v;
  37. rgb.b = yuv.y + 2.0321 * yuv.u;
  38.  
  39. rgb.r = ~~(rgb.r * 255);
  40. rgb.g = ~~(rgb.g * 255);
  41. rgb.b = ~~(rgb.b * 255);
  42.  
  43. return rgb;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement