Files | |
| file | psImage.h |
| Contains basic image definitions and operations. | |
| file | psImageExtraction.h |
| Contains basic image extraction operations, as specified in the PSLIB SDRS sections "Image Pixel Extractions" and "Image Structure Manipulation". | |
| file | psImageManip.h |
| Contains basic image pixel and geometry manipulation operations, as specified in the PSLIB SDRS sections "Image Pixel Manipulations" and "Image Geometry Manipulations". | |
Modules | |
| group | Image File I/O Functions |
| group | Image Statistical Functions |
Data Structures | |
| struct | psImage |
| Basic image data structure. More... | |
| struct | psRegion |
| Basic image region structure. More... | |
Defines | |
| #define | PIXEL_INTERPOLATE_FCN_PROTOTYPE(SUFFIX, RETURNTYPE) |
| #define | PIXEL_INTERPOLATE_FCNS(MODE) |
Typedefs | |
| typedef psImage | psImage |
| Basic image data structure. | |
Enumerations | |
| enum | psImageInterpolateMode { PS_INTERPOLATE_FLAT, PS_INTERPOLATE_BILINEAR, PS_INTERPOLATE_LANCZOS2, PS_INTERPOLATE_LANCZOS3, PS_INTERPOLATE_LANCZOS4, PS_INTERPOLATE_BILINEAR_VARIANCE, PS_INTERPOLATE_LANCZOS2_VARIANCE, PS_INTERPOLATE_LANCZOS3_VARIANCE, PS_INTERPOLATE_LANCZOS4_VARIANCE, PS_INTERPOLATE_NUM_MODES } |
| enumeration of options in interpolation More... | |
| enum | psImageCutDirection { PS_CUT_X_POS, PS_CUT_X_NEG, PS_CUT_Y_POS, PS_CUT_Y_NEG } |
Functions | |
| psImage * | psImageAlloc (psU32 numCols, psU32 numRows, const psElemType type) |
| Create an image of the specified size and type. | |
| psRegion * | psRegionAlloc (psF32 x0, psF32 x1, psF32 y0, psF32 y1) |
| Create a psRegion with the specified attributes. | |
| psRegion * | psRegionFromString (char *region) |
| Create a psRegion with the attribute values given as a string. | |
| char * | psRegionToString (psRegion *region) |
| Create a string of the standard IRAF form '[x0:x1,y0:y1]' from a psRegion. | |
| psImage * | psImageRecycle (psImage *old, psU32 numCols, psU32 numRows, const psElemType type) |
| Resize a given image to the given size/type. | |
| psImage * | psImageCopy (psImage *output, const psImage *input, psElemType type) |
| Makes a copy of a psImage. | |
| psS32 | psImageFreeChildren (psImage *image) |
| Frees all children of a psImage. | |
| psC64 | psImagePixelInterpolate (const psImage *input, float x, float y, const psImage *mask, psU32 maskVal, psC64 unexposedValue, psImageInterpolateMode mode) |
| Interpolate image pixel value given floating point coordinates. | |
| psImage * | psImageSubset (psImage *image, psS32 col0, psS32 row0, psS32 col1, psS32 row1) |
| Create a subimage of the specified area. | |
| psImage * | psImageSubsection (psImage *image, const char *section) |
| Create a subimage of the specified area. | |
| psImage * | psImageTrim (psImage *image, psS32 col0, psS32 row0, psS32 col1, psS32 row1) |
| Trim an image. | |
| psVector * | psImageSlice (psVector *out, psVector *slicePositions, const psImage *input, const psImage *mask, psU32 maskVal, psS32 col0, psS32 row0, psS32 col1, psS32 row1, psImageCutDirection direction, const psStats *stats) |
| Extract pixels from rectlinear region to a vector (array of floats). | |
| psVector * | psImageCut (psVector *out, psVector *cutCols, psVector *cutRows, const psImage *input, const psImage *mask, psU32 maskVal, float startCol, float startRow, float endCol, float endRow, psU32 nSamples, psImageInterpolateMode mode) |
| Extract pixels from an image along a line to a vector (array of floats). | |
| psVector * | psImageRadialCut (psVector *out, const psImage *input, const psImage *mask, psU32 maskVal, float centerCol, float centerRow, const psVector *radii, const psStats *stats) |
| Extract radial region data to a vector. | |
| psS32 | psImageClip (psImage *input, psF64 min, psF64 vmin, psF64 max, psF64 vmax) |
| Clip image values outside of range to given values. | |
| psS32 | psImageClipComplexRegion (psImage *input, psC64 min, psC64 vmin, psC64 max, psC64 vmax) |
| Clip image values outside of a specified complex region. | |
| psS32 | psImageClipNaN (psImage *input, psF64 value) |
| Clip NaN image pixels to given value. | |
| psS32 | psImageOverlaySection (psImage *image, const psImage *overlay, psS32 col0, psS32 row0, const char *op) |
| Overlay subregion of image with another image. | |
| psImage * | psImageRebin (psImage *out, const psImage *in, const psImage *mask, psMaskType maskVal, psU32 scale, const psStats *stats) |
| Rebin image to new scale. | |
| psImage * | psImageResample (psImage *out, const psImage *in, psS32 scale, psImageInterpolateMode mode) |
| Resample image to new scale. | |
| psImage * | psImageRotate (psImage *out, const psImage *in, float angle, psC64 unexposedValue, psImageInterpolateMode mode) |
| Rotate the input image by given angle, specified in degrees. | |
| psImage * | psImageShift (psImage *out, const psImage *in, float dx, float dy, psC64 unexposedValue, psImageInterpolateMode mode) |
| Shift image by an arbitrary number of pixels (dx,dy) in either direction. | |
| psImage * | psImageRoll (psImage *out, const psImage *in, psS32 dx, psS32 dy) |
| Roll image by an integer number of pixels in either direction. | |
| psImage * | psImageTransform (psImage *output, const psImage *input, const psImage *inputMask, int inputMaskVal, const psPlaneTransform *outToIn, const psImage *combineMask, int combineMaskVal) |
| Transform the input image according the supplied transformation. | |
|
|
Value: inline RETURNTYPE p_psImagePixelInterpolate##SUFFIX( \ const psImage* input, /**< input image for interpolation */ \ float x, /**< column location to derive value of */ \ float y, /**< row location ot derive value of */ \ const psImage* mask, /**< if not NULL, the mask of the input image */ \ psU32 maskVal, /**< the mask value */ \ RETURNTYPE unexposedValue /**< return value if x,y location is not in image. */ \ ); |
|
|
Value: PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_U8,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_U16,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_U32,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_U64,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_S8,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_S16,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_S32,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_S64,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_F32,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_F64,psF64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_C32,psC64) \ PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_C64,psC64) |
|
|
Basic image data structure. Struct for maintaining image data of varying types. It also contains information about image size, parent images and children images. |
|
|
Definition at line 30 of file psImageExtraction.h. |
|
|
||||||||||||||||
|
Create an image of the specified size and type. Uses psLib memory allocation functions to create an image struct of the specified size and type.
|
|
||||||||||||||||||||||||
|
Clip image values outside of range to given values. All pixels with values less than min are set to the value vmin. all pixels with values greater than max are set to the value vmax. This function is defined for psU8, psU16, psS8, psS16, psF32, psF64, psC32, and psC64.
|
|
||||||||||||||||||||||||
|
Clip image values outside of a specified complex region. All pixels outside of the rectangular region in complex space formed by the min and max input parameters are set to the value vmax (if either the real or imaginary portion exceeds the respective max values), or vmin. This function is defined for psC32, and psC64 imagery only.
|
|
||||||||||||
|
Clip NaN image pixels to given value. Pixels with NaN, +Inf, or -Inf values are set to the specified value. This function is defined for psF32, psF64, psC32, and psC64.
|
|
||||||||||||||||
|
Makes a copy of a psImage.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Extract pixels from an image along a line to a vector (array of floats). The vector (xs,ys) - (xe,ye) forms the basis of the output vector. Pixels are considered in a rectangular region of width dw about this vector. The input region is collapsed in the perpendicular direction, and each element of the output vector represents pixel-sized boxes, where the value is derived from the statistics of the pixels interpolated along the perpendicular direction. The specific algorithm which must be used is described in the PSLib ADD (PSDC-430-006). The statistic used to derive the output vector value is specified by stats. Only one of the statistics choices may be specified, otherwise the function must return an error. This function must be defined for the following types: psS8, psU16, psF32, psF64.
|
|
|
Frees all children of a psImage.
|
|
||||||||||||||||||||||||
|
Overlay subregion of image with another image. Replace the pixels in the image which correspond to the pixels in OVERLAY with values derived from the IMAGE and OVERLAY based on the given operator OP. Valid operators are "=" (set image value to OVERLAY value), "+" (add OVERLAY value to image value), "-" (subtract OVERLAY from image), "*" (multiply OVERLAY times image), "/" (divide image by OVERLAY). This function is defined for psU8, psS8, psS16, psF32, psF64, psC32, and psC64.
|
|
||||||||||||||||||||||||||||||||
|
Interpolate image pixel value given floating point coordinates.
|
|
||||||||||||||||||||||||||||||||||||
|
Extract radial region data to a vector. A vector is constructed where each vector elements is derived from the statistics of the pixels which land within one of a sequence of radii. The radii are centered on the image pixel coordinate x,y, and are defined by the sequence of values in the vector radii. The specific algorithm which must be used is described in the PSLib ADD (PSDC-430-006). The statistic used to derive the output vector value is specified by stats. Only one of the statistics choices may be specified, otherwise the function must return an error. This function must be defined for the following types: psS8, psU16, psF32, psF64.
|
|
||||||||||||||||||||||||||||
|
Rebin image to new scale. A new image is constructed in which the dimensions are reduced by a factor of 1/scale. The scale, always a positive number, is equal in each dimension and specified the number of pixels used to define a new pixel in the output image. The output image is generated from all input image pixels. This function is defined for psU8, psS8, psS16, psF32, psF64, psC32, and psC64.
|
|
||||||||||||||||||||
|
Resize a given image to the given size/type.
|
|
||||||||||||||||||||
|
Resample image to new scale. A new image is constructed in which the dimensions are increased by a factor of scale. The scale, always a positive number, is equal in each dimension. The output image is generated from all input image pixels. Each pixel in the output image is derived by interpolating between neighboring pixels using the specified interpolation method (mode).
|
|
||||||||||||||||||||
|
Roll image by an integer number of pixels in either direction. The output image is the same dimensions as the input image. Edge pixels wrap to the other side (no values are lost). This function is defined for psU8, psS8, psS16, psF32, psF64, psC32, and psC64.
|
|
||||||||||||||||||||||||
|
Rotate the input image by given angle, specified in degrees. The output image must contain all of the pixels from the input image in their new frame. Pixels in the output image which do not map to input pixels should be set to exposed. The center of rotation is always the center pixel of the image. The rotation is specified in the sense that a positive angle is an anti-clockwise rotation. This function must be defined for the following types: psU8, psU16, psS8, psS16, psF32, psF64, psC32, psC64.
|
|
||||||||||||||||||||||||||||
|
Shift image by an arbitrary number of pixels (dx,dy) in either direction. If the shift values are fractional, the output pixel values should interpolate between the input pixel values. The output image has the same dimensions as the input image. Pixels which fall off the edge of the output image are lost. Newly exposed pixels are set to the value given by exposed. This function must be defined for the following types: psU8, psU16, psS8, psS16, psF32, psF64, psC32, psC64.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
Extract pixels from rectlinear region to a vector (array of floats). The output vector contains either col1-col0 or row1-row0 elements, based on the value of the direction: e.g., if direction is PS_CUT_X_POS, there are col1-col0 elements. The region to be sliced is defined by the lower-left corner, (col0,row0), and the upper-right corner, (col1,row1). Note that the row and column of the upper right-hand corner are NOT included in the region. In the event that col1 or row1 are negative, they shall be interpreted as being relative to the size of the parent image in that dimension. The input region is collapsed in the direction perpendicular to that specified by direction, and each element of the output vectors is derived from the statistics of the pixels at that direction coordinate. The statistic used to derive the output vector value is specified by stats. If mask is non-NULL, pixels for which the corresponding mask pixel matches maskVal are excluded from operations. If coords is not NULL, the calculated coordinates along the slice are returned in this vector. Only one of the statistics choices may be specified, otherwise the function must return an error. This function is defined for the following types: psS8, psU16, psF32, psF64.
|
|
||||||||||||
|
Create a subimage of the specified area. Uses psLib memory allocation functions to create an image based on a larger one.
|
|
||||||||||||||||||||||||
|
Create a subimage of the specified area. Extracts a subimage starting at (col0,row0) to (col1-1,row1-1). Note: the column col1 and row row1 are NOT included in the resulting subimage. In the event that x1 or y1 are non-positive, they shall be interpreted as being relative to the size of the parent image in that dimension. If the entire specified subimage is not contained within the parent image, an error results and the return value will be NULL. The resulting psImage does not create a copy of the underlying image data. Future changes in the parent may be reflecting in the child subimage and vis versa.
|
|
||||||||||||||||||||||||||||||||
|
Transform the input image according the supplied transformation. Transform the input image according the supplied transformation. In the event that the output is NULL, the smallest possible image capable of containing the entire transformed input image is to be returned; otherwise only the image size specified in the output image is to be used. If the inputMask is not NULL, those pixels in the inputMask matching inputMaskVal are to be ignored in the transformation. The inputMask must be of type psU8, and of the same size as the input, otherwise the function shall generate an error and return NULL. The transformation outToIn specifies the coordinates in the input image of a pixel in the output image - note that this is the reverse of what might be naively expected, but it is what is required in order to use psImagePixelInterpolate. If combineMask is not NULL, then those pixels that match combineMaskVal are not transformed. combineMask must be of type psU8 and of the same size as the output, otherwise the function shall generate an error and return NULL. This function must be capable of handling the following types for the input (with corresponding types for the output): psF32, psF64.
|
|
||||||||||||||||||||||||
|
Trim an image. Trim the specified image in-place, which involves shuffling the pixels around in memory. The pixels in the region [col0:col1,row0:row1] shall consist the output image. The column col1 and row row1 are NOT included in the range. In the event that x1 or y1 are non-positive, they shall be interpreted as being relative to the size of the parent image in that dimension. If the entire specified subimage is not contained within the parent image, an error results and the return value will be NULL. N.B. If the input psImage is a child of another psImage, no pixel data will be trimmed, rather it equivalent to calling psImageSubset. If the input psImage is, however, a parent psImage, any children will be obliterated, i.e., freed from memory.
|
|
||||||||||||||||||||
|
Create a psRegion with the specified attributes. Uses psLib memory allocation functions to create a psRegion the specified x0, x1, y0, and y1.
|
|
|
Create a psRegion with the attribute values given as a string. Create a psRegion with the attribute values given as a string. The format shall be of the standard IRAF form '[x0:x1,y0:y1]'
|
|
|
Create a string of the standard IRAF form '[x0:x1,y0:y1]' from a psRegion.
|
1.3.9.1