.help xtsums Feb86 xtools .ih NAME .nf xt_lsum -- Sum image lines xt_csum -- Sum image columns xt_lsumb -- Sum image lines with buffering xt_csumb -- Sum image columns with buffering .fi .ih SYNOPSIS .nf pointer im # IMIO pointer pointer co # COGETR pointer int col1, col2 # Column limits of the sum int line1, line2 # Line limits pointer data # Data pointer returned call xt_lsum (im, col1, col2, line1, line2, data) call xt_csum (co, col1, col2, line1, line2, data) call xt_lsumb (im, col1, col2, line1, line2, data) call xt_csumb (co, col1, col2, line1, line2, data) .fi .ih DESCRIPTION The specified lines or columns in a 2D images are summed and a pointer to the real sum vector is returned. For \fBxt_lsum\fR and \fBxt_lsumb\fR the lines between \fIline1\fR and \fIline2\fR are summed and a pointer to the summed vector between \fIcol1\fR and \fIcol2\fR is returned. Similarly, for \fBxt_csum\fR and \fBxt_csumb\fR the columns between \fIcol1\fR and \fIcol2\fR are summed and a pointer to the summed vector between \fIline1\fR and \fIline2\fR is returned. The data pointer is to a real vector. The column sums use the efficient column access procedures described in \fBcogetr\fR. The procedures without the 'b' suffix read the set of lines or columns in the sum from the image every time. The 'b' suffix procedures buffer the lines or columns such that if only a few lines or columns are different from the preceding sum then only those lines or columns are read. Thus the "buffered" sums are used for moving sums while the unbuffered procedures are used when there is no overlap between the sums. .ih RETURN VALUE The returned pointer \fIdata\fR is to a vector of type real. .ih EXAMPLES Suppose a sum of "nsum" lines or columns is required through the image in steps of "nstep". The following code fragment illustrates the usage. .nf im = immap (image, READ_ONLY, 0) switch (axis) { case 1: col1 = 1 col2 = IM_LEN(im, 1) for i = 1, IM_LEN(im, 2), nstep { if (nstep < nsum) call xt_lsumb (co, col1, col2, i, i+nsum-1, data) else call xt_lsum (co, i, i+nsum-1, line1, line2, data) # Do operations on vector Memr[data] } case 2: co = comap (im, maxbuf) line1 = 1 line2 = IM_LEN(im, 2) for i = 1, IM_LEN(im, 1), nstep { if (nstep < nsum) call xt_csumb (co, i, i+nsum-1, line1, line2, data) else call xt_csum (co, i, i+nsum-1, line1, line2, data) # Do operations on vector Memr[data] } call counmap (co) } call imunmap (im) .fi .ih SEE ALSO cogetr .endhelp