Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.95 KB | None | 0 0
  1. void medianFilter0(const size_t& radius) {
  2.         std::vector<grayvalue_t> temp(_pixels.size());
  3.         size_t i, j;
  4.         for (i = 0; i < R(); i++){
  5.             for (j = 0; j < C(); j++){
  6.                 grayvalue_t ans = calc_neighbors(radius,i,j);
  7.                 temp[i*C() + j] = ans;
  8.             }
  9.         }
  10.         for (i = 0; i < R(); i++){
  11.             for (j = 0; j < C(); j++){
  12.                 _pixels[i*C() + j]=temp[i*C() + j];
  13.             }
  14.         }
  15.     } // medianFilter0
  16.     grayvalue_t calc_neighbors(const size_t& radius, size_t i, size_t j){
  17.         std::vector<grayvalue_t> tempvec((2 * radius + 1)*(2 * radius + 1);
  18.         size_t ii,jj,neighbors_num = 0;
  19.         for (ii = i - radius; ii <= i + radius; i++){
  20.             for (jj = j - radius; jj <= j + radius; j++){
  21.                 if (isInside(ii,jj){
  22.                     tempvec[neighbors_num++] = getPixel(ii, jj);
  23.                 }
  24.             }
  25.         }
  26.         std::sort(tempvec.begin(), tempvec.begin() + neighbors_num);
  27.         return tempvec[(neighbors_num - 1) / 2];
  28.     }
  29.     bool isInside(size_t i, size_t j){
  30.         return i >= 0 && j >= 0 && i < R() && j < C();
  31.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement