libgphoto2 photo camera library (libgphoto2) Internals
2.5.23
|
Bayer array conversion routines. More...
Go to the source code of this file.
Macros | |
#define | RED 0 |
#define | GREEN 1 |
#define | BLUE 2 |
#define | AD(x, y, w) ((y)*(w)*3+3*(x)) |
Functions | |
static int | gp_bayer_accrue (unsigned char *image, int w, int h, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int colour) |
interpolate one pixel from a bayer 2x2 raster More... | |
int | gp_bayer_expand (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile) |
Expand a bayer raster style image to a RGB raster. More... | |
int | gp_bayer_interpolate (unsigned char *image, int w, int h, BayerTile tile) |
Interpolate a expanded bayer array into an RGB image. More... | |
int | gp_bayer_decode (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile) |
Convert a bayer raster style image to a RGB raster. More... | |
Variables | |
static const int | tile_colours [8][4] |
Bayer array conversion routines.
Definition in file bayer.c.
|
static |
interpolate one pixel from a bayer 2x2 raster
For red and blue data, compare the four surrounding values. If three values are all one side of the mean value, the fourth value is ignored. This will sharpen boundaries. Treatment of green data looks for vertical and horizontal edges. Any such which are discovered get special treatment. Otherwise, the same comparison test is applied which is applied for red and blue. Standard algorithm is applied without change at edges of the image.
Definition at line 259 of file bayer.c.
Referenced by gp_bayer_interpolate().
int gp_bayer_decode | ( | unsigned char * | input, |
int | w, | ||
int | h, | ||
unsigned char * | output, | ||
BayerTile | tile | ||
) |
Convert a bayer raster style image to a RGB raster.
input | the bayer CCD array as linear input |
w | width of the above array |
h | height of the above array |
output | RGB output array (linear, 3 bytes of R,G,B for every pixel) |
tile | how the 2x2 bayer array is layed out |
A regular CCD uses a raster of 2 green, 1 blue and 1 red components to cover a 2x2 pixel area. The camera or the driver then interpolates a 2x2 RGB pixel set out of this data.
This function expands and interpolates the bayer array to 3 times larger bitmap with RGB values interpolated.
Definition at line 367 of file bayer.c.
References gp_bayer_expand(), gp_bayer_interpolate(), and GP_OK.
int gp_bayer_expand | ( | unsigned char * | input, |
int | w, | ||
int | h, | ||
unsigned char * | output, | ||
BayerTile | tile | ||
) |
Expand a bayer raster style image to a RGB raster.
input | the bayer CCD array as linear input |
w | width of the above array |
h | height of the above array |
output | RGB output array (linear, 3 bytes of R,G,B for every pixel) |
tile | how the 2x2 bayer array is layed out |
A regular CCD uses a raster of 2 green, 1 blue and 1 red components to cover a 2x2 pixel area. The camera or the driver then interpolates a 2x2 RGB pixel set out of this data.
This function expands the bayer array to 3 times larger bitmap with RGB values copied as-is. Pixels were no sensor was there are 0. The data is supposed to be processed further by for instance gp_bayer_interpolate().
Definition at line 74 of file bayer.c.
References BAYER_TILE_BGGR, BAYER_TILE_BGGR_INTERLACED, BAYER_TILE_GBRG, BAYER_TILE_GBRG_INTERLACED, BAYER_TILE_GRBG, BAYER_TILE_GRBG_INTERLACED, BAYER_TILE_RGGB, BAYER_TILE_RGGB_INTERLACED, BLUE, GP_OK, GREEN, RED, and tile_colours.
Referenced by gp_ahd_decode(), and gp_bayer_decode().
int gp_bayer_interpolate | ( | unsigned char * | image, |
int | w, | ||
int | h, | ||
BayerTile | tile | ||
) |
Interpolate a expanded bayer array into an RGB image.
image | the linear RGB array as both input and output |
w | width of the above array |
h | height of the above array |
tile | how the 2x2 bayer array is layed out |
This function interpolates a bayer array which has been pre-expanded by gp_bayer_expand() to an RGB image. It uses various interpolation methods, also see gp_bayer_accrue().
Definition at line 145 of file bayer.c.
References AD, BAYER_TILE_BGGR, BAYER_TILE_BGGR_INTERLACED, BAYER_TILE_GBRG, BAYER_TILE_GBRG_INTERLACED, BAYER_TILE_GRBG, BAYER_TILE_GRBG_INTERLACED, BAYER_TILE_RGGB, BAYER_TILE_RGGB_INTERLACED, BLUE, gp_bayer_accrue(), GP_OK, GREEN, and RED.
Referenced by gp_bayer_decode().
|
static |
Definition at line 36 of file bayer.c.
Referenced by gp_bayer_expand().