# RedHat 9 (Linux i386) - man page for pdl::imagend (redhat section 3)

```ImageND(3)						User Contributed Perl Documentation						ImageND(3)

NAME
PDL::ImageND - useful image processing routines which work in N-dimensions

DESCRIPTION
In some cases (though not as many as one would like) it is possible to write general routines that operate on N-dimensional objects.

An example in this module is a N-Dim convolution algorithm I made up one day - it works but the boundary condtions are a bit funny.

SYNOPSIS
use PDL::ImageND;

FUNCTIONS
convolve

Signature: (a(m); b(n); int adims(p); int bdims(q); [o]c(m))

N-dimensional convolution algorithm.

\$new = convolve \$a, \$kernel

Convolve an array with a kernel, both of which are N-dimensional.

Note because of the algorithm used (writing N-dim routines is not easy on the brain!) the boundary conditions are a bit strange. They wrap,
but up to the NEXT row/column/cube-slice/etc. If this is a problem consider using zero-padding or something.

ninterpol()

N-dimensional interpolation routine

Signature: ninterpol(point(),data(n),[o]value())

\$value = ninterpol(\$point, \$data);

"ninterpol" uses "interpol" to find a linearly interpolated value in N dimensions, assuming the data is spread on a uniform grid.  To use
an arbitrary grid distribution, need to find the grid-space point from the indexing scheme, then call "ninterpol" -- this is far from triv-
ial (and ill-defined in general).

rebin

Signature: (a(m); [o]b(n); int ns => n)

N-dimensional rebinning algorithm

\$new = rebin \$a, \$dim1, \$dim2,..;.  \$new = rebin \$a, \$template; \$new = rebin \$a, \$template, {Norm => 1};

Rebin an N-dimensional array to newly specified dimensions.  Specifying `Norm' keeps the sum constant, otherwise the intensities are kept
constant.  If more template dimensions are given than for the input pdl, these dimensions are created; if less, the final dimensions are
maintained as they were.

So if \$a is a 10 x 10 pdl, then "rebin(\$a,15)" is a 15 x 10 pdl, while "rebin(\$a,15,16,17)" is a 15 x 16 x 17 pdl (where the values along
the final dimension are all identical).

circ_mean_p

Calculates the circular mean of an n-dim image and returns the projection. Optionally takes the center to be used.

\$cmean=circ_mean_p(\$im);
\$cmean=circ_mean_p(\$im,{Center => [10,10]});

circ_mean

Smooths an image by applying circular mean.  Optionally takes the center to be used.

circ_mean(\$im);
circ_mean(\$im,{Center => [10,10]});

AUTHORS