|
- void Blur2D(bitmap_t& bitmap, filter_t& kernel)
- {
- for(long inx = 0, y = 0; y < bitmap.h(); ++y)
- {
- for(long x = 0; x < bitmap.w(); ++x, ++inx)
- {
- double r = 0.0, g = 0.0, b = 0.0;
- for (long n = 0, j = -kernel.radius(); j <= kernel.radius(); ++j)
- {
- long j_k = Edge(j, y, bitmap.h());
- for (long i = -kernel.radius(); i <= kernel.radius(); ++i, ++n)
- {
- long i_k = Edge(i, x, bitmap.w());
- long inx_k = inx + j_k * bitmap.w() + i_k;
- r += bitmap[inx_k].r * kernel[n];
- g += bitmap[inx_k].g * kernel[n];
- b += bitmap[inx_k].b * kernel[n];
- }
- }
- bitmap[inx].r = Clamp<bitmap_t::channel_t>(r);
- bitmap[inx].g = Clamp<bitmap_t::channel_t>(g);
- bitmap[inx].b = Clamp<bitmap_t::channel_t>(b);
- }
- }
- }
就是这段 |
|