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


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 trivial (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]});

kernctr()

`centre' a kernel (auxiliary routine to fftconvolve)

        $kernel = kernctr($image,$smallk);
        fftconvolve($image,$kernel);

kernctr centres a small kernel to emulate the behaviour of the direct convolution routines.


AUTHORS

Copyright (C) Karl Glazebrook 1997. All rights reserved. There is no warranty. You are allowed to redistribute this software / documentation under certain conditions. For details, see the file COPYING in the PDL distribution. If this file is separated from the PDL distribution, the copyright notice should be included in the file.

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