ES-DE/html/index.html
Leon Styhre 6c5f42416f Squashed 'external/CImg/' changes from c0becdf88..4d061dcd6
4d061dcd6 math_parser(): Add function 'map()'.
ac599e123 .
b9fa7354f .
673cfe3d5 math_parser(): add mutex to protect access to image list statistics.
862b2c7b1 Fix bug in math evaluator function 'find()', and improve 'colormap' in 'full-colormap' mode.
44b1d556c draw_text(): Fix (non-standard) passing reference to va_start() macro.
6db20df4f .
03b2203ea .
f9619587b math_parser::da_remove(): Improve error message when trying to remove element in empty dynamic array.
3486b3ee7 Remove unused version of _sprintf().
07040bb0e Fix warning about using 'vsprintf()' with clang-12.
5f667e2c7 .
e6c7b23c9 .
099447df4 .
e89b77dfa .
1d5505416 .
163cf1caa .
40a666909 .
86e55504c .
381ba0bfa .
b886800ad .
31648450a .
2e82b7cd9 .
2daf2862f .
c6e4360df .
6c94a6b20 .
d212c0ce3 .
5ff6f38d5 .
3e7a4f21d .
ccf1db65e .
a411cc180 .
e0018918b .
23903475c .
6a8b81169 Command 'text': Custom font can be specified.
a2dea0866 .
d31902272 Fix bug in 3D convolution operator.
210b728a3 math_parser(): add new predefined variable 'v' (eq. to 'u(-1,-1)').
b030ea4e6 math_parser() : Fix parsing arguments for function 'permut()'.
f90e52c4d math_parser: Allow 'norm()' to return a const value when possible.
17b8f5bb5 .
6ffe10e13 .
3c7b877b3 Improve inner/outer parallelization decision in 'correlate/convolve' methods.
56e2268b4 .
f4eeec4d2 .
00ce10760 .
bf0f5dcb2 .
45df40a35 .
43950e631 .
a73a2f129 .
1d033f1da math_parser: Start implementation of function 'offset()'.
0f673c279 .
59a34f2fe .
815c40021 .
422d6ecc3 .
b0ab9037b .
e2af0d091 .
b41f7850e .
aebccaad9 .
9d60f335e .
c65104e8c .
9ac2b7ae1 .
43558edca .
6cd4e15e6 .
fc2ca5606 .
aa5b1149b math_parser: Refactor function 'draw()', and prepare for variant that draws in vector-valued variables.
6c47625f3 .
8d1bbe3ef .
d5fcd765c .
6c43cf325 .
0d54f89e7 .
56cc9a806 .
60411ef05 .
009594d2d .
acf1a2a70 .
8d3bfe7fc .
7078e25a5 .
3d56cac0c .
ea0074152 .
4977f9500 math_parser: Prepare code for implementing 'crop()' on vector-valued variables.
382ad1b59 .
8834a487e cimg_math_parser(): Be more strict in the use of vector-valued arguments for some functions.
c33802810 .
4b3653922 Remove useless test with 'is_relative' for math_parser's  function.
732986f3e .
94f12f994 Allow creation of animated .gif with transparent backgrounds.
f3a5ba719 .
866b6d752 .
f2dc3ef7b Fix issue #368.
55ff59944 .
386fd1871 .
a456e9010 .
28a857b69 .
110ca2d87 .
404303418 .
2e2e0c5e8 .
bf7b13196 .
91b63f722 .
be47c0a33 .
7d232bdbf .
e6012687d Merge pull request #367 from GreycLab/master
642cebcfd .
f650e941d .
50a4ab03f .
cdedc97f8 .
9ec047a1b .
65c462cab .
2eb56a718 Merge pull request #366 from marsh0/develop
a8939b6ef .
334b3e9c1 Fixed unsigned int 64 to unsigned int warning
8e72d80fd .
e3cc84697 .
b1c13dfc5 .
fb79a9d3e Improve computation of matrix pseudoinverse with LU solver.
76fae2fcd Add option 'use_LU' to command 'solve' and math function 'solve()'.
bb03df435 .
d86916333 Merge commands and math functions 'invert' and 'pseudoinvert'.
49f61eb8a Merge commands and math functions 'invert' and 'pseudoinvert'.
a63492bcd Merge commands and math functions 'invert' and 'pseudoinvert'.
a403c817e Add 'lambda' option to the various 'pseudoinvert()' functions.
ca21c1d73 .
e0a825b1a .
931b498a5 .
9112b4711 .
f52871859 .
31dabfb13 Start work on next version 3.2.0.
1e1078317 .
7f3157a04 .
03f877161 _cimg_math_parser(): Slightly change behavior of 'isin()' to allow testing vectors.
c63cf71c7 .
1921b379a .
ec000cd2e cimg_math_parser(): Fix bug in accessing predefined variables 'i0,...i9'.
c3cef822b Merge branch 'master' of github.com:GreycLab/CImg
a28648518 .
9a0f19ded cimg_math_parser(): Fix incorrect handling of 'yM' (regression).
bbad387b3 Merge pull request #359 from bkmgit/ci
c5dcd933e Add badge with build status
b3059fa96 Update branch name
bd0eff91d Merge branch 'master' of github.com:GreycLab/CImg
c6f53e867 _cimg_math_parser(): New predefined variable 'id' (std of current image).
7d5619934 Merge pull request #358 from bkmgit/ci
db2e449fd Add 3 new postcards.
21c168170 Fix wrong detection of multi-threaded expression error in 'CImg<T>::fill()'.
ecfc076a5 Update MacOS dependencies
67ce48f35 Update MacOS dependencies
9c14a9000 Update MacOS dependencies
4184a25ba Update dependencies
813ed36bc Update dependencies
94b62e7fb More formatting fixes
ab395bb38 Formatting fixes
052e71ba7 Enable testing
3405584e2 .
5ad3d1af1 Add math parser function 'da_freeze'.
f53b5ab9c .
957ecc309 .
5934122c9 Add postcard #77.
cb93f21c1 Add postcard #77.
2835ec2e2 .
27ffac840 .
f68f333dd .
f25f7e1e8 .
80e582a0c .
406fbd072 Merge pull request #355 from Poohl/develop
a580234ef font size doc
ae654a628 Final release 3.1.4
e35d78341 Auto-commit for release 3.1.4_pre
54ff2d7af .
25bd0c3c6 .
3bb6458fc Simplify error handling in 'get()'.
39b4f963a .
568b34c4a Make 'swap()' return 'nan'.
0cdfb6714 Make 'set()' return 'nan'.
69a03bf83 Make 'copy()' return 'nan'.
da854d5ae Invert argument order in math function 'store()'.
8f493f7cd Invert argument order in math function 'set()'.
6f1ea6eab .
e82ed2c61 .
f511bb5c8 .
a35cb93e7 .
a452d475c .
2bc84810b .
ab4381619 Merge pull request #353 from amyspark/amyspark/support-msvc
aa4455fe4 Support MSVC's OpenMP 2.0
5f26c8745 .
6f8ee7c07 .
a01439210 Change variable name '_res' to '_resu' to avoid conflict with other badly written libraries.
480b2f0fb Add command 'eye'.
921772323 Start work on 3.1.3 version.
21ba6b4db .
8637d8f4d Define 'cimg_max_buf_size' to another value for 32-bits architectures.
d8bb494d6 Define 'cimg_max_buf_size' to another value for 32-bits architectures.
e8affb299 .
47e249d38 Fix bug with 'break'.
8fe779e8a Final release 3.1.1
e01419fc5 .
52b3d735a .
c4ddd6131 Update plug-in 'cvMat.h'.
104cfb8a6 Start 3.1.1: Fix possible misinterpretation of arithmetic expression in ':=' assignment.
1d1c75c36 .
bc010ab25 .
d27c30fe1 .
254a4cf7b .
5801be3d2 Merge pull request #348 from 7unn3l/master
37cf0c1e5 add global hardening against RAM exhaustions in safe_size
6b78c3b3f .
7b7688dc8 .
c3c8c22d6 .
471083bbd .
efd8d2965 .
577bf7b50 .
9d03892e3 .
f8dba12b8 .
3ca5dcea2 .
29bdc1dce .
a63b71bf0 .
22f226f4c .
761d5c085 .
1665172bb .
c7ee7bc9b .
193abd7b2 Add macro 'cimg_max_file_size' to control maximum allowed file size when reading image files.
0f7f7fb45 .
619cb58dd CImg<>::load_bmp() and CImg<>::load_pandore(): Check that dimensions encoded in file does not exceed file size.
d0f152d53 Fix offset issue when dealing with large images in 'CImg<T>::erode()' and 'CImg<T>::dilate()'.
607aea7c8 Fix 'get()' in math parser.
8824c078d .
0da4cb0ac .
d9a56919a .
52bc43848 .
a02df736a Allow command 'store' to manage bigger images.
0cf328ab6 .
d54761b9b .
72e5e6314 Remove unused variables in 'CImg<T>::opening()' and 'CImg<T>::closing()'
466022095 Format code to 120 max char./line.
790710040 Merge pull request #340 from amyspark/amyspark/powershell
712078d3f load_network: add Powershell fallback for Windows
e7eb920b7 .
fc6ba0eec Add 'CImg<T>::otsu()'.
8404b81a0 .
877ba9da8 CImg<T>::opening() and CImg<T>::closing(): Use min/max of type T rather than min/max of image values, for initialization.
3cd82ea4f Add methods 'CImg<T>::opening()' and 'CImg<T>::get_opening()'
640195d02 Add methods 'CImg<T>::closing()' and 'CImg<T>::get_closing()'
94a7c7f13 .
4171fb912 .
b5f2177c5 .
3200701db .
fddf9334f .
555019468 .
353cd8fbe .
c864cb0ac .
97c2923c0 .
366977648 .
66261e676 .
baf9a8009 .
a87a42217 .
2e99e630c .
23c738e85 .
8a17cb81a .
8b23cf36b .
1190e3f98 .
ae4c10e71 .
b6febab4c .
891d91621 Fix libtiff compilation issues with uint16_t and uint32 datatypes.
ee4dc2f93 .
1189d5050 .
0a260f407 .
983c502b4 .
376ac7316 .
d51bccfce .
82d6b436d .
3b7421231 Update README.md
d7ea859fc .
4efbe8a4f .
fb39f7c96 .
abbcd69f2 .
5651a141f .
6816343ca .
96661b16f .
159baf24f Improve default image normalization behavior with CImgDisplay with integer types.
349274537 .
53cf0df32 Fix multithreading in 'structuretensors()' computation.
1bff57ea5 .
44df5b111 Fix compilation errors for type T=half.
dd1139da4 .
b4365b74b Auto-commit for release 3.0.3_pre
410a7eaad .
52cdaf7ff .
e09678a3d Start work on 3.0.3.
e15278726 Final release 3.0.2
927fee511 .
798007eaa .
a7eebc5c4 .
a27910604 .
032128ac2 .
ac7980fc6 Start work on 3.0.2.
99a27d921 .
ed6984ca2 .
51295de3e .
7c81d801c .
d822b418f .
bcdbaeb61 .
2798b9ea7 .
a5465c18a .
8ad66d28d Final release 3.0.1
0a7c58232 .
d67062b57 .
b86e97ba5 .
0a346c624 _cimg_math_parser: Fix 'da_remove()' when used with multi-channel arrays.
6300c47a1 .
4cd0579d4 math_parser : Add functions 'printc()' and 'printcs()'.
0bda75c10 Fix #337.
d3190b26f .
c5b1a4ce0 Simplify _cimg_math_parser() by merging listin and listout into imglist variable.
db7586fb4 .
de80b8a82 .
93e45d310 [math-core-301] Fix floating point exception when functions da_*() are used with no images on the list.
d4cc50b95 .
f88c9148f .
ba89271ed Final release 3.0.0
e6ef1ad73 .
f687c4629 .
30991fb16 .
26e166b8d .
c0995a47f .
3f4dc79a2 .
4d331435d .
64952efb9 .
dbc19c290 .
9adb5bdb0 .
f72d88d63 .
4d8ee52e6 .
73fef7018 .
175a53870 .
e6cfba22a .
87bd9d126 .
10abd5fac .
00e896a07 .
1cffd322a .
e2e9baab6 .
b05d14e3e Add more boundary conditions to 'boxfilter'.
c39bb2503 .
aebc12a82 .
fa5f067e0 .
63312e7d8 .
a93108d4e Fix bug in 'correlate()'.
e1e77b7c6 .
62bc6b134 math_parser, function merge(): check that specified variable is not a linked reference.
132bb175b .
e0fd8a9b4 .
637eb4c2c .
237a1f4b8 .
481df9dbe .
8d502a5fe .
2ee5b1670 .
63a4fa78d .
5c4860ef3 math_parser: Add functions 'da_back()' and 'da_pop()'.
50c0d9839 math_parser: Add functions 'da_back()' and 'da_pop()'.
67f8c6e4b .
2d2c7f953 .
bb98b67b7 .
6acf1c19e .
c60635e01 .
d6c50bfee .
9798f569d .
5f63bc3d8 .
b2f29613e .
f30babb43 .
920965b0d .
8e01f2833 .
93408dc74 .
6faf752ff .
5a1a2bd92 .
bbecd96f2 .
af9c0a434 .
035125b20 Fix CImg<T>::draw_triangle(), with color-interpolated triangles (Fix #332).
8f949732d .
22190d30e .
bc0160d79 .
c2022354d .
72378e8e3 .
04638b8cd .
527aa2233 .
a6d4956bc .
f09c2b145 .
c967157af .
bedf7d5ea .
de0612004 .
62d3898a9 .
254d842ee .
c0a74ff77 .
5c13300f3 .
2352831c1 .
6e5a14a23 .
e020fdf47 .
60bf6e4ec .
4e9f06083 .
a95a0dcdb .
bd37c5755 .
ba155fd42 .
1a6e02309 .
f1ba20b82 .
04b3f1e29 .
c9eabd65d .
7089938f6 .
47d3a2ea6 .
bcf797fea .
04e037028 .
79ea94dd4 .
7bdd3f9ba .
fbd0be3a1 .
b4f703517 Start the work for supporting new type 'list' in math parser.
f6860f51b Merge pull request #329 from Irgy0/master
41f0d3777 .
8eaf50b64 .
2b7e44e57 .
535924dca Set PNG interlacing on to avoid an error message when reading interlaced pngs.
df4e034f8 .
6c051eb27 Improve detection of .raw files (CR2,NEF,DNG,ARW).
25aaf3850 .
48173196c Fix a few int-overflow bug that could happen in draw_line().
bcfe7c7b2 Start work on v.3.0.0. Fix bug in CImg<T>::draw_polygon() when large integers are used.
cd95217c0 Final release 2.9.9
506fcb51b .
b33dcc8f9 .
96114de6d .
25612a629 .
4ffd314d9 .
4314d6e25 .
90dba23bc .
06dc60988 .
e3e62d883 Add a few optimized pattern detected to evaluate simple math expressions.
c4a7e078a .
595c34a29 .
288e6b8d5 .
c82328019 Optimize CImg<T>::_correlate().
2d83233c4 Merge pull request #322 from xen0n/fix-f1996f1
70876dde3 .
3544285d1 Auto-commit for release 2.9.9_pre
5304630b6 .
eb50adb88 Bump to development version 2.99
2d2731eb6 examples: probe for -mtune=generic support, fix wrong LoongArch support
2e01be63d .
c89f21f73 .
2a1fc8892 .
1258803c0 .
06e7b4c50 .
69f88f3d3 .
634ec5cb7 .
9f8bcec92 .
6a80064f7 .
c62788122 .
a6d3453ca .
e0ba6764e .
b2b2587f6 .
82030f386 .
60c8331bc .
92933de51 .
a021efcde .
def3d2053 .
c498c1d4a .
bc62b89bb .
8485f6964 .
3778d6470 .
6642c07af .
dbe72a293 .
48885df73 .
ac0890316 .
a1a0296e8 .
d7fa86a15 .
62d4b793d .
a154473a4 .
72d6622d2 .
4951ce53a .
4df351bda .
8488374fa .
6c5d95e91 .
bd5ad98b0 .
4baff4a38 .
011cf98e9 .
46f09676f .
f9fc7ec05 .
64214b216 .
2c6199e6c Optimize CImg<T>::_correlate().
1ae6b689a .
6c7dab3a6 .
463a7a9e9 .
7ab29098f .
128d06351 .
0fb83de04 .
2f91d0522 .
64ae3ee54 .
025e85ea5 .
c7ed44f42 .
91ef37e53 .
f92c0ead4 .
29066e1b0 .
00c8c6ba7 .
5a408e8cc .
87226897c .
44b78c7fb .
0bfb8739b Merge pull request #321 from Lucky-Na/master
f1996f10f delete -mtune option on loongarch architecture
3d72e8721 Fix variable prepending operator '..='
499719e16 .
30a5cd2a0 .
43a6228be .
6dabed31d .
4fca316ed correlate() : Fix when used with 3x3,5x5 or 3x3x3 kernels and dirichlet boundary conditions.
c72acfb3a cimg_math_parser() : Allow strings with blank characters to define empty 'begin[_t]()' and 'end[_t]()' blocs.
9423744d5 .
59ffa01f5 .
b1816a335 .
e29daa5b6 cimg_math_parser(): Fix argument counting in functions convolve()/correlate().
b9d347240 .
43af18673 .
a79cada5f .
0275b3d84 .
2b0af18cf .
bf67c30d8 .
6ca2fdcde .
e38d56a2f .
b14e79f6e Fix CImg<T>::convolve() and correlate() for channel_mode==0.
a996c28cf Fix CImg<T>::convolve() and correlate() for channel_mode==0.
63d40db5e CImg<T>::convolve()/correlate() : Fix bug with small kernels and channel_mode==2.
8b2e46ca5 .
d9e5e9551 _cimg_math_parser() : better manage inclusion of begin(), begin_t(), end() and end_t() blocs.
46f043f34 _cimg_math_parser() : allow begin(), begin_t(), end() and end_t() to have empty arguments, and fix possible bug with returned value when multiple end() separated by semicolons.
6fb8ca212 .
59464c694 _cimg_math_parsers(): Fix thread number when math expression is evaluated in parallel.
f8cc94faa .
7c414c67b .
7232ea760 .
9aaf75076 CImg<T>::cimg_math_parser() : Add predefined variable T (max number of threads).
ee59a3f87 .
f5ff164b6 Add commands 'deg2rad' and 'rad2deg'.
28b0562b6 Add 'erf' function.
f7308afab .
d984ca0ea .
96eab6c69 Auto-commit for release 2.9.8_pre
ae16ae5ef .
be4612f61 .
87e8f38b7 cimg_math_parser : Add postfix operator '°' for degree to radian conversion.
6351adce1 .
a68b594bd CImg<T>::_cimg_math_parser() : Add functions 'deg2rad()' and 'rad2deg()'.
a95d03e8b .
a285f0fca cimg_math_parser: Add function 'erfinv()' (Inverse of the gaussian error function).
948cc956c cimg_math_parser: Add function 'errf' (Gaussian error function).
340d0a4c8 .
55e370660 Fix #319
c00abf5f0 Command 'input' : when loading a tiff file, bit depth is now set to status.
7222933de Change 'bits_per_pixel' to 'bits_per_value' in CImg<T>::load_png().
16979f3b3 .
5876d4f7d .
0d9a3c56c .
33a28fddf Temporary disable openmp clauses that slow down execution of CImg<T>::draw_text().
efa524d6d .
b726708e6 Implementation of the operator$() in math parser.
5f4914222 Start support of '$varname' expressions in math parser.
ad7ea9ef1 Improve comments.
0d1e92f3f factorizes the use of 'is_varname()' in 'cimg_math_parser'.
3039446df .
2c5628639 Make function echo() of the math parser accepts no arguments.
0fa6b92a5 .
5f15b8c60 .
37559271f .
d079374d8 .
d7bd9f018 .
e68a184eb .
749bc70ab .
f4b53f6e5 .
cc3c1f1da .
14c95cc60 .
075a7225b .
dd8888fe6 Auto-commit for release 2.9.8_pre
b0f47208f .
68e98b6bf .
68dbb754b .
1a2ff4ed5 .
6c5f78646 .
1d51d0113 .
aa0eaa35c .
f6bf39296 .
771fed51f .
ae07e9402 .
c2ea55532 Simplify memtype values to avoid optimizations in mathparser.
b0bf3f942 Merge branch 'master' of github.com:dtschump/CImg
218efcf9b .
670c4b96b .
91c79ddbe .
b2364dfe6 .
70aaa01e7 .
2970997fc .
4d07ae7cc .
7c15e7916 .
8e381d9ef .
5bcba71c9 .
fde76337e .
7886267e6 .
979de2c2a .
f7d659758 .
30761a532 .
bb00749e6 .
317e5ac5c .
38b70c3cf .
009203b1f .
3ad6a9ae5 .
0794bbb21 .
03781c95a Fix bug in 'draw_text()' when background color provided.
09b9509ae .
b7cd009a5 .
65c6ddc16 .
29ab0faff .
db81f5dd3 .
3645f4fe1 .
8bdba276f .
f4138047f .
30f6b4b06 .
306e56fe6 .
9a1ba9432 .
515bd31a1 .
6ca343326 .
766163fb8 .
9a95c0580 Try to fix warning in _load_cimg().
c9ad21c03 .
a5a6d8145 .
11b76c6be .
acc89aa12 .
50830d050 .
79c98a562 .
4a7bb5179 .
c4b3fa7de .
227ac1511 .
96918daa6 .
32b165ef3 .
a66d1967a .
0b499d9ad Auto-commit for release 2.9.8_pre
f1f7eb052 .
0f67297eb .
a70a9fe8a Final release 2.9.7
f96abe1f9 .
bbc902b73 .
9aafe8661 .
6e2fe28f8 .
84999fc90 .
50010156f .
070ded77c .
b6b16a833 .
19cfa4a58 .
df9386eb1 .
6d2e1b033 .
54362bece .
6b6563f80 .
3aea1583d .
72aebaf5a Merge pull request #307 from lrusak/heic
94427018a .
9546e99a6 .
bd5588194 add heic and avif support via libheif
089aeaa1f .
54eb48990 .
1b0e54e4e .
7109b5f09 .
e8aed2a42 .
8174e8777 .
338f4b6c4 .
1838aef33 .
e48345ab6 .
f30d034a9 .
e15eac073 .
b2129184e .
d9ef878a2 .
5f4047615 .
d3eb0c5eb .
2f7a1ebf1 .
90baf1b6b .
e5084c208 .
391a440af .
70a4532a3 .
eca1daace .
9efa52eb7 .
0cdc54bcf .
a79a2f1c3 .
de1205f66 .
063d9e09a .
ec3f66877 .
324c7d1cc .
1244801b1 .
58196cec7 .
2363d1935 .
ccc362050 .
5c98c31b0 .
c6be2b83a .
8f79526f0 .
1ef7c78d7 .
f913ffa5e .
7db6d0835 Merge pull request #295 from cleeus/fix-pnm-heap-overflows
4f184f89f Fix multiple heap buffer overflows
580d74777 .
755cf717a .
ce329c07f .
33824c014 .
9978daaaf .
f37b255ca .
1222eea73 .
b8a7af571 Merge pull request #282 from Chuvi-w/FIX_VTK
96e5c9e14 Fix syntax error in vtk.h
ea2b86fef .
833b1a589 .
654d46278 .
15d25b190 .
d6955b5e9 .
3f2b7a3a7 .
612044515 .
6f3cacdc3 .
94f6b51e5 .
e0763f2fd .
8f0dcc789 .
d069d8048 .
d501aa3a0 .
9bcfc5b8c .
3a6cd9df0 .
46def454c Merge pull request #263 from UlysseV/MC_improvement
16f2496b6 change func call pattern for isoline3D
d577a6b28 change func call pattern
f71695057 .
fffee0ae0 .
c15123bff .
d0257a2f9 .
01edd73e1 .
bb02b35ea .
92b407d53 .
b26716f3b Merge branch 'master' of github.com:dtschump/CImg
bc2446460 .
a93c51b98 .
ecc8b7337 .
c3960f08f .
f77588f32 Merge pull request #253 from dtschump/develop

git-subtree-dir: external/CImg
git-subtree-split: 4d061dcd67c08e9a36a01875e78b53ee86501dd7
2023-01-06 11:47:13 +01:00

469 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="highslide/highslide.css"/>
<title>The CImg Library - C++ Template Image Processing Library</title>
<script src="jquery-3.5.1.min.js"></script>
<script>var jQuery_3_5_1 = $.noConflict(true);</script>
<script>jQuery_3_5_1(function(){ jQuery_3_5_1("#include_header").load("header.html"); });</script>
<script>jQuery_3_5_1(function(){ jQuery_3_5_1("#include_footer").load("footer.html"); });</script>
<script src="highslide/highslide-full.js"></script>
<script>
hs.graphicsDir = 'highslide/graphics/';
hs.wrapperClassName = 'wide-border';
hs.showCredits = 'false';
</script>
<style>
table tr td { padding: 0.5em; }
</style>
</head>
<body>
<div id="include_header"></div>
<!-- ************* -->
<!-- What is CImg? -->
<!-- ************* -->
<div class="section_title"><p>What is CImg?</p></div><div class="section_content">
<p>
The <span class="gmd_cimg"></span> Library is a <b>small</b> and <b>open-source</b>
<b>C++ library</b> for <b>image processing</b>,
designed with these properties in mind :
</p>
<table>
<tr><td><img src="img/item_usefulness.jpg" alt="Usefulness"/></td>
<td><hr/>
<span class="gmd_cimg"></span> defines <i>classes</i> and <i>methods</i>
to manage images in your own C++ code. You can use <span class="gmd_cimg"></span>
to load/save various file formats, access pixel values,
display/transform/filter images, draw primitives (text, faces, curves, 3d objects, ...), compute statistics,
manage user interactions on images, and so on...
</td></tr>
<tr><td><img src="img/item_genericity.jpg" alt="Genericity"/></td>
<td><hr/>
<span class="gmd_cimg"></span> defines a single image class able to represent datasets having up to
<i>4-dimensions</i> (from 1d scalar signals to 3d hyperspectral volumetric images),
with <i>template pixel types</i> (<span class="gmd_mono">bool,char,int,float,...</span>).<br/>
It also handles image <i>collections</i> and <i>sequences</i>.
</td></tr>
<tr><td><img src="img/item_portability.jpg" alt="Portability"/></td>
<td><hr/>
<span class="gmd_cimg"></span> is <i>self-contained</i>, <i>thread-safe</i> and <i>highly portable</i>. It fully works on
<i>different operating systems</i> (<span class="gmd_mono">Unix,Windows,MacOS X,*BSD,...</span>) and is compatible
with <i>various C++ compilers</i> (<span class="gmd_mono">Visual C++,g++,clang++,icc,...</span>).
</td></tr>
<tr><td><img src="img/item_simplicity.jpg" alt="Simplicity"/></td>
<td><hr/>
<span class="gmd_cimg"></span> is <i>lightweight</i>. It is made of a single header file
<a href="https://github.com/GreycLab/CImg/raw/master/CImg.h"><span class="gmd_monobold">CImg.h</span></a>
that must be included in your C++ source. It defines only <i>four</i> different classes, encapsulated
in the namespace <span class="gmd_mono">cimg_library</span>.
It can be compiled using a minimal set of standard C++ and system libraries only.<br/>
<i>No need for exotic or complex dependencies</i>.
</td></tr>
<tr><td><img src="img/item_extensibility.jpg" alt="Extensibility"/></td>
<td><hr/>
Although not mandatory, <span class="gmd_cimg"></span> can use functionalities of external tools/libraries such as
<a href="http://libboard.sourceforge.net/">Board</a>,
<a href="http://ffmpeg.mplayerhq.hu/">FFMPEG</a>,
<a href="http://www.fftw.org/">FFTW3</a>.
<a href="http://www.graphicsmagick.org/">GraphicsMagick</a>,
<a href="http://www.imagemagick.org/">ImageMagick</a>,
<a href="http://www.netlib.org/lapack/">Lapack</a>,
<a href="http://curl.haxx.se/libcurl/">libcurl</a>,
<a href="http://www.ijg.org/">libjpeg</a>,
<a href="http://www.libpng.org/pub/png/libpng.html">libpng</a>,
<a href="http://www.libtiff.org/">libtiff</a>,
<a href="http://www.imagemagick.org/Magick++/">Magick++</a>,
<a href="http://www.openexr.com/">OpenEXR</a>
<a href="http://http://opencv.willowgarage.com/wiki/">OpenCV</a>
<a href="http://www.openmp.org/">OpenMP</a>
or
<a href="http://xmedcon.sourceforge.net/">XMedCon</a>.
Moreover, a simple <i>plug-in</i> mechanism allows any user to directly enhance the library
capabilities according to his needs.
</td></tr>
<tr><td><img src="img/item_freedom.jpg" alt="Freedom"/></td>
<td><hr/>
<span class="gmd_cimg"></span> is a <i>free, open-source library</i> distributed under the
<a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt"><i>CeCILL-C</i></a> (close to the GNU LGPL)
or
<a href="http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt"><i>CeCILL</i></a> (compatible with the GNU GPL)
licenses. It can be used in commercial applications.
</td></tr>
</table>
<p>
<span class="gmd_cimg"></span> stands for <span class="gmd_mono">Cool Image</span> : It is <i>easy to use</i>, <i>efficient</i> and is intended to be
a very pleasant toolbox to design image processing algorithms in C++. Due to its generic conception, it can cover a wide range
of image processing applications.
</p>
</div><div class="section_end"></div>
<!-- ************* -->
<!-- Book (Fr) -->
<!-- ************* -->
<div class="section_title"><p>Book (Fr)</div><div class="section_content">
<ul>
<li>If you understand French, you may be interested by <a href="https://www.amazon.fr/dp/B08WRCZRR3/ref=cm_sw_em_r_mt_dp_Y4VV7GNQSBQDZ4XQ95YR">the nice book we wrote</a>
on how to use the <span class="gmd_cimg"></span> Library to develop image processing algorithms, from scratch.
In these 318 pages, we review the important concepts of the library and address a wide variety of applications in image processing
(<i>Filtering, Mathematical Morphology, Feature Extraction, Segmentation, Multispectral Approaches, 3D Visualization, etc.</i>).<br/><br/>
<a target="_blank" href="https://www.amazon.fr/dp/B08WRCZRR3/ref=cm_sw_em_r_mt_dp_Y4VV7GNQSBQDZ4XQ95YR"><img class="center_image" src="img/book_cimg.jpg" /></a>
</li>
</ul>
</div><div class="section_end"></div>
<!-- ************* -->
<!-- Authors -->
<!-- ************* -->
<div class="section_title"><p>Authors</p></div><div class="section_content">
<ul>
<li><a href="http://tschumperle.users.greyc.fr/">David Tschumperl&eacute;</a> (project manager)</li>
</ul>
&nbsp;&nbsp;&nbsp;(Check out his <a href="http://opensource.graphics">blog</a>)
<br/><br/>
with the help of many contributors around the world :<br/><br/>
<i>
Maksim Aizenshtein,
Alberto Albiol,
Antonio Albiol,
Kiko Albiol,
Simon Barthelm&eacute;,
Neil Brown,
Haz-Edine Assemlal,
Vincent Barra,
Wolf Blecher,
Romain Blei,
Yohan Bentolila,
Jerome Boulanger,
Pierre Buyssens,
Sebastien Coudert,
Frederic Devernay,
Olivier D'Hondt,
Fran&ccedil;ois-Xavier Dup&eacute;,
Gerd von Egidy
Eric Fausett,
Jean-Marie Favreau,
Sebastien Fourey,
Alexandre Fournier,
Vincent Garcia,
David Grimbichler,
Jinwei Gu,
Jean-Daniel Guyot,
C&eacute;dric Hammiche,
Matt Hanson,
Sebastien Hanel,
Nicholas Hayes,
Michael Holroyd,
Christoph Hormann,
Hon-Kwok Fung,
Werner Jainek,
Vo Duc Khanh,
Daniel Kondermann,
Pierre Kornprobst,
Jan W. Krieger,
Francois Lauze,
Orges Leka,
Tony E Lewis,
Xie Long,
Thomas Martin,
Cesar Martinez,
Jean Martinot,
Arnold Meijster (Center for High Performance Computing and Visualization, University of Groningen/The Netherlands)
Nikita Melnichenko,
Baptiste Mougel,
Julien Morat,
Jovana Milutinovich,
Guillaume Nee,
Adam Newgas,
Francisco Oliveira,
Andrea Onofri,
Renaud Peteri,
Martin Petricek,
Paolo Prete,
Adrien Reboisson,
Klaus Schneider,
Jakob Schluttig,
Jamie Smith,
Veronique Souchaud,
Konstantin Spirin,
Rainer Steffens,
David G. Starkweather,
Elle Stone,
Grzegorz Szwoch,
Thierry Thomas,
Ulysse Vimont / Anatascope,
Yu-En-Yun,
Ingo Weyrich,
Phillip Wood,
Bug Zhao,
Haibo Zheng.
</i>
</div><div class="section_end"></div>
<!-- ************* -->
<!-- Licenses -->
<!-- ************* -->
<div class="section_title"><p>Licenses</p></div><div class="section_content">
<p>
The <span class="gmd_cimg"></span> Library is an open-source product distributed under <b>two distinct licenses</b> :
the library core itself is dual-licensed and
can be governed either by the
<a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt"><b>CeCILL-C</b> License</a> (LGPL-like),
or the
<a href="http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt"><b>CeCILL</b> License</a> (GPL-compatible).
Most of the other package files are distributed under the
<a href="http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt"><b>CeCILL</b> License</a>.
Both are <b>open-source licenses</b>, the CeCILL-C being less restrictive than the CeCILL.<br/><br/>
The <span class="gmd_cimg"></span> Library source code has been registered to the <a href="http://app.legalis.net/paris/">APP</a>
(French Agency for the Protection of Programs) by the <a href="http://www.inria.fr/index.en.html">INRIA</a>,
under registration number <span class="gmd_monobold">IDDN.FR.001.040004.000.S.P.2004.000.21000.</span>
</p>
</div><div class="section_end"></div>
<!-- ************* -->
<!-- Learn More -->
<!-- ************* -->
<div class="section_title"><p>Learn More</div><div class="section_content">
<ul>
<li>The <a href="reference/group__cimg__tutorial.html">Tutorial</a> section shows the basic use of <span class="gmd_cimg"></span> classes
and functions with a small first code.</li>
<li>The <a href="screenshots.html">Screenshots</a> section illustrates some of the different source code examples provided in
the <span class="gmd_cimg"></span> package.</li>
<li>You can look at the quite complete <a href="CImg_slides.pdf"><span class="gmd_cimg"></span> Library presentation slides</a> (.pdf format) which gives
more insights on the different library concepts.</li>
<li>Online web statistics on the <span class="gmd_cimg"></span> website activity are available
<a href="http://my.statcounter.com/project/standard/stats.php?project_id=895001&guest=1">here</a>.</li>
</ul>
</div><div class="section_end"></div>
<!-- *************** -->
<!-- Quick History -->
<!-- *************** -->
<div class="section_title"><p>Quick History</div><div class="section_content">
<p>
The development of the <span class="gmd_cimg"></span> Library began at the end of 1999, when I started my PhD thesis
in the <a href="http://www.inria.fr/equipes/odyssee"><img height="16" alt="" src="img/logoODYSSEE.jpg"/> Lab</a>
at the <a href="http://www.inria.fr/centre/sophia/"><img height="16" alt="" src="img/logoINRIA.gif"/> Sophia Antipolis</a>.
It was designed to help me and my colleagues developing various image processing algorithms,
for datasets as simple as 2D scalar images, or as complex as 3D volumes of diffusion tensors. I also used it for
courses on image processing I teached at the university. As a result, the <span class="gmd_cimg"></span> Library
has been always intended to be <i>compact</i>, <i>easy to install and to use</i>, <i>multi-platform</i> and <i>generic</i>.
It provides a lot of basic functions that everyone would like to find in a good C++ image processing framework.<br/><br/>
I am now a permanent researcher of the <a href="http://www.cnrs.fr"><img alt="" height="32" src="img/logoCNRS.gif"/>
</a> institution,
working in the <a href="http://www.greyc.ensicaen.fr/EquipeImage"><img alt="" height="32" src="img/logoIMAGE.gif"/>
group</a> at the <a href="http://www.greyc.ensicaen.fr"><img alt="" height="32" src="img/logoGREYC.gif"/>
lab</a> in Caen/France.
I am still using, maintaining and updating the <span class="gmd_cimg"></span> Library, and will probably do it for the next couple of years.
</p>
</div><div class="section_end"></div>
<!-- *************** -->
<!-- How to help ? -->
<!-- *************** -->
<div class="section_title"><p>How to Help?</div><div class="section_content">
<p>
The <span class="gmd_cimg"></span> Library is an open-source C++ library which is mainly developped during
free time. If you enjoy using <span class="gmd_cimg"></span>, you may contribute to the project
in different ways. This will motivate me to continue the work.
</p>
<ul>
<li>You can help <span class="gmd_cimg"></span> to be more widely known, by displaying a
<a href="CImg_flyer.pdf">CImg Flyer</a> at work, in your lab or school
(available in <a href="CImg_flyer.pdf">.PDF</a> or <a href="img/CImg_flyer.jpg">.JPEG</a> formats).</li>
<li>You can report bugs, propose patches or new functionalities, using the <span class="gmd_cimg"></span>
<a href="https://github.com/GreycLab/CImg/issues">forum</a>.</li>
<li>You can write
<a href="reference/group__cimg__tutorial.html">tutorials</a>
or parts of the <a href="reference/index.html">documentation</a>.</li>
<li>If you just want to say you've been happy with the library, you can send me a postcard from your place, to the following address : <br/>
<i>David Tschumperl&eacute;, GREYC (UMR CNRS 6072), Equipe IMAGE, 6 Bd du Mar&eacute;chal Juin, 14050 Caen Cedex, FRANCE.</i><br/><br/>
<span class="gmd_mono">73</span> postcards received yet (I still have empty space on my wall ! :) ), from :<br/><br/>
<ul>
<li><a href="img/postcard1.jpg" class="highslide" onclick="return hs.expand(this)">
Comissao Nacional de Energia Nuclear, Rio de Janeiro, Brazil.</a></li>
<li><a href="img/postcard2.jpg" class="highslide" onclick="return hs.expand(this)">
Universidad Nacional del Litoral, Santa Fe, Argentina.</a></li>
<li><a href="img/postcard3.jpg" class="highslide" onclick="return hs.expand(this)">
Waikiki's only true resort, Honolulu/Hawaii.</a></li>
<li><a href="img/postcard4.jpg" class="highslide" onclick="return hs.expand(this)">
Royal Pavilion, Brighton/UK.</a></li>
<li><a href="img/postcard5.jpg" class="highslide" onclick="return hs.expand(this)">
Cambridge, UK.</a></li>
<li><a href="img/postcard6.jpg" class="highslide" onclick="return hs.expand(this)">
National Tai-Chung Institute of Technology, Taiwan.</a></li>
<li><a href="img/postcard7.jpg" class="highslide" onclick="return hs.expand(this)">
Fuzzy Logic Laboratorium Linz-Hagenberg, Linz, Austria.</a></li>
<li><a href="img/postcard8.jpg" class="highslide" onclick="return hs.expand(this)">
Corte/Corsica.</a></li>
<li><a href="img/postcard9.jpg" class="highslide" onclick="return hs.expand(this)">
Microsoft Research, Beijing/China.</a></li>
<li><a href="img/postcard10.jpg" class="highslide" onclick="return hs.expand(this)">
Palermo/Italia.</a></li>
<li><a href="img/postcard11.jpg" class="highslide" onclick="return hs.expand(this)">
Florida Atlantic University/USA.</a></li>
<li><a href="img/postcard12.jpg" class="highslide" onclick="return hs.expand(this)">
Ecole Nationale Supérieure des Mines de Saint-Etienne/France.</a></li>
<li><a href="img/postcard13.jpg" class="highslide" onclick="return hs.expand(this)">
Venice/Italy, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard14.jpg" class="highslide" onclick="return hs.expand(this)">
Barcelone/Spain, from Jaime.</a></li>
<li><a href="img/postcard15.jpg" class="highslide" onclick="return hs.expand(this)">
Guadeloupe/France, from Jean-Michel.</a></li>
<li><a href="img/postcard17.jpg" class="highslide" onclick="return hs.expand(this)">
London/England, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard18.jpg" class="highslide" onclick="return hs.expand(this)">
Valencia/Spain, from the Research Institute ITEAM of the Unversidad Politecnica.</a></li>
<li><a href="img/postcard19.jpg" class="highslide" onclick="return hs.expand(this)">
Vienna/Austria, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard20.jpg" class="highslide" onclick="return hs.expand(this)">
Neuherberg/Germany, from the Institut for Biomathematick und Biometrie.</a></li>
<li><a href="img/postcard21.jpg" class="highslide" onclick="return hs.expand(this)">
Cabestany/France, from Guy Poizat.</a></li>
<li><a href="img/postcard22.jpg" class="highslide" onclick="return hs.expand(this)">
Frascati/Italy, from PhotoComiX.</a></li>
<li><a href="img/postcard23.jpg" class="highslide" onclick="return hs.expand(this)">
Jaca/Spain, from F. Albior.</a></li>
<li><a href="img/postcard24.jpg" class="highslide" onclick="return hs.expand(this)">
Munich/Germany, from M???? (didn't succeed in reading the name, sorry !).</a></li>
<li><a href="img/postcard25.jpg" class="highslide" onclick="return hs.expand(this)">
Playa del Carmen/Mexico, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard26.jpg" class="highslide" onclick="return hs.expand(this)">
Holland, from Vincent/GREYC (Caen/France).</a></li>
<li><a href="img/postcard27.jpg" class="highslide" onclick="return hs.expand(this)">
Portland/Oregon/USA, from Mahvin.</a></li>
<li><a href="img/postcard28.jpg" class="highslide" onclick="return hs.expand(this)">
Gibraltar, from Terry Hendicott.</a></li>
<li><a href="img/postcard29.jpg" class="highslide" onclick="return hs.expand(this)">
Neuchatel/Switzerland, from Corinne Masimann.</a></li>
<li><a href="img/postcard30.jpg" class="highslide" onclick="return hs.expand(this)">
Foster City/California, from Arkadi Gelfond.</a></li>
<li><a href="img/postcard31.jpg" class="highslide" onclick="return hs.expand(this)">
Huntsville/Alabama, from Gordon M. Neeley.</a></li>
<li><a href="img/postcard32.jpg" class="highslide" onclick="return hs.expand(this)">
Biscarosse/France, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard33.jpg" class="highslide" onclick="return hs.expand(this)">
California/USA, from Benoit Gauzere/GREYC (Caen/France).</a></li>
<li><a href="img/postcard34.jpg" class="highslide" onclick="return hs.expand(this)">
Puy-de-Dome/France, from Sebastien/GREYC (Caen/France).</a></li>
<li><a href="img/postcard35.jpg" class="highslide" onclick="return hs.expand(this)">
Portsmouth/United Kingdom, from Sebastien Clediere/Snell Ltd.</a></li>
<li><a href="img/postcard36.jpg" class="highslide" onclick="return hs.expand(this)">
Helsinki/Finland, from Arto Huotari.</a></li>
<li><a href="img/postcard37.jpg" class="highslide" onclick="return hs.expand(this)">
Mettlach/Germany, from Werner Meier.</a></li>
<li><a href="img/postcard38.jpg" class="highslide" onclick="return hs.expand(this)">
Boston/USA, from Dan Cullen.</a></li>
<li><a href="img/postcard39.jpg" class="highslide" onclick="return hs.expand(this)">
Mantova/Italy, from Mauro Mitrino.</a></li>
<li><a href="img/postcard40.jpg" class="highslide" onclick="return hs.expand(this)">
Seligenstadt/Germany, from Dr. Rainer Teubner.</a></li>
<li><a href="img/postcard41.jpg" class="highslide" onclick="return hs.expand(this)">
Hokusai/Japan, from Benoit Gauzere and Francois Lozes.</a></li>
<li><a href="img/postcard42.jpg" class="highslide" onclick="return hs.expand(this)">
Munchen/Germany, from Alexandru Dulin.</a></li>
<li><a href="img/postcard43.jpg" class="highslide" onclick="return hs.expand(this)">
Trier/Germany, from Family Hamacher.</a></li>
<li><a href="img/postcard44.jpg" class="highslide" onclick="return hs.expand(this)">
Ile de Batz/France, from Pierre-Yves.</a></li>
<li><a href="img/postcard45.jpg" class="highslide" onclick="return hs.expand(this)">
Germany, from Michel Thomas.</a></li>
<li><a href="img/postcard46.jpg" class="highslide" onclick="return hs.expand(this)">
Vienna/Austria, from Benoit Gauzere.</a></li>
<li><a href="img/postcard47.jpg" class="highslide" onclick="return hs.expand(this)">
Torquay/Australia, from Pauline van Buren.</a></li>
<li><a href="img/postcard48.jpg" class="highslide" onclick="return hs.expand(this)">
Lisboa/Portugal, from Patrick Wauters.</a></li>
<li><a href="img/postcard49.jpg" class="highslide" onclick="return hs.expand(this)">
Hazebrouck/France, from Michael T.</a></li>
<li><a href="img/postcard50.jpg" class="highslide" onclick="return hs.expand(this)">
USA, from Bill C.</a></li>
<li><a href="img/postcard51.jpg" class="highslide" onclick="return hs.expand(this)">
EDF/France, from ZondeR.</a></li>
<li><a href="img/postcard52.jpg" class="highslide" onclick="return hs.expand(this)">
Belgium, from Marc Lis.</a></li>
<li><a href="img/postcard53.jpg" class="highslide" onclick="return hs.expand(this)">
Roma/Italy, from Patrick Wauters.</a></li>
<li><a href="img/postcard54.jpg" class="highslide" onclick="return hs.expand(this)">
Germany, from Werner Meier.</a></li>
<li><a href="img/postcard55.jpg" class="highslide" onclick="return hs.expand(this)">
Germany, from Justin Pletzfeld.</a></li>
<li><a href="img/postcard56.jpg" class="highslide" onclick="return hs.expand(this)">
New York/USA, from Garry R. Osgood.</a></li>
<li><a href="img/postcard57.jpg" class="highslide" onclick="return hs.expand(this)">
Italy, from Andrea (coder of PhotoFlow).</a></li>
<li><a href="img/postcard58.jpg" class="highslide" onclick="return hs.expand(this)">
Sydney/Australia, from Peter Neave.</a></li>
<li><a href="img/postcard59.jpg" class="highslide" onclick="return hs.expand(this)">
Fort Worth/Texas/USA, from Steve Gillow.</a></li>
<li><a href="img/postcard60.jpg" class="highslide" onclick="return hs.expand(this)">
Pondicherry/India, from Bruno Steinbach.</a></li>
<li><a href="img/postcard61.jpg" class="highslide" onclick="return hs.expand(this)">
Pavia/Italy, from Giulio Canevari.</a></li>
<li><a href="img/postcard62.jpg" class="highslide" onclick="return hs.expand(this)">
Toulouse/France, from David Revoy.</a></li>
<li><a href="img/postcard63.jpg" class="highslide" onclick="return hs.expand(this)">
Konstanz/Germany, from S&eacute;bastien Fourey.</a></li>
<li><a href="img/postcard64.jpg" class="highslide" onclick="return hs.expand(this)">
Bilbao/Spain, from Patrick Wauters.</a></li>
<li><a href="img/postcard65.jpg" class="highslide" onclick="return hs.expand(this)">
Haldern/Germany, from Volker Doebel.</a></li>
<li><a href="img/postcard66.jpg" class="highslide" onclick="return hs.expand(this)">
France, from Powlux.</a></li>
<li><a href="img/postcard67.jpg" class="highslide" onclick="return hs.expand(this)">
Winnipeg / Canada, from James Jaworski.</a></li>
<li><a href="img/postcard68.jpg" class="highslide" onclick="return hs.expand(this)">
Newcastle upon tyne / England, from Richard Gledson.</a></li>
<li><a href="img/postcard69.jpg" class="highslide" onclick="return hs.expand(this)">
Pregonda / Menorca, from Josep Febrer.</a></li>
<li><a href="img/postcard70.jpg" class="highslide" onclick="return hs.expand(this)">
USA, from Patrick Wauters.</a></li>
<li><a href="img/postcard71.jpg" class="highslide" onclick="return hs.expand(this)">
Toulon/France, from Cyril Prissette.</a></li>
<li><a href="img/postcard72.jpg" class="highslide" onclick="return hs.expand(this)">
Bochum/Germany, from Andreas Weissenburger.</a></li>
<li><a href="img/postcard73.jpg" class="highslide" onclick="return hs.expand(this)">
Portsmouth/USA, from Benjamin Russell.</a></li>
<li><a href="img/postcard74.jpg" class="highslide" onclick="return hs.expand(this)">
Angers/France, from Bruno Bianchi.</a></li>
<li><a href="img/postcard75.jpg" class="highslide" onclick="return hs.expand(this)">
Makuhari/Japan, from Hiroyuki Hayashi.</a></li>
<li><a href="img/postcard76.jpg" class="highslide" onclick="return hs.expand(this)">
Tristan Da Cunha, from Richard Lockwood.</a></li>
<li><a href="img/postcard77.jpg" class="highslide" onclick="return hs.expand(this)">
Tyrol/Austria, from Marcel.</a></li>
<li><a href="img/postcard78.jpg" class="highslide" onclick="return hs.expand(this)">
Heidelberg/Germany, from Markus.</a></li>
<li><a href="img/postcard79.jpg" class="highslide" onclick="return hs.expand(this)">
Jokulsarlon Lagoonl/Iceland, from Patrick Wauters.</a></li>
<li><a href="img/postcard80.jpg" class="highslide" onclick="return hs.expand(this)">
Argentina, from Amyspark.</a></li>
</ul></li>
</ul>
</div><div class="section_end"></div>
<div id="include_footer"></div>
</body>