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/value/int_u8.hh>
00028
00029 #include <mln/core/alias/w_window2d_int.hh>
00030 #include <mln/win/rectangle2d.hh>
00031 #include <mln/core/pixel.hh>
00032
00033 #include <mln/debug/iota.hh>
00034 #include <mln/pw/cst.hh>
00035 #include <mln/border/thickness.hh>
00036 #include <mln/linear/local/convolve.hh>
00037
00038
00039 int main()
00040 {
00041 using namespace mln;
00042 using value::int_u8;
00043
00044 const unsigned size = 3;
00045 border::thickness = size - 1;
00046
00047 image2d<int_u8> ima(size, size);
00048 debug::iota(ima);
00049
00050 point2d p = point2d(1,1);
00051 w_window2d_int w_win = make::w_window(win::rectangle2d(size, size),
00052 pw::cst(1));
00053
00054 int res;
00055 {
00056 linear::local::convolve(ima, p, w_win, res);
00057 mln_assertion(res == size*size * (size*size + 1) / 2);
00058 }
00059
00060 {
00061 typedef image2d<int_u8> I;
00062 linear::local::convolve(pixel<const I>(ima, p), w_win, res);
00063 linear::local::convolve(pixel<I>(ima, p), w_win, res);
00064 }
00065 {
00066 linear::local::convolve(make::pixel(ima, p), w_win, res);
00067 mln_assertion(res == size*size * (size*size + 1) / 2);
00068 }
00069
00070 res = 0;
00071 }