#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "allheaders.h"
Input: pixs (1 bpp) Return: pta, or null on error
Notes: (1) Finds the 4 corner-most pixels, as defined by a search inward from each corner, using a 45 degree line.
Input: pta w, h (of pix) Return: pix (1 bpp), or null on error
Notes: (1) Points are rounded to nearest ints. (2) Any points outside (w,h) are silently discarded. (3) Output 1 bpp pix has values 1 for each point in the pta.
Input: pixs (any depth) pta (set of points on which to plot) outformat (GPLOT_PNG, GPLOT_PS, GPLOT_EPS, GPLOT_X11, GPLOT_LATEX) title (<optional> for plot; can be null) Return: 0 if OK, 1 on error
Notes: (1) We remove any existing colormap and clip the pta to the input pixs. (2) This is a debugging function, and does not remove temporary plotting files that it generates. (3) If the image is RGB, three separate plots are generated.
Input: ptaa pta (to be added) copyflag (L_INSERT, L_COPY, L_CLONE) Return: 0 if OK, 1 on error
Input: n (initial number of ptrs) Return: ptaa, or null on error
Input: pta x, y Return: 0 if OK, 1 on error
void ptaaDestroy | ( | PTAA ** | pptaa | ) |
Input: &ptaa <to be="" nulled>=""> Return: void
Input: ptaa Return: 0 if OK, 1 on error
PTAA* ptaaGetBoundaryPixels | ( | PIX * | pixs, | |
l_int32 | type, | |||
l_int32 | connectivity, | |||
BOXA ** | pboxa, | |||
PIXA ** | ppixa | |||
) |
Input: pixs (1 bpp) type (L_BOUNDARY_FG, L_BOUNDARY_BG) connectivity (4 or 8) &boxa (<optional return>=""> bounding boxes of the c.c.) &pixa (<optional return>=""> pixa of the c.c.) Return: ptaa, or null on error
Notes: (1) This generates a ptaa of either fg or bg boundary pixels, where each pta has the boundary pixels for a connected component. (2) We can't simply find all the boundary pixels and then select those within the bounding box of each component, because bounding boxes can overlap. It is necessary to extract and dilate or erode each component separately. Note also that special handling is required for bg pixels when the component touches the pix boundary.
Input: ptaa Return: count, or 0 if no ptaa
Input: ptaa index (to the i-th pta) accessflag (L_COPY or L_CLONE) Return: pta, or null on error
PTAA* ptaaRead | ( | const char * | filename | ) |
Input: filename Return: ptaa, or null on error
PTAA* ptaaReadStream | ( | FILE * | fp | ) |
Input: stream Return: ptaa, or null on error
Input: filename ptaa type (0 for float values; 1 for integer values) Return: 0 if OK, 1 on error
Input: stream ptaa type (0 for float values; 1 for integer values) Return: 0 if OK; 1 on error
Input: pta Return: ptr to same pta, or null on error
Input: pta x, y (point) Return: 1 if contained, 0 otherwise or on error
Input: n (initial array sizes) Return: pta, or null on error.
Input: ptas xs, ys (start point; must be in ptas) Return: ptad (cyclic permutation, starting and ending at (xs, ys), or null on error
Note: we check to insure that ptas is a closed path where the first and last points are identical, and the resulting pta also starts and ends on the same point (which in this case is (xs, ys).
void ptaDestroy | ( | PTA ** | ppta | ) |
Input: &pta (<to be="" nulled>="">) Return: void
Note:
Input: pta Return: 0 if OK; 1 on error
Input: pta &nax, &nay (<return> numas of x and y arrays) Return: 0 if OK; 1 on error or if pta is empty
Notes: (1) This copies the internal arrays into new Numas, and returns them. (2) Manipulates internal arrays in pta and numa directly.
Input: pixs (1 bpp) type (L_BOUNDARY_FG, L_BOUNDARY_BG) Return: pta, or null on error
Notes: (1) This generates a pta of either fg or bg boundary pixels.
Input: pta Return: count, or 0 if no pta
Input: pta Return: box, or null on error
Notes: (1) Returns a box of minimum size containing pts in pta.
Input: ptas (input pts) box Return: ptad (of pts in ptas that are inside the box), or null on error
Input: pta index (into arrays) &x, &y (<return> integer values) Return: 0 if OK; 1 on error
Input: pta &a (<optional return>=""> slope a of least square fit: y = ax + b) &b (<optional return>=""> intercept b of least square fit) &nafit (<optional return>=""> numa of least square fit) Return: 0 if OK, 1 on error
Notes: (1) At least one of: &a and &b must not be null. (2) If both &a and &b are defined, this returns a and b that minimize:
sum (yi - axi -b)^2 i
The method is simple: differentiate this expression w/rt a and b, and solve the resulting two equations for a and b in terms of various sums over the input data (xi, yi). (3) We also allow two special cases, where either a = 0 or b = 0: (a) If &a is given and &b = null, find the linear LSF that goes through the origin (b = 0). (b) If &b is given and &a = null, find the linear LSF with zero slope (a = 0). (4) If is defined, this returns an array of fitted values, corresponding to the two implicit Numa arrays (nax and nay) in pta. Thus, just as you can plot the data in pta as nay vs. nax, you can plot the linear least square fit as nafit vs. nax.
Input: pixs (1 bpp) box (<optional> can be null) Return: pta, or null on error
Notes: (1) Generates a pta of fg pixels in the pix, within the box. If box == NULL, it uses the entire pix.
Input: pta index (into arrays) &x, &y (<return> float values) Return: 0 if OK; 1 on error
Input: ptad (dest pta; add to this one) ptas (source pta; add from this one) istart (starting index in ptas) iend (ending index in ptas; use 0 to cat all) Return: 0 if OK, 1 on error
Notes: (1) istart < 0 is taken to mean 'read from the start' (istart = 0) (2) iend <= 0 means 'read to the end'
PTA* ptaReadStream | ( | FILE * | fp | ) |
Input: stream Return: pta, or null on error
Input: ptas (assumed to be integer values) factor (should be larger than the largest point value; use 0 for default) Return: ptad (with duplicates removed), or null on error
Input: ptas type (0 for float values; 1 for integer values) Return: ptad (reversed pta), or null on error
Input: ptas sorttype (L_SORT_BY_X, L_SORT_BY_Y) sortorder (L_SORT_INCREASING, L_SORT_DECREASING) &naindex (<optional return>=""> index of sorted order into original array) Return: ptad (sorted version of ptas), or null on error
Input: ptas subfactor (subsample factor, >= 1) Return: ptad (evenly sampled pt values from ptas, or null on error
Input: pta1, pta2 Return: bval which is 1 if they have any elements in common; 0 otherwise or on error.
PTA* ptaTransform | ( | PTA * | ptas, | |
l_int32 | shiftx, | |||
l_int32 | shifty, | |||
l_float32 | scalex, | |||
l_float32 | scaley | |||
) |
Input: pta shiftx, shifty scalex, scaley Return: pta, or null on error
Notes: (1) Shift first, then scale.
Input: filename pta type (0 for float values; 1 for integer values) Return: 0 if OK, 1 on error
Input: stream pta type (0 for float values; 1 for integer values) Return: 0 if OK; 1 on error
const l_int32 DEFAULT_SPREADING_FACTOR = 7500 [static] |
const l_int32 INITIAL_PTR_ARRAYSIZE = 20 [static] |