00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <mln/core/image/image2d.hh>
00027 #include <mln/win/rectangle2d.hh>
00028
00029 #include <mln/io/pgm/load.hh>
00030 #include <mln/io/pgm/save.hh>
00031
00032 #include <mln/value/int_u8.hh>
00033 #include <mln/debug/iota.hh>
00034 #include <mln/debug/println.hh>
00035 #include <mln/data/fast_median.hh>
00036
00037 #include <mln/core/dpoints_pixter.hh>
00038 #include <mln/core/pixel.hh>
00039
00040 #include "tests/data.hh"
00041
00042
00043 namespace mln
00044 {
00045
00046 template <typename I, typename W>
00047 void test(I& input, const W& win)
00048 {
00049 mln_site(I) p;
00050 p.row() = p.col() = 1;
00051
00052 {
00053 mln_qixter(I, W) qix(input, win, p);
00054 for_all(qix)
00055 std::cout << qix.val() << ' ';
00056 std::cout << " : " << qix.center_val() << std::endl;
00057 }
00058
00059 {
00060 pixel<I> pix(input, p);
00061 mln_qixter(I, W) qix(input, win, pix);
00062 for_all(qix)
00063 std::cout << qix.val() << ' ';
00064 std::cout << " : " << qix.center_val() << std::endl;
00065 }
00066 }
00067
00068 }
00069
00070
00071
00072 int main()
00073 {
00074 using namespace mln;
00075 using value::int_u8;
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 {
00089 win::rectangle2d rect(51, 51);
00090 border::thickness = 52;
00091
00092 image2d<int_u8> lena;
00093 io::pgm::load(lena, MLN_IMG_DIR "/lena.pgm");
00094 image2d<int_u8> out(lena.domain());
00095
00096 data::fast_median(lena, rect, out);
00097 io::pgm::save(out, "out.pgm");
00098 }
00099
00100 }