![]() |
Leptonica
1.82.0
Image processing and image analysis suite
|
#include <string.h>
#include "allheaders.h"
Go to the source code of this file.
Functions | |
PIX * | pixSelectBySize (PIX *pixs, l_int32 width, l_int32 height, l_int32 connectivity, l_int32 type, l_int32 relation, l_int32 *pchanged) |
PIXA * | pixaSelectBySize (PIXA *pixas, l_int32 width, l_int32 height, l_int32 type, l_int32 relation, l_int32 *pchanged) |
NUMA * | pixaMakeSizeIndicator (PIXA *pixa, l_int32 width, l_int32 height, l_int32 type, l_int32 relation) |
PIX * | pixSelectByPerimToAreaRatio (PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByPerimToAreaRatio (PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged) |
PIX * | pixSelectByPerimSizeRatio (PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByPerimSizeRatio (PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged) |
PIX * | pixSelectByAreaFraction (PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByAreaFraction (PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged) |
PIX * | pixSelectByArea (PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByArea (PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged) |
PIX * | pixSelectByWidthHeightRatio (PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByWidthHeightRatio (PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged) |
PIXA * | pixaSelectByNumConnComp (PIXA *pixas, l_int32 nmin, l_int32 nmax, l_int32 connectivity, l_int32 *pchanged) |
PIXA * | pixaSelectWithIndicator (PIXA *pixas, NUMA *na, l_int32 *pchanged) |
l_ok | pixRemoveWithIndicator (PIX *pixs, PIXA *pixa, NUMA *na) |
l_ok | pixAddWithIndicator (PIX *pixs, PIXA *pixa, NUMA *na) |
PIXA * | pixaSelectWithString (PIXA *pixas, const char *str, l_int32 *perror) |
PIX * | pixaRenderComponent (PIX *pixs, PIXA *pixa, l_int32 index) |
PIXA * | pixaSort (PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag) |
PIXA * | pixaBinSort (PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag) |
PIXA * | pixaSortByIndex (PIXA *pixas, NUMA *naindex, l_int32 copyflag) |
PIXAA * | pixaSort2dByIndex (PIXA *pixas, NUMAA *naa, l_int32 copyflag) |
PIXA * | pixaSelectRange (PIXA *pixas, l_int32 first, l_int32 last, l_int32 copyflag) |
PIXAA * | pixaaSelectRange (PIXAA *paas, l_int32 first, l_int32 last, l_int32 copyflag) |
PIXAA * | pixaaScaleToSize (PIXAA *paas, l_int32 wd, l_int32 hd) |
PIXAA * | pixaaScaleToSizeVar (PIXAA *paas, NUMA *nawd, NUMA *nahd) |
PIXA * | pixaScaleToSize (PIXA *pixas, l_int32 wd, l_int32 hd) |
PIXA * | pixaScaleToSizeRel (PIXA *pixas, l_int32 delw, l_int32 delh) |
PIXA * | pixaScale (PIXA *pixas, l_float32 scalex, l_float32 scaley) |
PIXA * | pixaScaleBySampling (PIXA *pixas, l_float32 scalex, l_float32 scaley) |
PIXA * | pixaRotate (PIXA *pixas, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height) |
PIXA * | pixaRotateOrth (PIXA *pixas, l_int32 rotation) |
PIXA * | pixaTranslate (PIXA *pixas, l_int32 hshift, l_int32 vshift, l_int32 incolor) |
PIXA * | pixaAddBorderGeneral (PIXA *pixad, PIXA *pixas, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val) |
PIXA * | pixaaFlattenToPixa (PIXAA *paa, NUMA **pnaindex, l_int32 copyflag) |
l_ok | pixaaSizeRange (PIXAA *paa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh) |
l_ok | pixaSizeRange (PIXA *pixa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh) |
PIXA * | pixaClipToPix (PIXA *pixas, PIX *pixs) |
l_ok | pixaClipToForeground (PIXA *pixas, PIXA **ppixad, BOXA **pboxa) |
l_ok | pixaGetRenderingDepth (PIXA *pixa, l_int32 *pdepth) |
l_ok | pixaHasColor (PIXA *pixa, l_int32 *phascolor) |
l_ok | pixaAnyColormaps (PIXA *pixa, l_int32 *phascmap) |
l_ok | pixaGetDepthInfo (PIXA *pixa, l_int32 *pmaxdepth, l_int32 *psame) |
PIXA * | pixaConvertToSameDepth (PIXA *pixas) |
PIXA * | pixaConvertToGivenDepth (PIXA *pixas, l_int32 depth) |
l_ok | pixaEqual (PIXA *pixa1, PIXA *pixa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame) |
l_ok | pixaSetFullSizeBoxa (PIXA *pixa) |
Variables | |
static const l_int32 | MinCompsForBinSort = 200 |
static const l_float32 | MinAngleToRotate = 0.001 |
Filters PIX *pixSelectBySize() PIXA *pixaSelectBySize() NUMA *pixaMakeSizeIndicator() PIX *pixSelectByPerimToAreaRatio() PIXA *pixaSelectByPerimToAreaRatio() PIX *pixSelectByPerimSizeRatio() PIXA *pixaSelectByPerimSizeRatio() PIX *pixSelectByAreaFraction() PIXA *pixaSelectByAreaFraction() PIX *pixSelectByArea() PIXA *pixaSelectByArea() PIX *pixSelectByWidthHeightRatio() PIXA *pixaSelectByWidthHeightRatio() PIXA *pixaSelectByNumConnComp() PIXA *pixaSelectWithIndicator() l_int32 pixRemoveWithIndicator() l_int32 pixAddWithIndicator() PIXA *pixaSelectWithString() PIX *pixaRenderComponent() Sort functions PIXA *pixaSort() PIXA *pixaBinSort() PIXA *pixaSortByIndex() PIXAA *pixaSort2dByIndex() Pixa and Pixaa range selection PIXA *pixaSelectRange() PIXAA *pixaaSelectRange() Pixa and Pixaa scaling PIXAA *pixaaScaleToSize() PIXAA *pixaaScaleToSizeVar() PIXA *pixaScaleToSize() PIXA *pixaScaleToSizeRel() PIXA *pixaScale() PIXA *pixaScaleBySampling() Pixa rotation and translation PIXA *pixaRotate() PIXA *pixaRotateOrth() PIXA *pixaTranslate() Miscellaneous PIXA *pixaAddBorderGeneral() PIXA *pixaaFlattenToPixa() l_int32 pixaaSizeRange() l_int32 pixaSizeRange() PIXA *pixaClipToPix() PIXA *pixaClipToForeground() l_int32 pixaGetRenderingDepth() l_int32 pixaHasColor() l_int32 pixaAnyColormaps() l_int32 pixaGetDepthInfo() PIXA *pixaConvertToSameDepth() PIXA *pixaConvertToGivenDepth() l_int32 pixaEqual() l_int32 pixaSetFullSizeBoxa()
Definition in file pixafunc1.c.
PIXA* pixaAddBorderGeneral | ( | PIXA * | pixad, |
PIXA * | pixas, | ||
l_int32 | left, | ||
l_int32 | right, | ||
l_int32 | top, | ||
l_int32 | bot, | ||
l_uint32 | val | ||
) |
[in] | pixad | can be null or equal to pixas |
[in] | pixas | containing pix of all depths; colormap ok |
[in] | left,right,top,bot | number of pixels added |
[in] | val | value of added border pixels |
Notes: (1) For binary images: white: val = 0 black: val = 1 For grayscale images: white: val = 2 ** d - 1 black: val = 0 For rgb color images: white: val = 0xffffff00 black: val = 0 For colormapped images, use 'index' found this way: white: pixcmapGetRankIntensity(cmap, 1.0, &index); black: pixcmapGetRankIntensity(cmap, 0.0, &index); (2) For in-place replacement of each pix with a bordered version, use pixad = pixas. To make a new pixa, use pixad = NULL. (3) In both cases, the boxa has sides adjusted as if it were expanded by the border.
Definition at line 2411 of file pixafunc1.c.
References boxaAddBox(), boxaDestroy(), boxAdjustSides(), boxaReplaceBox(), L_CLONE, L_COPY, L_INSERT, pixaAddPix(), pixaCreate(), pixAddBorderGeneral(), pixaGetBox(), pixaGetBoxa(), pixaGetBoxaCount(), pixaGetCount(), pixaGetPix(), pixaReplacePix(), and pixDestroy().
[in] | paa | |
[out] | pnaindex | [optional] the pixa index in the pixaa |
[in] | copyflag | L_COPY or L_CLONE |
Notes: (1) This 'flattens' the pixaa to a pixa, taking the pix in order in the first pixa, then the second, etc. (2) If &naindex is defined, we generate a Numa that gives, for each pix in the pixaa, the index of the pixa to which it belongs.
Definition at line 2482 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, numaAddNumber(), numaCreate(), pixaAddBox(), pixaAddPix(), pixaaGetCount(), pixaaGetPixa(), pixaCreate(), pixaDestroy(), pixaGetBox(), pixaGetBoxaCount(), pixaGetCount(), and pixaGetPix().
Referenced by pixGetWordsInTextlines(), recogDebugAverages(), and recogExtractPixa().
l_ok pixaAnyColormaps | ( | PIXA * | pixa, |
l_int32 * | phascmap | ||
) |
[in] | pixa | |
[out] | phascmap | 1 if any pix has a colormap; 0 otherwise |
Definition at line 2845 of file pixafunc1.c.
References L_CLONE, pixaGetCount(), and pixaGetPix().
Referenced by pixaConvertToSameDepth(), pixaDisplayOnLattice(), and pixaDisplayTiled().
[in] | paas | |
[in] | wd | target width; use 0 if using height as target |
[in] | hd | target height; use 0 if using width as target |
Notes: (1) This guarantees that each output scaled image has the dimension(s) you specify. ~ To specify the width with isotropic scaling, set hd = 0. ~ To specify the height with isotropic scaling, set wd = 0. ~ If both wd and hd are specified, the image is scaled (in general, anisotropically) to that size. ~ It is an error to set both wd and hd to 0.
Definition at line 1925 of file pixafunc1.c.
References L_CLONE, L_INSERT, pixaaAddPixa(), pixaaCreate(), pixaaGetCount(), pixaaGetPixa(), pixaDestroy(), and pixaScaleToSize().
[in] | paas | |
[in] | nawd | [optional] target widths; use NULL if using height |
[in] | nahd | [optional] target height; use NULL if using width |
Notes: (1) This guarantees that the scaled images in each pixa have the dimension(s) you specify in the numas. ~ To specify the width with isotropic scaling, set nahd = NULL. ~ To specify the height with isotropic scaling, set nawd = NULL. ~ If both nawd and nahd are specified, the image is scaled (in general, anisotropically) to that size. ~ It is an error to set both nawd and nahd to NULL. (2) If either nawd and/or nahd is defined, it must have the same count as the number of pixa in paas.
Definition at line 1974 of file pixafunc1.c.
References L_CLONE, L_INSERT, numaGetCount(), numaGetIValue(), pixaaAddPixa(), pixaaCreate(), pixaaGetCount(), pixaaGetPixa(), pixaDestroy(), and pixaScaleToSize().
[in] | paas | |
[in] | first | use 0 to select from the beginning |
[in] | last | use -1 to select to the end |
[in] | copyflag | L_COPY, L_CLONE |
Notes: (1) The copyflag specifies what we do with each pixa from paas. Specifically, L_CLONE inserts a clone into paad of each selected pixa from paas.
Definition at line 1864 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, pixaaAddPixa(), pixaaCreate(), pixaaGetCount(), and pixaaGetPixa().
l_ok pixaaSizeRange | ( | PIXAA * | paa, |
l_int32 * | pminw, | ||
l_int32 * | pminh, | ||
l_int32 * | pmaxw, | ||
l_int32 * | pmaxh | ||
) |
[in] | paa | |
[out] | pminw,pminh,pmaxw,pmaxh | [optional] range of dimensions of all boxes |
Definition at line 2537 of file pixafunc1.c.
References L_CLONE, pixaaGetCount(), pixaaGetPixa(), pixaDestroy(), and pixaSizeRange().
PIXA* pixaBinSort | ( | PIXA * | pixas, |
l_int32 | sorttype, | ||
l_int32 | sortorder, | ||
NUMA ** | pnaindex, | ||
l_int32 | copyflag | ||
) |
[in] | pixas | |
[in] | sorttype | L_SORT_BY_X, L_SORT_BY_Y, L_SORT_BY_WIDTH, L_SORT_BY_HEIGHT, L_SORT_BY_PERIMETER |
[in] | sortorder | L_SORT_INCREASING, L_SORT_DECREASING |
[out] | pnaindex | [optional] index of sorted order into original array |
[in] | copyflag | L_COPY, L_CLONE |
Notes: (1) This sorts based on the data in the boxa. If the boxa count is not the same as the pixa count, this returns an error. (2) The copyflag refers to the pix and box copies that are inserted into the sorted pixa. These are either L_COPY or L_CLONE. (3) For a large number of boxes (say, greater than 1000), this O(n) binsort is much faster than the O(nlogn) shellsort. For 5000 components, this is over 20x faster than boxaSort(). (4) Consequently, pixaSort() calls this function if it will likely go much faster.
Definition at line 1615 of file pixafunc1.c.
References Pixa::boxa, boxaGetBoxGeometry(), boxaGetCount(), L_CLONE, L_COPY, L_SORT_BY_HEIGHT, L_SORT_BY_PERIMETER, L_SORT_BY_WIDTH, L_SORT_BY_X, L_SORT_BY_Y, L_SORT_DECREASING, L_SORT_INCREASING, numaAddNumber(), numaCreate(), numaDestroy(), numaGetBinSortIndex(), pixaGetCount(), and pixaSortByIndex().
[in] | pixas | |
[out] | ppixad | [optional] pixa of clipped pix returned |
[out] | pboxa | [optional] clipping boxes returned |
Notes: (1) At least one of [&pixd, &boxa] must be specified. (2) Any pix with no fg pixels is skipped. (3) See pixClipToForeground().
Definition at line 2710 of file pixafunc1.c.
References boxaAddBox(), boxaCreate(), boxDestroy(), L_CLONE, L_INSERT, pixaAddPix(), pixaCreate(), pixaGetCount(), pixaGetPix(), pixClipToForeground(), and pixDestroy().
[in] | pixas | |
[in] | pixs |
Notes: (1) This is intended for use in situations where pixas was originally generated from the input pixs. (2) Returns a pixad where each pix in pixas is ANDed with its associated region of the input pixs. This region is specified by the the box that is associated with the pix. (3) In a typical application of this function, pixas has a set of region masks, so this generates a pixa of the parts of pixs that correspond to each region mask component, along with the bounding box for the region.
Definition at line 2661 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, pixaAddBox(), pixaAddPix(), pixaCreate(), pixaGetBox(), pixaGetCount(), pixaGetPix(), pixAnd(), pixClipRectangle(), and pixDestroy().
[in] | pixas | |
[in] | depth | specify either 8 or 32 bpp |
Notes: (1) Use this to remove any colormaps and convert all pix to either 8 or 32 bpp. (2) To convert losslessly, get depth from pixaGetRenderingDepth(). (3) Clone pix may be in the returned pixa if conversion is to 32 bpp.
Definition at line 3009 of file pixafunc1.c.
References L_CLONE, pixaCreate(), pixaGetCount(), pixaGetPix(), and pixaGetRenderingDepth().
[in] | pixas |
Notes: (1) Any pix with 16 bpp will be converted to 8 bpp. If all pix have bpp = 1, the output depth will be 1. If any pix has color (either rgb or a colormap with color), the output depth will be 32. Otherwise, the output depth is the maximum of 8 and the the max depth of all the pix. (2) This can be used to allow lossless rendering onto a single pix. (Except: 16 bpp gets converted to 8.)
Definition at line 2937 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, pixaAddPix(), pixaAnyColormaps(), pixaCopy(), pixaCreate(), pixaDestroy(), pixaGetBoxa(), pixaGetCount(), pixaGetDepthInfo(), pixaGetPix(), pixaGetRenderingDepth(), pixaSetBoxa(), pixConvertTo32(), pixConvertTo8(), and pixDestroy().
Referenced by pixaDisplayTiledInColumns().
[in] | pixs | 1 bpp pix from which components are added; in-place |
[in] | pixa | of connected components, some of which will be put into pixs |
[in] | na | numa indicator: add components corresponding to 1s |
Notes: (1) This complements pixRemoveWithIndicator(). Here, the selected components are added to pixs.
Definition at line 1281 of file pixafunc1.c.
References boxDestroy(), boxGetGeometry(), L_CLONE, numaGetCount(), numaGetIValue(), PIX_DST, PIX_SRC, pixaGetBox(), pixaGetCount(), pixaGetPix(), pixDestroy(), and pixRasterop().
[in] | pixa1 | |
[in] | pixa2 | |
[in] | maxdist | |
[out] | pnaindex | [optional] index array of correspondences |
[out] | psame | 1 if equal; 0 otherwise |
Notes: (1) The two pixa are the "same" if they contain the same boxa and the same ordered set of pix. However, if they have boxa, the pix in each pixa can differ in ordering by an amount given by the parameter maxdist. If they don't have a boxa, the maxdist parameter is ignored, and the ordering of the pix must be identical. (2) This applies only to boxa geometry, pixels and ordering; other fields in the pix are ignored. (3) naindex[i] gives the position of the box in pixa2 that corresponds to box i in pixa1. It is only returned if the pixa have boxa and the boxa are equal. (4) In situations where the ordering is very different, so that a large maxdist is required for "equality", this should be implemented with a hash function for efficiency.
Definition at line 3082 of file pixafunc1.c.
References boxaDestroy(), boxaEqual(), boxaGetCount(), L_CLONE, numaDestroy(), numaGetIValue(), pixaGetBoxa(), pixaGetCount(), pixaGetPix(), pixDestroy(), and pixEqual().
l_ok pixaGetDepthInfo | ( | PIXA * | pixa, |
l_int32 * | pmaxdepth, | ||
l_int32 * | psame | ||
) |
[in] | pixa | |
[out] | pmaxdepth | [optional] max pixel depth of pix in pixa |
[out] | psame | [optional] true if all depths are equal |
Definition at line 2884 of file pixafunc1.c.
References pixaGetCount(), and pixaGetPixDimensions().
Referenced by pixaConvertToSameDepth(), pixaDisplayTiled(), pixaDisplayTiledInColumns(), and pixaGetRenderingDepth().
l_ok pixaGetRenderingDepth | ( | PIXA * | pixa, |
l_int32 * | pdepth | ||
) |
[in] | pixa | |
[out] | pdepth | depth required to render if all colormaps are removed |
Notes: (1) Any pix with 16 bpp will be considered as having 8 bpp. If all pix have bpp = 1, this returns 1. If any pix has color (either rgb or a colormap with color), this return 32. Otherwise, this returns the maximum of 8 and the max depth of all the pix. (2) This can be used to allow lossless rendering onto a single pix.
Definition at line 2767 of file pixafunc1.c.
References pixaGetDepthInfo(), and pixaHasColor().
Referenced by convertToNUpFiles(), pixaConvertToGivenDepth(), pixaConvertToNUpPixa(), pixaConvertToSameDepth(), and pixaDisplayPairTiledInColumns().
l_ok pixaHasColor | ( | PIXA * | pixa, |
l_int32 * | phascolor | ||
) |
[in] | pixa | |
[out] | phascolor | 1 if any pix is rgb or has a colormap with color; 0 otherwise |
Definition at line 2804 of file pixafunc1.c.
References L_CLONE, pixaGetCount(), and pixaGetPix().
Referenced by pixaGetRenderingDepth().
NUMA* pixaMakeSizeIndicator | ( | PIXA * | pixa, |
l_int32 | width, | ||
l_int32 | height, | ||
l_int32 | type, | ||
l_int32 | relation | ||
) |
[in] | pixa | |
[in] | width,height | threshold dimensions |
[in] | type | L_SELECT_WIDTH, L_SELECT_HEIGHT, L_SELECT_IF_EITHER, L_SELECT_IF_BOTH |
[in] | relation | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
Notes: (1) The args specify constraints on the size of the components that are kept. (2) If the selection type is L_SELECT_WIDTH, the input height is ignored, and v.v. (3) To keep small components, use relation = L_SELECT_IF_LT or L_SELECT_IF_LTE. To keep large components, use relation = L_SELECT_IF_GT or L_SELECT_IF_GTE.
Definition at line 362 of file pixafunc1.c.
References L_SELECT_HEIGHT, L_SELECT_IF_BOTH, L_SELECT_IF_EITHER, L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, L_SELECT_WIDTH, numaAddNumber(), numaCreate(), pixaGetCount(), and pixaGetPixDimensions().
Referenced by pixaSelectBySize().
[in] | pixs | [optional] 1 bpp pix |
[in] | pixa | of 1 bpp connected components, one of which will be rendered in pixs, with its origin determined by the associated box. |
[in] | index | of component to be rendered |
Notes: (1) If pixs is null, this generates an empty pix of a size determined by union of the component bounding boxes, and including the origin. (2) The selected component is blitted into pixs.
Definition at line 1405 of file pixafunc1.c.
References pixaGetCount().
PIXA* pixaRotate | ( | PIXA * | pixas, |
l_float32 | angle, | ||
l_int32 | type, | ||
l_int32 | incolor, | ||
l_int32 | width, | ||
l_int32 | height | ||
) |
[in] | pixas | 1, 2, 4, 8, 32 bpp rgb |
[in] | angle | rotation angle in radians; clockwise is positive |
[in] | type | L_ROTATE_AREA_MAP, L_ROTATE_SHEAR, L_ROTATE_SAMPLING |
[in] | incolor | L_BRING_IN_WHITE, L_BRING_IN_BLACK |
[in] | width | original width; use 0 to avoid embedding |
[in] | height | original height; use 0 to avoid embedding |
Notes: (1) Each pix is rotated about its center. See pixRotate() for details. (2) The boxa array is copied. Why is it not rotated? If a boxa exists, the array of boxes is in 1-to-1 correspondence with the array of pix, and each box typically represents the location of the pix relative to an image from which it has been extracted. Like the pix, we could rotate each box around its center, and then generate a box that contains all four corners, as is done in boxaRotate(), but this seems unnecessary.
Definition at line 2227 of file pixafunc1.c.
References L_BRING_IN_BLACK, L_BRING_IN_WHITE, L_ROTATE_AREA_MAP, L_ROTATE_SAMPLING, and L_ROTATE_SHEAR.
[in] | pixas | |
[in] | rotation | 0 = noop, 1 = 90 deg, 2 = 180 deg, 3 = 270 deg; all rotations are clockwise |
Notes: (1) Rotates each pix in the pixa. Rotates and saves the boxes in the boxa if the boxa is full.
Definition at line 2285 of file pixafunc1.c.
References boxDestroy(), boxRotateOrth(), L_CLONE, L_COPY, L_INSERT, pixaAddBox(), pixaAddPix(), pixaCopy(), pixaCreate(), pixaDestroy(), pixaGetBox(), pixaGetBoxaCount(), pixaGetCount(), pixaGetPix(), pixDestroy(), pixGetDimensions(), and pixRotateOrth().
[in] | pixas | |
[in] | scalex | |
[in] | scaley |
Notes: (1) If pixas has a full boxes, it is scaled as well.
Definition at line 2111 of file pixafunc1.c.
References L_CLONE, pixaCreate(), pixaGetCount(), pixaGetPix(), and pixScale().
[in] | pixas | |
[in] | scalex | |
[in] | scaley |
Notes: (1) If pixas has a full boxes, it is scaled as well.
Definition at line 2162 of file pixafunc1.c.
References L_CLONE, pixaCreate(), pixaGetCount(), pixaGetPix(), and pixScaleBySampling().
[in] | pixas | |
[in] | wd | target width; use 0 if using height as target |
[in] | hd | target height; use 0 if using width as target |
Notes: (1) See pixaaScaleToSize()
Definition at line 2022 of file pixafunc1.c.
References L_CLONE, pixaCopy(), pixaCreate(), pixaGetCount(), pixaGetPix(), and pixScaleToSize().
Referenced by pixaaScaleToSize(), and pixaaScaleToSizeVar().
[in] | pixas | |
[in] | delw | change in width, in pixels; 0 means no change |
[in] | delh | change in height, in pixels; 0 means no change return pixad, or NULL on error |
Notes: (1) If a requested change in a pix is not possible because either the requested width or height is <= 0, issue a warning and return a copy.
Definition at line 2067 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, pixaAddPix(), pixaCreate(), pixaGetCount(), pixaGetPix(), pixDestroy(), and pixScaleToSizeRel().
[in] | pixas | |
[in] | thresh | threshold number of fg pixels |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) This filters components based on the number of fg pixels in the component. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold number of fg pixels, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 926 of file pixafunc1.c.
References L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, numaDestroy(), numaMakeThresholdIndicator(), pixaCountPixels(), and pixaSelectWithIndicator().
Referenced by pixSelectByArea().
[in] | pixas | |
[in] | thresh | threshold ratio of fg pixels to (w * h) |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) This filters components based on the fraction of fg pixels of the component in its bounding box. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold fraction of foreground, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 792 of file pixafunc1.c.
References L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, numaDestroy(), numaMakeThresholdIndicator(), pixaFindAreaFraction(), and pixaSelectWithIndicator().
Referenced by pixSelectByAreaFraction().
PIXA* pixaSelectByNumConnComp | ( | PIXA * | pixas, |
l_int32 | nmin, | ||
l_int32 | nmax, | ||
l_int32 | connectivity, | ||
l_int32 * | pchanged | ||
) |
[in] | pixas | |
[in] | nmin | minimum number of components |
[in] | nmax | maximum number of components |
[in] | connectivity | 4 or 8 |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) This filters by the number of connected components in a given range.
Definition at line 1109 of file pixafunc1.c.
References L_CLONE, numaAddNumber(), numaCreate(), numaDestroy(), pixaGetCount(), pixaGetPix(), pixaSelectWithIndicator(), pixCountConnComp(), and pixDestroy().
PIXA* pixaSelectByPerimSizeRatio | ( | PIXA * | pixas, |
l_float32 | thresh, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixas | |
[in] | thresh | threshold ratio of fg boundary to b.b. circumference |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) See pixSelectByPerimSizeRatio().
Definition at line 658 of file pixafunc1.c.
References L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, numaDestroy(), numaMakeThresholdIndicator(), pixaFindPerimSizeRatio(), and pixaSelectWithIndicator().
Referenced by pixSelectByPerimSizeRatio().
PIXA* pixaSelectByPerimToAreaRatio | ( | PIXA * | pixas, |
l_float32 | thresh, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
pixaSelectByPerimToAreaRatio()
[in] | pixas | |
[in] | thresh | threshold ratio of fg boundary to fg pixels |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) See pixSelectByPerimToAreaRatio().
Definition at line 527 of file pixafunc1.c.
References L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, numaDestroy(), numaMakeThresholdIndicator(), pixaFindPerimToAreaRatio(), and pixaSelectWithIndicator().
Referenced by pixSelectByPerimToAreaRatio().
PIXA* pixaSelectBySize | ( | PIXA * | pixas, |
l_int32 | width, | ||
l_int32 | height, | ||
l_int32 | type, | ||
l_int32 | relation, | ||
l_int32 * | pchanged | ||
) |
[in] | pixas | |
[in] | width,height | threshold dimensions |
[in] | type | L_SELECT_WIDTH, L_SELECT_HEIGHT, L_SELECT_IF_EITHER, L_SELECT_IF_BOTH |
[in] | relation | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 otherwise |
Notes: (1) The args specify constraints on the size of the components that are kept. (2) Uses pix and box clones in the new pixa. (3) If the selection type is L_SELECT_WIDTH, the input height is ignored, and v.v. (4) To keep small components, use relation = L_SELECT_IF_LT or L_SELECT_IF_LTE. To keep large components, use relation = L_SELECT_IF_GT or L_SELECT_IF_GTE.
Definition at line 306 of file pixafunc1.c.
References L_SELECT_HEIGHT, L_SELECT_IF_BOTH, L_SELECT_IF_EITHER, L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, L_SELECT_WIDTH, numaDestroy(), pixaMakeSizeIndicator(), and pixaSelectWithIndicator().
Referenced by pixaDisplayMultiTiled(), and pixSelectBySize().
PIXA* pixaSelectByWidthHeightRatio | ( | PIXA * | pixas, |
l_float32 | thresh, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
pixaSelectByWidthHeightRatio()
[in] | pixas | |
[in] | thresh | threshold ratio of width/height |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) This filters components based on the width-to-height ratio of each pix. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold ratio, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 1059 of file pixafunc1.c.
References L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, numaDestroy(), numaMakeThresholdIndicator(), pixaFindWidthHeightRatio(), and pixaSelectWithIndicator().
Referenced by pixSelectByWidthHeightRatio().
[in] | pixas | |
[in] | first | use 0 to select from the beginning |
[in] | last | use -1 to select to the end |
[in] | copyflag | L_COPY, L_CLONE |
Notes: (1) The copyflag specifies what we do with each pix from pixas. Specifically, L_CLONE inserts a clone into pixad of each selected pix from pixas.
Definition at line 1809 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, pixaAddPix(), pixaCreate(), pixaGetCount(), and pixaGetPix().
Referenced by pixaSelectToPdf(), and recogFilterPixaBySize().
[in] | pixas | |
[in] | na | indicator numa |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) Returns a pixa clone if no components are removed. (2) Uses pix and box clones in the new pixa. (3) The indicator numa has values 0 (ignore) and 1 (accept). (4) If the source boxa is not fully populated, it is left empty in the dest pixa.
Definition at line 1168 of file pixafunc1.c.
References L_CLONE, L_INSERT, numaGetCount(), numaGetIValue(), pixaAddBox(), pixaAddPix(), pixaCopy(), pixaCreate(), pixaGetBox(), pixaGetBoxaCount(), and pixaGetPix().
Referenced by pixaSelectByArea(), pixaSelectByAreaFraction(), pixaSelectByNumConnComp(), pixaSelectByPerimSizeRatio(), pixaSelectByPerimToAreaRatio(), pixaSelectBySize(), and pixaSelectByWidthHeightRatio().
[in] | pixas | |
[in] | str | string of indices into pixa, giving the pix to be selected |
[out] | perror | [optional] 1 if any indices are invalid; 0 if all indices are valid |
Notes: (1) Returns a pixa with copies of selected pix. (2) Associated boxes are also copied, if fully populated.
Definition at line 1334 of file pixafunc1.c.
References L_COPY, L_INSERT, numaCreateFromString(), numaDestroy(), numaGetCount(), numaGetIValue(), numaGetMax(), pixaAddBox(), pixaAddPix(), pixaCreate(), pixaGetBox(), pixaGetBoxaCount(), pixaGetCount(), and pixaGetPix().
l_ok pixaSetFullSizeBoxa | ( | PIXA * | pixa | ) |
[in] | pixa |
Notes: (1) Replaces the existing boxa. Each box gives the dimensions of the corresponding pix. This is needed for functions like pixaSort() that sort based on the boxes.
Definition at line 3166 of file pixafunc1.c.
References boxaAddBox(), boxaCreate(), boxCreate(), L_CLONE, L_INSERT, pixaGetCount(), pixaGetPix(), pixaSetBoxa(), pixDestroy(), and pixGetDimensions().
Referenced by pixaSort().
l_ok pixaSizeRange | ( | PIXA * | pixa, |
l_int32 * | pminw, | ||
l_int32 * | pminh, | ||
l_int32 * | pmaxw, | ||
l_int32 * | pmaxh | ||
) |
[in] | pixa | |
[out] | pminw,pminh,pmaxw,pmaxh | [optional] range of dimensions of pix in the array |
Definition at line 2591 of file pixafunc1.c.
References L_CLONE, pixaGetCount(), and pixaGetPix().
Referenced by pixaAccumulateSamples(), pixaaSizeRange(), pixaDisplayTiled(), pixaDisplayTiledWithText(), and recogAverageSamples().
PIXA* pixaSort | ( | PIXA * | pixas, |
l_int32 | sorttype, | ||
l_int32 | sortorder, | ||
NUMA ** | pnaindex, | ||
l_int32 | copyflag | ||
) |
[in] | pixas | |
[in] | sorttype | L_SORT_BY_X, L_SORT_BY_Y, L_SORT_BY_WIDTH, L_SORT_BY_HEIGHT, L_SORT_BY_MIN_DIMENSION, L_SORT_BY_MAX_DIMENSION, L_SORT_BY_PERIMETER, L_SORT_BY_AREA, L_SORT_BY_ASPECT_RATIO |
[in] | sortorder | L_SORT_INCREASING, L_SORT_DECREASING |
[out] | pnaindex | [optional] index of sorted order into original array |
[in] | copyflag | L_COPY, L_CLONE |
Notes: (1) This sorts based on the data in the boxa. If the boxa count is not the same as the pixa count, this returns an error. (2) If the boxa is empty, it makes one corresponding to the dimensions of each pix, which allows meaningful sorting on all types except x and y. (3) The copyflag refers to the pix and box copies that are inserted into the sorted pixa. These are either L_COPY or L_CLONE.
Definition at line 1475 of file pixafunc1.c.
References Pixa::boxa, boxaGetCount(), L_CLONE, L_COPY, L_SORT_BY_AREA, L_SORT_BY_ASPECT_RATIO, L_SORT_BY_HEIGHT, L_SORT_BY_MAX_DIMENSION, L_SORT_BY_MIN_DIMENSION, L_SORT_BY_PERIMETER, L_SORT_BY_WIDTH, L_SORT_BY_X, L_SORT_BY_Y, L_SORT_DECREASING, L_SORT_INCREASING, pixaCopy(), pixaGetCount(), and pixaSetFullSizeBoxa().
Referenced by recogFilterPixaBySize().
[in] | pixas | |
[in] | naa | numaa that maps from the new pixaa to the input pixas |
[in] | copyflag | L_CLONE or L_COPY |
Definition at line 1744 of file pixafunc1.c.
References L_CLONE, L_INSERT, numaaGetCount(), numaaGetNuma(), numaaGetNumberCount(), numaDestroy(), numaGetCount(), numaGetIValue(), pixaaAddPixa(), pixaaCreate(), pixaAddBox(), pixaAddPix(), pixaCreate(), pixaGetBox(), pixaGetCount(), and pixaGetPix().
Referenced by pixGetWordsInTextlines().
[in] | pixas | |
[in] | naindex | na that maps from the new pixa to the input pixa |
[in] | copyflag | L_COPY, L_CLONE |
Definition at line 1703 of file pixafunc1.c.
References L_CLONE, L_COPY, L_INSERT, numaGetIValue(), pixaAddBox(), pixaAddPix(), pixaCreate(), pixaGetBox(), pixaGetCount(), and pixaGetPix().
Referenced by pixaBinSort().
[in] | pixas | |
[in] | hshift | horizontal shift; hshift > 0 is to right |
[in] | vshift | vertical shift; vshift > 0 is down |
[in] | incolor | L_BRING_IN_WHITE, L_BRING_IN_BLACK |
Definition at line 2337 of file pixafunc1.c.
References boxaDestroy(), boxaTransform(), L_CLONE, L_COPY, L_INSERT, pixaAddPix(), pixaCopy(), pixaCreate(), pixaDestroy(), pixaGetBoxa(), pixaGetBoxaCount(), pixaGetCount(), pixaGetPix(), pixaSetBoxa(), pixDestroy(), and pixTranslate().
[in] | pixs | 1 bpp pix from which components are removed; in-place |
[in] | pixa | of connected components in pixs |
[in] | na | numa indicator: remove components corresponding to 1s |
Notes: (1) This complements pixAddWithIndicator(). Here, the selected components are set subtracted from pixs.
Definition at line 1228 of file pixafunc1.c.
References boxDestroy(), boxGetGeometry(), L_CLONE, numaGetCount(), numaGetIValue(), PIX_DST, PIX_NOT, PIX_SRC, pixaGetBox(), pixaGetCount(), pixaGetPix(), pixDestroy(), and pixRasterop().
PIX* pixSelectByArea | ( | PIX * | pixs, |
l_float32 | thresh, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | thresh | threshold number of FG pixels |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) The args specify constraints on the number of foreground pixels in the components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) This filters components based on the number of fg pixels in each component. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold number of fg pixels, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 848 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectByArea(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().
PIX* pixSelectByAreaFraction | ( | PIX * | pixs, |
l_float32 | thresh, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | thresh | threshold ratio of fg pixels to (w * h) |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) The args specify constraints on the amount of foreground coverage of the components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) This filters components based on the fraction of fg pixels of the component in its bounding box. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold fraction of foreground, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 714 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectByAreaFraction(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().
PIX* pixSelectByPerimSizeRatio | ( | PIX * | pixs, |
l_float32 | thresh, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | thresh | threshold ratio of fg boundary to fg pixels |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) The args specify constraints on the size of the components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) This filters components with smooth vs. dendritic shape, using the ratio of the fg boundary pixels to the circumference of the bounding box, and comparing it to a threshold value. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save the smooth boundary components, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 584 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectByPerimSizeRatio(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().
PIX* pixSelectByPerimToAreaRatio | ( | PIX * | pixs, |
l_float32 | thresh, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | thresh | threshold ratio of fg boundary to fg pixels |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) The args specify constraints on the size of the components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) This filters "thick" components, where a thick component is defined to have a ratio of boundary to interior pixels that is smaller than a given threshold value. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save the thicker components, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 453 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectByPerimToAreaRatio(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().
PIX* pixSelectBySize | ( | PIX * | pixs, |
l_int32 | width, | ||
l_int32 | height, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 | relation, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | width,height | threshold dimensions |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_WIDTH, L_SELECT_HEIGHT, L_SELECT_IF_EITHER, L_SELECT_IF_BOTH |
[in] | relation | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 otherwise |
Notes: (1) The args specify constraints on the size of the components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) If the selection type is L_SELECT_WIDTH, the input height is ignored, and v.v. (4) To keep small components, use relation = L_SELECT_IF_LT or L_SELECT_IF_LTE. To keep large components, use relation = L_SELECT_IF_GT or L_SELECT_IF_GTE.
Definition at line 219 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_HEIGHT, L_SELECT_IF_BOTH, L_SELECT_IF_EITHER, L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, L_SELECT_WIDTH, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectBySize(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().
Referenced by pixDecideIfTable().
PIX* pixSelectByWidthHeightRatio | ( | PIX * | pixs, |
l_float32 | thresh, | ||
l_int32 | connectivity, | ||
l_int32 | type, | ||
l_int32 * | pchanged | ||
) |
[in] | pixs | 1 bpp |
[in] | thresh | threshold ratio of width/height |
[in] | connectivity | 4 or 8 |
[in] | type | L_SELECT_IF_LT, L_SELECT_IF_GT, L_SELECT_IF_LTE, L_SELECT_IF_GTE |
[out] | pchanged | [optional] 1 if changed; 0 if clone returned |
Notes: (1) The args specify constraints on the width-to-height ratio for components that are kept. (2) If unchanged, returns a copy of pixs. Otherwise, returns a new pix with the filtered components. (3) This filters components based on the width-to-height ratios. (4) Use L_SELECT_IF_LT or L_SELECT_IF_LTE to save components with less than the threshold ratio, and L_SELECT_IF_GT or L_SELECT_IF_GTE to remove them.
Definition at line 981 of file pixafunc1.c.
References boxaDestroy(), L_SELECT_IF_GT, L_SELECT_IF_GTE, L_SELECT_IF_LT, L_SELECT_IF_LTE, pixaDestroy(), pixaDisplay(), pixaGetCount(), pixaSelectByWidthHeightRatio(), pixConnComp(), pixCopy(), pixCreateTemplate(), pixGetDimensions(), and pixZero().