Advertisement
Guest User

suk.cc

a guest
Sep 25th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. uint norm_val(int val) {
  2.     if (val > 255) return 255;
  3.     else if (val < 0) return 0;
  4.     else
  5.         return val;
  6. }
  7.  
  8. Image unsharp(Image src_image) {
  9.     class KernelMatrix {
  10.  
  11.     public:
  12.         const int radius = 1;
  13.         const Matrix<double> coef = {{-1./6, -2./3, -1./6},
  14.                                      {-2./3, 4./3, -2./3},
  15.                                      {-1./6, -2./3, -1./6}};
  16.         std::tuple<uint, uint, uint> operator()(const Image &img) const {
  17.             double r, g, b;
  18.             r = g = b = 0;
  19.             for (uint i = 0; i < img.n_rows; i++) {
  20.                 for (uint j = 0; j < img.n_cols; j++) {
  21.                     r += std::get<0>(img(i, j)) * coef(i, j);
  22.                     g += std::get<1>(img(i, j)) * coef(i, j);
  23.                     b += std::get<2>(img(i, j)) * coef(i, j);
  24.                 }
  25.             }
  26.             norm_val(r);
  27.             norm_val(g);
  28.             norm_val(b);
  29.             return std::make_tuple(r, g, b);
  30.             //return norm_pixel(std::make_tuple(r, g, b));
  31.         }
  32.     };
  33.  
  34.     return src_image.unary_map(KernelMatrix());
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement