35 #include "levels_facilities.h" 44 template<
typename Iterator>
typename iterator_traits<Iterator>::value_type
45 median(Iterator first, Iterator last)
47 Iterator mid = first+(last-first-1)/2;
48 nth_element(first,mid,last);
49 if ((last-first)&1)
return *mid;
50 return typename iterator_traits<Iterator>::value_type
51 (0.5*((*mid)+(*min_element(mid+1,last))));
56 int median_filter_cxx_module (
int argc,
const char **argv)
59 "<input map> <output map> <radius in arcmin>");
61 double radius = stringToData<double>(argv[3])*arcmin2rad;
69 for (
int m=0; m<inmap.Npix(); ++m)
71 inmap.query_disc(inmap.pix2ang(m),radius,pixset);
72 list.resize(pixset.nval());
74 for (
tsize j=0; j<pixset.nranges(); ++j)
75 for (
int i=pixset.ivbegin(j); i<pixset.ivend(j); ++i)
77 list[cnt++] = inmap[i];
78 outmap[m] = (cnt>0) ? median(list.begin(),list.begin()+cnt)
void read_Healpix_map_from_fits(fitshandle &inp, Healpix_Map< T > &map, int colnum)
void module_startup(const std::string &name, bool argc_valid, const std::string &usage, bool verbose=true)
void write_Healpix_map_to_fits(fitshandle &out, const Healpix_Map< T > &map, PDT datatype)
bool approx(F a, F b, F epsilon=1e-5)
const double Healpix_undef
Healpix value representing "undefined".