29 template <
typename NeighbourT>
30 typename NeighbourT::PixelType
operator()(NeighbourT &nbr) {
31 auto out = nbr.at(nbr.I_c - 1, nbr.I_r - 1) * 1.0f / 16.0f;
32 out += nbr.at(nbr.I_c - 1, nbr.I_r + 1) * 1.0f / 16.0f;
33 out += nbr.at(nbr.I_c + 1, nbr.I_r - 1) * 1.0f / 16.0f;
34 out += nbr.at(nbr.I_c + 1, nbr.I_r + 1) * 1.0f / 16.0f;
35 out += nbr.at(nbr.I_c, nbr.I_r - 1) * 2.0f / 16.0f;
36 out += nbr.at(nbr.I_c - 1, nbr.I_r) * 2.0f / 16.0f;
37 out += nbr.at(nbr.I_c, nbr.I_r + 1) * 2.0f / 16.0f;
38 out += nbr.at(nbr.I_c + 1, nbr.I_r) * 2.0f / 16.0f;
39 out += nbr.at(nbr.I_c, nbr.I_r) * 4.0f / 16.0f;
applying the Gaussian blur 3x3
NeighbourT::PixelType operator()(NeighbourT &nbr)