1 /* base class for all mosaicing operations
2  *
3  */
4 
5 /*
6 
7     Copyright (C) 1991-2005 The National Gallery
8 
9     This library is free software; you can redistribute it and/or
10     modify it under the terms of the GNU Lesser General Public
11     License as published by the Free Software Foundation; either
12     version 2.1 of the License, or (at your option) any later version.
13 
14     This library is distributed in the hope that it will be useful,
15     but WITHOUT ANY WARRANTY; without even the implied warranty of
16     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17     Lesser General Public License for more details.
18 
19     You should have received a copy of the GNU Lesser General Public
20     License along with this library; if not, write to the Free Software
21     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22     02110-1301  USA
23 
24  */
25 
26 /*
27 
28     These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
29 
30  */
31 
32 /* Define for debug output.
33 #define DEBUG
34  */
35 
36 #ifdef HAVE_CONFIG_H
37 #include <config.h>
38 #endif /*HAVE_CONFIG_H*/
39 #include <vips/intl.h>
40 
41 #include <stdio.h>
42 #include <stdlib.h>
43 #include <math.h>
44 
45 #include <vips/vips.h>
46 #include <vips/internal.h>
47 
48 /**
49  * SECTION: mosaicing
50  * @short_description: build image mosaics
51  * @stability: Stable
52  * @include: vips/vips.h
53  *
54  * These functions are useful for joining many small images together to make
55  * one large image. They can cope with unstable contrast and arbitrary sub-image
56  * layout, but will not do any geometric correction. Geometric errors should
57  * be removed before using these functions.
58  *
59  * The mosaicing functions can be grouped into layers:
60  *
61  * The lowest level operation is vips_merge()  which
62  * joins two images together
63  * left-right or up-down with a smooth seam.
64  *
65  * Next, vips_mosaic() uses
66  * search functions plus the two low-level merge operations to join two images
67  * given just an approximate overlap as a start point.
68  *
69  * vips_mosaic1() is a first-order
70  * analogue of the basic mosaic functions: it takes two approximate
71  * tie-points and uses
72  * them to rotate and scale the right-hand or bottom image before starting to
73  * join.
74  *
75  * Finally, vips_globalbalance() can be used to remove contrast differences in
76  * a mosaic
77  * which has been assembled with these functions. It takes the mosaic apart,
78  * measures image contrast differences along the seams, finds a set of
79  * correction factors which will minimise these differences, and reassembles
80  * the mosaic.
81  * vips_remosaic() uses the
82  * same
83  * techniques, but will reassemble the image from a different set of source
84  * images.
85  *
86  */
87 
88 /* Called from iofuncs to init all operations in this dir. Use a plugin system
89  * instead?
90  */
91 void
vips_mosaicing_operation_init(void)92 vips_mosaicing_operation_init( void )
93 {
94 	extern GType vips_merge_get_type( void );
95 	extern GType vips_mosaic_get_type( void );
96 	extern GType vips_mosaic1_get_type( void );
97 	extern GType vips_match_get_type( void );
98 	extern GType vips_globalbalance_get_type( void );
99 	extern GType vips_matrixinvert_get_type( void );
100 
101 	vips_merge_get_type();
102 	vips_mosaic_get_type();
103 	vips_mosaic1_get_type();
104 	vips_matrixinvert_get_type();
105 	vips_match_get_type();
106 	vips_globalbalance_get_type();
107 }
108