The following sets of routines are available:
Background Calculation Routines
The following routines are available:
Calculate background image using a 2-D search - xdl_bg_calc
Background 2-D search with progress bar - xdl_bg_calc_prog
Calculate radially averaged background - xdl_bg_strip
Form radially averaged background image - xdl_bg_radimg
Get background value from background function - xdl_bg_val
Get background value from background image - xdl_bg_valimg
Fortran call:
CALL XDLF_BG_CALC (IMG, ITYPE, NSRASTS, NFRASTS, NFOFF,
+ NCMP, NPBOX, IPCNT, IMG_BG, NFBGOFF, IERR)
Parameters:
IMG (R) Array holding the image data
(normally packed into an integer array)
(see 'img')
ITYPE (R) Image data type =1 unsigned byte,
=2 unsigned two-byte,
=3 signed integer
=4 squashed i2
(see 'type')
NSRASTS (R) No. rasters along slow image axis
(see 'ns_rasts')
NFRASTS (R) No. rasters along fast image axis
(see 'nf_rasts')
NFOFF (R) Offset (in pixels) between successive slow
rasters (see 'nf_off')
NCMP (R) Compress (sample) NCMP into 1 pixel in each
direction for background image (see ncmp)
NPBOX (R) Dimension of background calculation box in
pixels of compressed imagee (preferably odd)
(see 'npbox')
IPCNT (R) Percentage of pixels to treat as background.
If -IPCNT is given, then pixel values of zero
will be omitted from the calculation.
(see 'percent')
IMG_BG (W) Array to hold the returned background image.
(pass an integer array large enough to hold
the returned image data) (see 'img_bg')
NFBGOFF (R/W) Offset between start of lines in returned
background image (allows for padding if
required). If zero on input then value will
be returned for no padding cases (see nf_bgoff)
IERR (W) Returns the status from the xdl_bg_calc
call
'C' call:
int xdl_bg_calc (img, type, ns_rasts, nf_rasts, nf_off, ncmp, npbox,
percent, img_bg, nf_bgoff)
Parameters:
char *img; /* Image from which to calculate the background
image (R)*/
int type; /* Image (and backgound image) data type
=1 unsigned byte
=2 unsigned two-byte data
=3 signed integer data
=4 'squashed i2' data (if Intensity>32767
store as 65536-Intensity/8)
(R)*/
int ns_rasts; /* No. of slow moving rasters in the image (R)*/
int nf_rasts; /* No. of fast moving rasters in the image (R)*/
int nf_off; /* Offset in the image (in pixels) between start
of each line of the image as stored (allows
for padding at the end of each line if
used) (R)*/
int ncmp; /* No. of pixels to compress into 1 in each
direction for the background image. The
size of the background image will be
ns_rasts/ncmp * nf_rasts/ncmp (integer
divisions) (R)*/
int npbox; /* Size of box (after compression of the image)
for each background calculation
in pixels (box is npbox*npbox) - preferably
an odd number (R)*/
int percent; /* Percentage of pixels to treat as background
If -percent is given, then pixel values of
zero will be omitted from the calculation
(R)*/
char *img_bg; /* Returns background image in same data format
as the input image. The size of the
background image will be
ns_rasts/ncmp * nf_rasts/ncmp (integer
divisions) (see also mf_bgoff) (W)*/
int *nf_bgoff; /* Offset between start of image lines in
returned background image. If value
given is less than nf_rasts/ncmp then
it will be reset to nf_rasts/ncmp (R/W)*/
Return: =0 OK; =1 background too high (> 65000); =2 box too big for image
Fortran call:
CALL XDLF_BG_CALC_PROG (IMG, ITYPE, NSRASTS, NFRASTS, NFOFF,
+ NCMP, NPBOX, IPCNT, IMG_BG, NFBGOFF,
+ PROGRESS, CANCEL, IERR)
Parameters:
IMG (R) Array holding the image data
(normally packed into an integer array)
(see 'img')
ITYPE (R) Image data type =1 unsigned byte,
=2 unsigned two-byte,
=3 signed integer
=4 squashed i2
(see 'type')
NSRASTS (R) No. rasters along slow image axis
(see 'ns_rasts')
NFRASTS (R) No. rasters along fast image axis
(see 'nf_rasts')
NFOFF (R) Offset (in pixels) between successive slow
rasters (see 'nf_off')
NCMP (R) Compress (sample) NCMP into 1 pixel in each
direction for background image (see ncmp)
NPBOX (R) Dimension of background calculation box in
pixels of compressed imagee (preferably odd)
(see 'npbox')
IPCNT (R) Percentage of pixels to treat as background.
If -IPCNT is given, then pixel values of zero
will be omitted from the calculation.
(see 'percent')
IMG_BG (W) Array to hold the returned background image.
(pass an integer array large enough to hold
the returned image data) (see 'img_bg')
NFBGOFF (R/W) Offset between start of lines in returned
background image (allows for padding if
required). If zero on input then value will
be returned for no padding cases (see nf_bgoff)
PROGRESS (R) Subroutine to monitor progress. Will be
called after each processing 'strip'
as follows:
as follows:
CALL PROGRESS (IFLAG, NSTRIP, ISTRIP)
CALL PROGRESS (IFLAG, NSTRIP, ISTRIP)
IFLAG (R) =0 start, =1 in progress,
=2 done
NSTRIP (R) Total no. of strips of image to
process
ISTRIP (R) Current strip (1 to NSTRIP)
ISTRIP (R) Current strip (1 to NSTRIP)
CANCEL (R) This routine will be called at intervals to
see if a cancel state has been set.
see if a cancel state has been set.
The call is:
The call is:
CALL CANCEL (ICANCL)
CALL CANCEL (ICANCL)
ICANCL (W) Return 0 to continue, 1 to cancel
ICANCL (W) Return 0 to continue, 1 to cancel
IERR (W) Returns the status from the xdl_bg_calc_prog
call
'C' call:
int xdl_bg_calc_prog (img, type, ns_rasts, nf_rasts, nf_off, ncmp, npbox,
percent, img_bg, nf_bgoff, progress, cancel)
Parameters:
char *img; /* Image from which to calculate the background
image (R)*/
int type; /* Image (and backgound image) data type
=1 unsigned byte
=2 unsigned two-byte data
=3 signed integer data
=4 'squashed i2' data (if Intensity>32767
store as 65536-Intensity/8)
(R)*/
int ns_rasts; /* No. of slow moving rasters in the image (R)*/
int nf_rasts; /* No. of fast moving rasters in the image (R)*/
int nf_off; /* Offset in the image (in pixels) between start
of each line of the image as stored (allows
for padding at the end of each line if
used) (R)*/
int ncmp; /* No. of pixels to compress into 1 in each
direction for the background image. The
size of the background image will be
ns_rasts/ncmp * nf_rasts/ncmp (integer
divisions) (R)*/
int npbox; /* Size of box (after compression of the image)
for each background calculation
in pixels (box is npbox*npbox) - preferably
an odd number (R)*/
int percent; /* Percentage of pixels to treat as background
If -percent is given, then pixel values of
zero will be omitted from the calculation
(R)*/
char *img_bg; /* Returns background image in same data format
as the input image. The size of the
background image will be
ns_rasts/ncmp * nf_rasts/ncmp (integer
divisions) (see also mf_bgoff) (W)*/
int *nf_bgoff; /* Offset between start of image lines in
returned background image. If value
given is less than nf_rasts/ncmp then
it will be reset to nf_rasts/ncmp (R/W)*/
void (*progress)(); /* Function passed to the routine to monitor
the progress of the background calculation.
called as follows:
progress (iflag, nstrip, istrip);
int *iflag; =0 start, =1 in progress,
=2 done
int *nstrip; Total no. of strips of image to
process
int *istrip; Current strip (1 to nstrip)
(May be a NULL)
(R)*/
void (*cancel)(); /* Function passed to the routine to enable
cancellation. Called as follows:
cancel (icancl);
int *icancl; Function must return 0 to
continue, or 1 to cancel.
(May be a NULL)
(R)*/
Return: =0 OK; =1 background too high (> 65000); =2 box too big for image
-1 interrupted
Fortran call:
CALL XDLF_BG_STRIP (IMG, ITYPE, NSRASTS, NFRASTS, NFOFF, NCMP,
+ NPBOX, IPCNT, IOPT, IBGAVE, NBG, IERR)
Parameters:
IMG (R) Array holding the image data .
(normally packed into an integer array)
(see 'img')
ITYPE (R) Image data type 1 = unsigned byte, 2 =
unsigned two-byte, 3 = signed integer,
4 = 'squashed i2' (see 'type')
NSRASTS (R) No. rasters in slow image direction
(see 'ns_rasts')
NFRASTS (R) No. rasters in fast image direction
(see 'nf_rasts')
NFOFF (R) Offset (in pixels) between successive slow
rasters (see 'nf_off')
NCMP (R) Compress NCMP into 1 pixel in each direction
for background image (actually sample)
(see ncmp)
NPBOX (R) Dimension of background calculation box in
pixels of compressed image (preferably odd)
(see 'npbox')
IPCNT (R) Percentage of pixels to treat as background
(see 'percent')
IOPT (R) =1 strip across the centre along fast axis
=2 strip through the centre along slow axis
IBGAVE (W) Array returning radially averaged background
values (see bgave)
NBG (W) The number of values returned in IBGAVE
(maxr_off+1, see maxr_off)
IERR (W) Returns the status from the xdl_bg_strip
call
'C' call:
int xdl_bg_strip (img, type, ns_rasts, nf_rasts, nf_off, ncmp, npbox,
percent, iopt, bgave, maxr_off)
Parameters:
char *img; /* Full image data (R) */
int type; /* Data type =1 unsigned byte data
=2 unsigned two-byte data
=3 signed integer data
=4 'squashed i2' data
(R)*/
int ns_rasts; /* No. of slow rasters in image (R) */
int nf_rasts; /* No. of fast rasters in image (R) */
int nf_off; /* Offset in rasters between lines of
stored image (allows for padding) (R)*/
int ncmp; /* Compress ncmp pixels in each direction
into 1 before calculating background
(data are actually sampled) (R)*/
int npbox; /* Size of box for each background calculation
in pixels (box is npbox*npbox) - preferably
an odd number (box is for compressed
image) (R)*/
int percent; /* Percentage of pixels to treat as background
(R)*/
int iopt; /* =1, strip through centre along fast axis
=2, strip through centre along slow axis
(R)*/
int bgave[]; /* Returns radially averaged background function
in intervals of pixels of the compressed
image and starting from the centre of that
image; dimension to >= (nf_rasts/ncmp)/2
for iopt 1 and (ns_rasts/ncmp)/2 for iopt 2
(W)*/
int *maxr_off; /* Maximum offset in returned 'bgave' array
(W)*/
Return: =0 OK;
=1 Background too high (>65000)
=2 box too big for image
=3 Unable to allocate memory for temporary arrays;
Fortran call:
CALL XDLF_BG_RADIMG (ITYPE, NS_BG, NF_BG, NF_BGOFF, IBGAVE,
+ NBG, IMG_BG, IERR)
Parameters:
ITYPE (R) Required data type for background image
=1 unsigned byte
=2 unsigned two-byte
=3 signed integer
=4 'squashed i2'
(see type)
NS_BG (R) No. of rasters in background image along
slow moving axis (see ns_bg)
NF_BG (R) No. of rasters in background image along
fast moving axis (see nf_bg)
NF_BGOFF (R) Offset required between successive lines of
returned image (allows for padding if required)
(see nf_bgoff)
IBGAVE (R) Array with radially averaged background
values (see bgave)
NBG (W) The number of values in IBGAVE
(maxr_off+1, see maxr_off)
IMG_BG (W) Integer array returning background image
(must be large enough to hold
NS_BG*NF_BGOFF data pixels) (see img_bg)
IERR (W) Returns the status from the xdl_bg_radimg
call
'C' call:
int xdl_bg_radimg (type, ns_bg, nf_bg, nf_bgoff, bgave, maxr_off,
img_bg)
Parameters:
int type; /* Background image data type
=1 unsigned byte
=2 unsigned two-byte
=3 signed integer
=4 'squashed i2'
(R) */
int ns_bg; /* No. rasters in backgound image along slow
moving axis (R) */
int nf_bg; /* No. rasters in backgound image along fast
moving axis (R) */
int nf_bgoff; /* Required offset between successive lines of
returned background image (allows for padding
if required) (R) */
int bgave[]; /* Radially average background values from
xdl_bg_strip (R)*/
int maxr_off; /* Maximum offset in 'bgave' from xdl_bg_strip
(R)*/
char *img_bg; /* Returns the compressed radially averaged
background image (ns_bg*nf_bg padded if
required) (W)*/
Return: =0 OK;
Fortran call:
CALL XDLF_BG_VAL (ISLOW, IFAST, IBGAVE, NBG, NSRASTS, NFRASTS,
NCMP, IVAL, IERR)
Parameters:
ISLOW (R) Pixel position along slow axis in full image
(from 1 up)
IFAST (R) Pixel position along fast axis in full image
(from 1 up)
IBGAVE (R) Array with radially averaged background
values (see bgave)
NBG (R) The number of values in IBGAVE
(maxr_off+1, see maxr_off)
NSRASTS (R) No. rasters along slow axis in full image from
which the background was calculated
NFRASTS (R) No. rasters along fast axis in full image from
which the background was calculated
NCMP (R) No. pixels in each direction compressed into
1 for the background calculation.
IVAL (W) Returned background value (see ival)
IERR (W) Returns the status from the xdl_bg_val
call
'C' call:
int xdl_bg_val (islow, ifast, bgave, maxr_off, ns_rasts, nf_rasts,
ncmp, ival)
Parameters:
int islow; /* The pixel position in the full image
along the slow axis (from 1 up) (R)*/
int ifast; /* The pixel position in the full image
along the fast axis (from 1 up) (R)*/
int bgave[]; /* Radially average background values from
xdl_bg_strip (R)*/
int maxr_off; /* Maximum offset in 'bgave' from xdl_bg_strip
(R)*/
int ns_rasts; /* No. of rasters along the slow axis of the image
used to calculate background function (R)*/
int nf_rasts; /* No. of rasters along the fast axis of the image
used to calculate background function (R)*/
int ncmp; /* No. of pixels in each direction compressed into
1 for the background calcn. (R)*/
int *ival; /* Returns background value (W)*/
Return: =0 OK;
Fortran call:
CALL XDLF_BG_VALIMG (ISLOW, IFAST, IMG_BG, ITYPE, NF_BGOFF,
+ NCMP, IVAL, IERR)
Parameters:
ISLOW (R) Pixel position along slow axis in full image
(from 1 up)
IFAST (R) Pixel position along fast axis in full image
(from 1 up)
IMG_BG (R) Background image (e.g. from xdl_bg_calc
or xdl_bg_radimg (see img_bg)
ITYPE (R) Data type for background image
=1 unsigned byte
=2 unsigned two-byte
=3 signed integer
=4 'squashed i2'
(see type)
NF_BGOFF (R) Offset between successive lines of background
image (allowing for padding if used)
(see nf_bgoff)
NCMP (R) No. pixels in each direction compressed into
1 for the background calculation.
IVAL (W) Returned background value (see ival)
IERR (W) Returns the status from the xdl_bg_valimg
call
'C' call:
int xdl_bg_valimg (islow, ifast, img_bg, type, nf_bgoff,
ncmp, ival)
Parameters:
int islow; /* The pixel position in the full image
along the slow axis (from 1 up) (R)*/
int ifast; /* The pixel position in the full image
along the fast axis (from 1 up) (R)*/
char *img_bg; /* Background image (R)*/
int type; /* Background image data type
=1 unsigned byte
=2 unsigned two-byte
=3 signed integer
=4 'squashed i2'
(R) */
int nf_bgoff; /* Offset between successive lines of
background image (allowing for padding
if used) (R)*/
int ncmp; /* No. of pixels in each direction compressed into
1 for the background calcn. (R)*/
int *ival; /* Returns background value (W)*/
Return: =0 OK;