Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint norm_val(int val) {
- if (val > 255) return 255;
- else if (val < 0) return 0;
- else
- return val;
- }
- Image unsharp(Image src_image) {
- class KernelMatrix {
- public:
- const int radius = 1;
- const Matrix<double> coef = {{-1./6, -2./3, -1./6},
- {-2./3, 4./3, -2./3},
- {-1./6, -2./3, -1./6}};
- std::tuple<uint, uint, uint> operator()(const Image &img) const {
- double r, g, b;
- r = g = b = 0;
- for (uint i = 0; i < img.n_rows; i++) {
- for (uint j = 0; j < img.n_cols; j++) {
- r += std::get<0>(img(i, j)) * coef(i, j);
- g += std::get<1>(img(i, j)) * coef(i, j);
- b += std::get<2>(img(i, j)) * coef(i, j);
- }
- }
- norm_val(r);
- norm_val(g);
- norm_val(b);
- return std::make_tuple(r, g, b);
- //return norm_pixel(std::make_tuple(r, g, b));
- }
- };
- return src_image.unary_map(KernelMatrix());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement