Commit 22980a32 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz

Initial PRCS checkin from my CVS tree.

    prcs2git-id: 0_2.1
parents
;; This file is automatically generated, editing may cause PRCS to do
;; REALLY bad things.
(Created-By-Prcs-Version 1 3 3)
(src/core/regular_image.hh 2110 1009823825 c/23_regular_im 1.1)
(src/value/color.hh 7084 1009823825 b/31_color.hh 1.1)
(src/convert/nrgbhsv.hh 4060 1009823825 11_nrgbhsv.hh 1.1)
(src/convol/fast_gaussian.hh 2963 1009823825 26_fast_gauss 1.1)
(src/core/point1d.hxx 2645 1009823825 c/31_point1d.hx 1.1)
(src/core/border1d.hh 2896 1009823825 d/34_border1d.h 1.1)
(src/morpho/extrema.hh 5331 1009823825 38_extrema.hh 1.1)
(src/core/internal/iter2d.hh 4251 1009823825 d/9_iter2d.hh 1.1)
(src/core/internal/iter1d.hh 4044 1009823825 d/10_iter1d.hh 1.1)
(src/basics3d.hh 1770 1009823825 28_basics3d.h 1.1)
(src/value/cplx.hh 6113 1009823825 b/46_cplx.hh 1.1)
(src/core/iter.hh 2312 1009823825 c/40_iter.hh 1.1)
(src/value/float_p.hh 7183 1009823825 b/44_float_p.hh 1.1)
(src/core/internal/image2d_data.hh 5161 1009823825 d/13_image2d_da 1.1)
(src/meta/basics.hh 2255 1009823825 c/4_basics.hh 1.1)
(src/core/dpointnd.hh 3261 1009823825 c/9_dpointnd.h 1.1)
(THANKS 488 1009823825 4_THANKS 1.1)
(src/core/internal/real_image2d.hh 4137 1009823825 d/4_real_image 1.1)
(src/meta/ufuncs.hh 2738 1009823825 b/51_ufuncs.hh 1.1)
(src/core/bkd_iter1d.hh 2198 1009823825 d/38_bkd_iter1d 1.1)
(src/value/hsv.hh 1913 1009823825 b/25_hsv.hh 1.1)
(src/io/pnm_write3d.hxx 7526 1009823825 b/9_pnm_write3 1.1)
(src/config/system.hh 1612 1009823825 7_system.hh 1.1)
(src/convert/conversion.hh 8477 1009823825 21_conversion 1.1)
(src/morpho/splitse.hh 3132 1009823825 34_splitse.hh 1.1)
(src/core/internal/image1d_data.hh 4290 1009823825 d/15_image1d_da 1.1)
(src/core/internal/real_image1d.hh 4015 1009823825 d/5_real_image 1.1)
(README 4213 1009823825 1_README 1.1)
(src/core/w_window3d.hh 3230 1009823825 c/17_w_window3d 1.1)
(src/core/point3d.hxx 3199 1009823825 c/27_point3d.hx 1.1)
(src/value/rec_int.hh 3500 1009823825 b/37_rec_int.hh 1.1)
(ChangeLog 42430 1009823825 6_ChangeLog 1.1)
(src/core/dpoint1d.hh 2470 1009823825 d/27_dpoint1d.h 1.1)
(src/math/macros.hh 3503 1009823825 b/21_macros.hh 1.1)
(src/core/internal/image1d.hh 3887 1009823825 d/16_image1d.hh 1.1)
(src/core/old/image2d_bin.hh 3428 1009823825 c/50_image2d_bi 1.1)
(src/value/rec_value.hh 6904 1009823825 b/36_rec_value. 1.1)
(src/core/point3d.hh 2627 1009823825 c/28_point3d.hh 1.1)
(src/morpho/laplacian.inc 1882 1009823825 41_laplacian. 1.1)
(src/core/objs.hh 1863 1009823825 c/34_objs.hh 1.1)
(src/core/w_window.hh 1786 1009823825 c/20_w_window.h 1.1)
(src/morpho/geodesic_erosion.hh 2710 1009823825 36_geodesic_e 1.1)
(src/core/fwd_iter1d.hh 2197 1009823825 d/21_fwd_iter1d 1.1)
(src/core/dpoint2d.hxx 2781 1009823825 d/24_dpoint2d.h 1.1)
(src/convert/nrgbhsi.hh 3577 1009823825 15_nrgbhsi.hh 1.1)
(src/core/image1d.hh 4138 1009823825 c/47_image1d.hh 1.1)
(src/morpho/top_hat.inc 3605 1009823825 39_top_hat.in 1.1)
(src/core/border2d.hh 3844 1009823825 d/33_border2d.h 1.1)
(src/core/pred.hh 3264 1009823825 c/26_pred.hh 1.1)
(src/core/neighborhood.hh 1780 1009823825 c/38_neighborho 1.1)
(demo/image.cc 2779 1009823825 d/46_image.cc 1.1)
(demo/morpholena.cc 3528 1009823825 d/43_morpholena 1.1)
(src/morpho/stat.hh 3260 1009823825 50_stat.hh 1.1)
(src/io/pnm_read_common.hxx 2814 1009823825 b/10_pnm_read_c 1.1)
(src/morpho/watershed.hxx 10774 1009823825 47_watershed. 1.1)
(src/convol/fast_gaussian_coefficient.hh 7584 1009823825 24_fast_gauss 1.1)
(src/convert/colorconv.hh 2822 1009823825 18_colorconv. 1.1)
(src/core/internal/rec_operable.hh 3905 1009823825 d/2_rec_operab 1.1)
(src/morpho/watershed.hh 5781 1009823825 48_watershed. 1.1)
(src/core/window3d.hh 7573 1009823825 c/13_window3d.h 1.1)
(src/meta/array.hxx 6346 1009823825 c/5_array.hxx 1.1)
(src/core/macros.hh 1879 1009823825 c/39_macros.hh 1.1)
(src/utils/stat.hh 2962 1009823825 9_stat.hh 1.1)
(src/core/bkd_iter2d.hh 2312 1009823825 d/37_bkd_iter2d 1.1)
(src/core/neighborhood3d.hh 5559 1009823825 c/35_neighborho 1.1)
(src/value/bin.hh 3325 1009823825 b/49_bin.hh 1.1)
(src/morpho/reconstruction.hh 8983 1009823825 35_reconstruc 1.1)
(src/morpho/hit_or_miss.inc 3633 1009823825 42_hit_or_mis 1.1)
(src/core/dpoint2d.hh 2470 1009823825 d/25_dpoint2d.h 1.1)
(src/core/compose.hh 3722 1009823825 c/22_compose.hh 1.1)
(src/core/internal/image2d.hh 4129 1009823825 d/14_image2d.hh 1.1)
(src/morpho/erosion.hh 4637 1009823825 b/4_erosion.hh 1.1)
(src/morpho/minmax.hh 2436 1009823825 b/0_minmax.hh 1.1)
(src/morpho/opening.hh 1626 1009823825 51_opening.hh 1.1)
(src/core/image2d.hh 4622 1009823825 c/45_image2d.hh 1.1)
(src/core/pointnd.hh 2960 1009823825 c/10_pointnd.hh 1.1)
(src/value/ops.hh 5913 1009823825 b/40_ops.hh 1.1)
(src/Makefile.am 4827 1009823825 27_Makefile.a 1.1)
(src/basics1d.hh 1720 1009823825 d/41_basics1d.h 1.1)
(src/meta/ucmp.hh 3334 1009823825 c/0_ucmp.hh 1.1)
(src/core/fwd_iter2d.hh 2289 1009823825 d/20_fwd_iter2d 1.1)
(src/morpho/laplacian.hh 1691 1009823825 b/1_laplacian. 1.1)
(src/convert/nrgbhsl.hh 4260 1009823825 12_nrgbhsl.hh 1.1)
(src/core/old/image2d.hxx 5883 1009823825 c/51_image2d.hx 1.1)
(src/basics2d.hh 1768 1009823825 b/7_basics2d.h 1.1)
(src/io/file.hh 2841 1009823825 b/17_file.hh 1.1)
(src/utils/timer.hh 2554 1009823825 8_timer.hh 1.1)
(src/core/apply.hh 6967 1009823825 d/39_apply.hh 1.1)
(src/io/pnm_read.hxx 5963 1009823825 b/16_pnm_read.h 1.1)
(src/convert/bound.hh 2063 1009823825 22_bound.hh 1.1)
(src/core/internal/real_image3d.hh 4299 1009823825 d/3_real_image 1.1)
(src/morpho/opening.inc 2624 1009823825 40_opening.in 1.1)
(src/morpho/hit_or_miss.hh 1729 1009823825 b/2_hit_or_mis 1.1)
(src/value/predefs.hh 2717 1009823825 b/39_predefs.hh 1.1)
(src/arith/ops.hh 2584 1009823825 b/23_ops.hh 1.1)
(src/value/to_oln.hh 2466 1009823825 b/35_to_oln.hh 1.1)
(src/utils/histogram.hh 7865 1009823825 10_histogram. 1.1)
(src/meta/logic.hh 2164 1009823825 c/1_logic.hh 1.1)
(src/convert/nrgbxyz.hh 3183 1009823825 16_nrgbxyz.hh 1.1)
(src/core/point.hh 1998 1009823825 c/33_point.hh 1.1)
(src/core/old/image2d_bin.hxx 4736 1009823825 c/49_image2d_bi 1.1)
(src/core/internal/w_window.hh 3591 1009823825 d/1_w_window.h 1.1)
(src/core/accum.hh 1645 1009823825 d/40_accum.hh 1.1)
(img/lena.pgm 262159 1009823825 5_lena.pgm 1.1)
(src/core/w_window2d.hh 3554 1009823825 c/18_w_window2d 1.1)
(src/io/pnm_read3d.hxx 6922 1009823825 b/11_pnm_read3d 1.1)
(src/core/image2d_size.hh 2025 1009823825 c/44_image2d_si 1.1)
(src/value/yuv.hh 1913 1009823825 b/27_yuv.hh 1.1)
(src/core/dpoint.hh 2006 1009823825 d/28_dpoint.hh 1.1)
(src/arith/internal/opdecls.hh 11837 1009823825 b/22_opdecls.hh 1.1)
(src/value/debug.hh 3338 1009823825 b/45_debug.hh 1.1)
(src/core/point2d.hh 2485 1009823825 c/30_point2d.hh 1.1)
(src/io/basics.hh 1474 1009823825 b/12_basics.hh 1.1)
(src/core/point2d.hxx 2908 1009823825 c/29_point2d.hx 1.1)
(src/value/rgb.hh 1928 1009823825 b/33_rgb.hh 1.1)
(src/convert/force.hh 2068 1009823825 20_force.hh 1.1)
(src/value/nrgb.hh 1949 1009823825 b/28_nrgb.hh 1.1)
(src/morpho/closing.hh 1626 1009823825 b/6_closing.hh 1.1)
(src/morpho/geodesic_dilation.hh 2747 1009823825 37_geodesic_d 1.1)
(src/value/int_s.hh 7753 1009823825 b/43_int_s.hh 1.1)
(src/core/border.hh 3080 1009823825 d/35_border.hh 1.1)
(src/level/connected.hh 3667 1009823825 30_connected. 1.1)
(src/value/built_in.hh 6575 1009823825 b/48_built_in.h 1.1)
(configure.ac 312 1009823825 3_configure. 1.1)
(src/core/internal/iter3d.hh 4425 1009823825 d/8_iter3d.hh 1.1)
(src/core/internal/image3d_data.hh 6022 1009823825 d/11_image3d_da 1.1)
(src/morpho/dilation.hh 4655 1009823825 b/5_dilation.h 1.1)
(src/io/pnm.hh 1522 1009823825 b/19_pnm.hh 1.1)
(src/convert/nrgbyuv.hh 3138 1009823825 13_nrgbyuv.hh 1.1)
(src/io/pnm_write_common.hxx 2898 1009823825 b/8_pnm_write_ 1.1)
(src/convol/fast_gaussian.hxx 8527 1009823825 25_fast_gauss 1.1)
(src/level/invert.hh 2707 1009823825 33_invert.hh 1.1)
(src/core/internal/neighborhood.hh 2683 1009823825 d/7_neighborho 1.1)
(src/level/lut.hh 2787 1009823825 29_lut.hh 1.1)
(src/morpho/top_hat.hh 1680 1009823825 49_top_hat.hh 1.1)
(src/core/window1d.hh 3779 1009823825 c/15_window1d.h 1.1)
(src/core/pred_image.hh 1781 1009823825 c/24_pred_image 1.1)
(src/io/base.hxx 8003 1009823825 b/18_base.hxx 1.1)
(src/core/w_window1d.hh 3148 1009823825 c/19_w_window1d 1.1)
(src/level/compare.hh 3341 1009823825 31_compare.hh 1.1)
(src/value/xyz.hh 1911 1009823825 b/32_xyz.hh 1.1)
(src/core/fold.hh 2496 1009823825 c/7_fold.hh 1.1)
(src/value/hsi.hh 1913 1009823825 b/30_hsi.hh 1.1)
(src/core/window2d.hh 5194 1009823825 c/14_window2d.h 1.1)
(src/core/image.hh 2199 1009823825 d/18_image.hh 1.1)
(src/morpho/gradient.hh 1686 1009823825 b/3_gradient.h 1.1)
(src/basics.hh 1943 1009823825 d/42_basics.hh 1.1)
(demo/Makefile.am 265 1009823825 d/44_Makefile.a 1.1)
(src/core/bkd_iter3d.hh 2417 1009823825 d/36_bkd_iter3d 1.1)
(src/convert/nrgbyiq.hh 3156 1009823825 14_nrgbyiq.hh 1.1)
(src/core/dpoint3d.hxx 3042 1009823825 d/22_dpoint3d.h 1.1)
(src/core/winiter.hh 2673 1009823825 c/12_winiter.hh 1.1)
(src/io/pnm_write.hxx 6051 1009823825 b/15_pnm_write. 1.1)
(src/value/vec.hh 6555 1009823825 b/34_vec.hh 1.1)
(src/io/base.hh 3734 1009823825 b/20_base.hh 1.1)
(src/core/structelt.hh 1792 1009823825 c/25_structelt. 1.1)
(src/core/internal/fake.hh 1888 1009823825 d/17_fake.hh 1.1)
(src/value/yiq.hh 1911 1009823825 b/29_yiq.hh 1.1)
(src/value/int_u.hh 6745 1009823825 b/42_int_u.hh 1.1)
(Makefile.am 162 1009823825 2_Makefile.a 1.1)
(src/value/hsl.hh 1913 1009823825 b/26_hsl.hh 1.1)
(src/value/all.hh 1717 1009823825 b/50_all.hh 1.1)
(src/core/image3d.hh 4697 1009823825 c/43_image3d.hh 1.1)
(src/core/window.hh 1772 1009823825 c/16_window.hh 1.1)
(src/core/type.hh 4641 1009823825 c/21_type.hh 1.1)
(src/meta/control.hh 2656 1009823825 c/2_control.hh 1.1)
(src/value/op_traits.hh 6764 1009823825 b/41_op_traits. 1.1)
(src/meta/cmp.hh 2582 1009823825 c/3_cmp.hh 1.1)
(demo/tour.cc 14465 1009823825 d/45_tour.cc 1.1)
(src/core/image1d_size.hh 1900 1009823825 c/46_image1d_si 1.1)
(src/core/fwd_iter3d.hh 2388 1009823825 d/19_fwd_iter3d 1.1)
(src/convert/rgbnrgb.hh 3207 1009823825 17_rgbnrgb.hh 1.1)
(src/morpho/closing.inc 2624 1009823825 44_closing.in 1.1)
(src/core/border3d.hh 5008 1009823825 d/32_border3d.h 1.1)
(src/core/coord.hh 1742 1009823825 d/29_coord.hh 1.1)
(src/core/dpoint1d.hxx 2540 1009823825 d/26_dpoint1d.h 1.1)
(NEWS 4653 1009823825 0_NEWS 1.1)
(src/morpho/gradient.inc 2838 1009823825 43_gradient.i 1.1)
(src/core/old/rec_window.hh 4094 1009823825 c/48_rec_window 1.1)
(src/io/readable.hh 1912 1009823825 b/13_readable.h 1.1)
(src/morpho/fast_morpho.hh 1793 1009823825 46_fast_morph 1.1)
(src/value/cast.hh 4903 1009823825 b/47_cast.hh 1.1)
(src/core/winneighb.hh 3055 1009823825 c/11_winneighb. 1.1)
(src/convert/rgbxyz.hh 3148 1009823825 19_rgbxyz.hh 1.1)
(src/core/internal/objs.hxx 1822 1009823825 d/6_objs.hxx 1.1)
(src/morpho/fast_morpho.hxx 8044 1009823825 45_fast_morph 1.1)
(src/level/fill.hh 1700 1009823825 32_fill.hh 1.1)
(src/convert/basics.hh 1532 1009823825 23_basics.hh 1.1)
(src/core/image_size.hh 2043 1009823825 c/41_image_size 1.1)
(src/core/neighborhood2d.hh 4426 1009823825 c/36_neighborho 1.1)
(src/core/internal/window.hh 3418 1009823825 d/0_window.hh 1.1)
(src/core/contract.hh 2989 1009823825 d/31_contract.h 1.1)
(src/io/pnm3d.hh 1530 1009823825 b/14_pnm3d.hh 1.1)
(src/value/rec_float.hh 1862 1009823825 b/38_rec_float. 1.1)
(src/core/image3d_size.hh 2161 1009823825 c/42_image3d_si 1.1)
(src/core/dpoint3d.hh 2535 1009823825 d/23_dpoint3d.h 1.1)
(src/arith/logic.hh 2276 1009823825 b/24_logic.hh 1.1)
(src/core/internal/image3d.hh 4396 1009823825 d/12_image3d.hh 1.1)
(src/core/neighborhood1d.hh 3853 1009823825 c/37_neighborho 1.1)
(src/core/point1d.hh 2479 1009823825 c/32_point1d.hh 1.1)
(src/meta/array.hh 6151 1009823825 c/6_array.hh 1.1)
(src/core/traverse.hh 3312 1009823825 d/30_traverse.h 1.1)
(src/core/imagend_size.hh 2544 1009823825 c/8_imagend_si 1.1)
This diff is collapsed.
## Process this file with Automake to produce Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.5a
SUBDIRS = src demo
EXTRA_DIST = img/lena.pgm
Olena 0.2b December 13, 2001
* Value:
- Support for HSL and HSV color systems.
- Define internal::default_less<vec<N,T>>.
* Core:
- New window generator: mk_win_ellipse, mk_win_disc,
mk_win_ellipsoid, and mk_win_ball.
* Various #include fixes.
Olena 0.2 November 28, 2001
* Color:
- nrgb_8, nrgb_16, nrgb_32: new types for NTSC RGB. The
conversion from and to YIQ and HSI which assumed NTSC RGB
has been adjusted to actually use nrgb_* (instead of rgb_*)
and renamed accordingly.
- yuv_8, yuv_16, yuv_32: New types.
The currently available conversions are
hsi yuv
\ /
rgb -- nrgb
\ / \
xyz yiq
* Various cleanups and bug fixes. Especially:
- border handling (mirroring, copying) simplified and fixed.
- ++k, --k: return a value with the same type as k.
* I/O:
- pnm/P1, pnm/P3, and pnm/P6 support for image_3d.
Olena 0.1f November 22, 2001
* Core:
- Several bug fixes in memory handling.
* Types:
- New color types: HSI, YIQ; with conversions to and from RGB.
- `min()' and `max()' are now defined with the types (i.e.
not in math/macros.hh), along with the other operators.
Also, these procedures will two arguments of different
types.
* Casts:
- `cast::round': similar to C's round()
- `cast::rbound': ditto, but constrained to fit the
output type's range.
* I/O:
- Support for `image_3d<int_u<N> >' (as PNM P2 & P5).
* Processings
- `level::is_greater_or_equal', `level::is_greater',
`level::is_lower_or_equal', `level::is_lower',
`level::is_equal': Comparisons between images.
- `level::connected_component': Number connected components.
- `morpho::geodesic_dilation', `morpho::simple_geodesic_dilation'.
- `morpho::geodesic_erosion', `morpho::simple_geodesic_erosion'.
- `morpho::get_plus_se_only', `morpho::get_plus_se_p',
`morpho::get_minus_se_only', `morpho::get_minus_se_p': Split
a structural element in a `plus' (lexicaly before than the center)
and `minus' (after).
* Misc:
- `utils::timer': for benchmarking
- `level::lut', `level::hlut': Lookup tables.
Olena 0.1d November 15, 2001
* Core:
- `point's, `dpoint's, and `image_size's feature a `nth()' method,
that returns the value of the nth coordinate.
- `fold': new high order operator.
* Types:
- `vec<N,T>' uses an array to store its elements
and accepts builtin types.
- `rgb<T>' has been replaced by `rgb_8', `rgb_16', `rgb_32'
- `xyz_8', `xyz_16', `xyz_32' are new types.
- the latter six types are instances of the `color' type.
* Processings:
- All basic morpholohical processings (`opening',
`hit_or_miss', `beucher_gradient', etc.) from namespace
`morpho::' have their fast equivalent in namespace
`morpho::fast::'.
- `convert::apply' is similar to `apply' but will work
for all types of conversions while `apply' can only work
on `conversion_to_type' conversions.
* Tools:
- `utils::fill': fill an image
- `utils::f_moments', `utils::f_minmax': statistical functors.
* Casts:
- `cast::bound': similar to `convert::bound'.
* I/O:
- It's possible to load and save as PPM any kind of image2d
whose color has 3 components on 8 bits.
Olena 0.1b November 8, 2001
* New type: rgb<T>
* New processings:
- morpho::watershed_con
- convol::fast::gaussian
- convol::fast::gaussian_derivative
- convol::fast::gaussian_second_derivative
* Conversion are organized in the following hierarchy
conversion<Inferior>
^
|
conversion_to_type<To,Inferior>
^
|
conversion_from_type_to_type<From,To,Inferior>
All children of conversion_from_type_to_type are models of
Adaptable Unary Function. See conversion.hh for more comments.
* The only two functions that perform file i/o are `load' and
`save'. The other functions (`read', `write', `read_pnm',
`write_pnm') have been removed.
* image2d<rgb<int_u8> > can be loaded and saved as ppm.
* All iterators support a new method, cur(), that returns
the current point (or dpoint). It is meant to be used
at places where the compiler is unable to implicitly convert
an iterator into a point (or dpoint).
* Bug fixes:
- Olena now compiles successfully with -pedantic.
- `image2d<int_u8> lena = load("lena.pgm");' works.
- Multiplications and subtractions on 'vec' no longer
perform additions.
Olena 0.1 November 1, 2001
* Initial public release.
This is the second public release of Olena, a generic image processing
library in C++.
This release accompanies the following article
Generic Implementation of Morphological Image Operators,
Jérôme Darbon, Thierry Géraud, and Alexandre Duret-Lutz,
submitted to International Symposium On Mathematical Morphology VI
(ISMM 2002), April 3-5, 2002, Sydney, Australia.
Olena is a project developed by the EPITA Research and Development
Laboratory (www.lrde.epita.fr) since 1997. We did numerous prototypes
and throw-away experiments before settling into the kind of
programming paradigm which is finally here.
This version of Olena has been built in a few weeks (i.e., in a
hurry). Most of the operators have been translated from the sources
of Milena, an image processing library which works only on 2D images
(Milena stands for "mini-Olena") and which is not publicly available.
Therefore this code is still experimental and not very polished.
Especially there is no documentation, sorry. The file demo/tour.cc
attempts to introduce you to the basics of Olena. For the rest, we're
afraid you will have to dig the code.
Please direct any question or comments to <olena@lrde.epita.fr>,
or <olena-bugs@lrde.epita.fr>.
----------------------------------------------------------------------
This code has been tested with GCC 2.95.3 and GCC 3.0.2.
To compile the two programs in the demo/ directory, run
./configure
make
If you want to install the headers files (the library IS the set
of headers, there is no binary) on your system, do
make install
this will install the files in /usr/local/include/oln.
You can tune the '/usr/local/include' part of the path
by passing an --includedir option to configure. For
instance
./configure --includedir=/foo/bar
make install
will install the files in /foo/bar/oln.
It is also easy to build the demo/ files manually, just include
the src/ directory in the include search path of the compiler.
cd demo
g++ -I../src -Wall -O2 tour.cc
With GCC 2.95.x, it's likely you will need to allow the compiler
to instantiate templates to a greater depth than the default (17),
using an option like -ftemplate-depth-50.
----------------------------------------------------------------------
Further information about Olena, can be found into the following
related papers:
* Thierry Géraud, Yoann Fabre, Dimitri Papadopoulos-Orfanos, and
Jean-François Mangin. Vers une réutilisabilité totale des
algorithmes de traitement d'images. In the Proceedings of the 17th
Symposium GRETSI on Signal and Image Processing, vol. 2, pages
331-334, Vannes, France, September 1999. In French (available in
english as Technical Report 9902: Towards a Total Reusability of
Image Processing Algorithms).
* Thierry Géraud, Yoann Fabre, Alexandre Duret-Lutz, Dimitri
Papadopoulos-Orfanos, and Jean-François Mangin. Obtaining
Genericity for Image Processing and Pattern Recognition Algorithms.
In the Proceedings of the 15th International Conference on Pattern
Recognition (ICPR'2000), IEEE Computer Society, vol. 4, pages
816-819, Barcelona, Spain, September 2000.
* Alexandre Duret-Lutz. Olena: a Component-Based Platform for Image
Processing, mixing Generic, Generative and OO Programming. In the
Proceedings of the 2nd International Symposium on Generative and
Component-Based Software Engineering (GCSE 2000), Young Researchers
Workshop (published in "Net.ObjectDays2000"; ISBN 3-89683-932-2),
pages 653-659, Erfurt, Germany, October 2000.
* Alexandre Duret-Lutz, Thierry Géraud, and Akim Demaille. Generic
Design Patterns in C++. In the Proceedings of the 6th USENIX
Conference on Object-Oriented Technologies and Systems (COOTS'2001),
pages 189-202, San Antonio, Texas, USA, January-February 2001.
* Thierry Géraud, Yoann Fabre, and Alexandre Duret-Lutz. Applying
Generic Programming to Image Processing. In the Proceedings of the
IASTED International Conference on Applied Informatics (AI'2001) --
Symposium Advances in Computer Applications, ACTA Press, pages
577-581, Innsbruck, Austria, February 2001.
You can download these papers and related materials from
http://www.lrde.epita.fr/publications/.
The following people contributed to Olena, maybe indirectly through
one of the numerous prototypes Olena has uprisen from. Olena would
not be what it is today without their work.
Alexandre Duret-Lutz
Anthony Pinagot
Clment Faur
Dimitri Papadopoulos-Orfanos
Heru Xue
Ignacy Gawedzki
Jean Chalard
Jean-Sbastien Mouret
Jrme Darbon
Ludovic Perrine
Michal Strauss
Pierre-Yves Strub
Quc Peyrot
Renaud Franois
Rmi Coupet
Thierry Graud
Vincent Berruchon
Yann Rgis-Gianas
Yoann Fabre
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.50])
AC_INIT([olena], [0.2c], [olena-bugs@lrde.epita.fr])
AC_CONFIG_SRCDIR([ChangeLog])
AC_CONFIG_AUX_DIR([tools])
AM_INIT_AUTOMAKE([olena], [0.2c], [:])
AC_PROG_CXX
AC_CONFIG_FILES([Makefile src/Makefile demo/Makefile])
AC_OUTPUT
## Process this file with Automake to produce Makefile.in -*-Makefile-*-
INCLUDES = -I$(top_srcdir)/src
AM_CXXFLAGS = -Wall -W -DNDEBUG -ftemplate-depth-50 -ansi -pedantic
noinst_PROGRAMS = tour morpholena
tour_SOURCES = tour.cc
morpholena_SOURCES = morpholena.cc
#include "basics1d.hh"
#include "basics2d.hh"
#include "basics3d.hh"
#include "core/type.hh"
#include "meta/cmp.hh"
#include "core/pred_image.hh"
#include "arith/ops.hh"
#include "arith/logic.hh"
#include "io/basics.hh"
#include "morpho/watershed.hh"
using namespace oln;
struct a_2dpred {
template<class T>
bin operator()(point2d p, T) const {
return (p.row() + p.col()) % 2;
}
};
template<class _I>
typename mute<_I>::ret
foo(const image<_I>& _input)
{
Exact_cref(I, input);
std::cout << I::name() << std::endl;
typename mute<I>::ret output(input.size());
typename I::iter p(input);
for_all(p) output[p] = input[p] + 51;
return output;
}
template<class _I, class _P>
void bar(image<_I>& _input, const point<_P>& _p)
{
Exact_ref(I, input);
Exact_cref(P, p);
meta::eq<I::dim, P::dim>::ensure();
input[p] = 69;
}
template<class _I, class _P>
void base(image<_I>& _input, const pred_image<_P>& _pred)
{
Exact_ref(I, input);
Exact_cref(P, pred);
meta::eq<I::dim, P::dim>::ensure();
typename I::iter p(input);
for_all (p) {
if (pred[p])
input[p] = 0;
}
}
template <class T>
type::any<T>& id(type::any<T>& v)
{
return v;
}
int main()
{
image2d<int_u8> ima(3,3);
image3d<bin> bi1(2,2,2);
image3d<bin> bi2(2,2,2);
bi1(1,1,0) = true;
bi2(0,1,0) = true;
cout << bi1 << endl;
cout << bi2 << endl;
cout << arith::logic_or(bi1, bi2) << endl;
border::set_width(bi1, 2);
cout << bi1 << endl;
border::adapt_copy(bi1, 3);
cout << bi1 << endl;