The LqrCarver objects are initialized from a plain buffer
representing an image. The default constructor assumes a colour depth of 8 bits
per channel:
LqrCarver * lqr_carver_new( | guchar * buffer, |
| gint width, | |
| gint height, | |
gint channels); |
Here, buffer is the array representing an image of size
width by height with
channels colour channels per pixels.
Thus, the overall buffer size has to be of
unsigned characters, and ordered such that
the widht * height * channels
k-th colour of the pixel at row
y and column
x is found at:
buffer[(y * width + x) * channels + k]
(this assumes that x, y
and k all start from 0
and reach the maximum values
widht-1,
height-1
and channels-1, respectively)
The function returns a pointer to the newly allocated LqrCarver upon
success, or NULL in case of insufficient memory.
In order to create LqrCarver objects with more than 8 bits per channel, an extended version
of the constructor must be used:
LqrCarver * lqr_carver_new_ext( | void * buffer, |
| gint width, | |
| gint height, | |
| gint channels, | |
LqrColDepth colour_depth); |
The differnece with the default version is that the input buffer must be passed as
void, and its type must be specified through the additional parameter
colour_depth, which can take one of the following values:
LQR_COLDEPTH_8I8 bit unsigned integers (guchar)
LQR_COLDEPTH_16I16 bit unsigned integers (guint16)
LQR_COLDEPTH_32F32 bit floating point (gfloat)
LQR_COLDEPTH_64F64 bit floating point (gdouble)
Floating point type values must range between 0 and 1.
The buffer will become part of the LqrCarver object and
must not be accessed directly any more.
The newly created LqrCarver consists only of the image buffer plus
an uninitialized visibility map. If one had a previously computed
visibility map, it could be imported into the LqrCarver and that would be
enough (see the Importing a visibility map in a
carver section).
If the visibility map has to be computed, the LqrCarver needs to be
initialized through this function:
LqrRetVal lqr_carver_init( | LqrCarver * carver, |
| gint delta_x, | |
gfloat rigidity); |
Here, delta_x is the maximum allowed transversal step of the
seams (0 means straight seams, the typical value is 1), while
the rigidity parameter can be used to introduce
a global bias for non-straight seams (the typical value is 0; a nonzero
value can be modulated locally for specific areas using the functions described
in section Adding a rigidity mask).
It is currently an error to initalize a carver object if a visibility map has been imported already.