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