Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void medianFilter0(const size_t& radius) {
- std::vector<grayvalue_t> temp(_pixels.size());
- size_t i, j;
- for (i = 0; i < R(); i++){
- for (j = 0; j < C(); j++){
- grayvalue_t ans = calc_neighbors(radius,i,j);
- temp[i*C() + j] = ans;
- }
- }
- for (i = 0; i < R(); i++){
- for (j = 0; j < C(); j++){
- _pixels[i*C() + j]=temp[i*C() + j];
- }
- }
- } // medianFilter0
- grayvalue_t calc_neighbors(const size_t& radius, size_t i, size_t j){
- std::vector<grayvalue_t> tempvec((2 * radius + 1)*(2 * radius + 1);
- size_t ii,jj,neighbors_num = 0;
- for (ii = i - radius; ii <= i + radius; i++){
- for (jj = j - radius; jj <= j + radius; j++){
- if (isInside(ii,jj){
- tempvec[neighbors_num++] = getPixel(ii, jj);
- }
- }
- }
- std::sort(tempvec.begin(), tempvec.begin() + neighbors_num);
- return tempvec[(neighbors_num - 1) / 2];
- }
- bool isInside(size_t i, size_t j){
- return i >= 0 && j >= 0 && i < R() && j < C();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement