Operators for boost::multi_array and mimas::image

Mimas has support for doing element-wise operations and convolutions on boost::multi_array as well as mimas::image. More...

Namespaces

namespace  mimas

Classes

struct  mimas::_multi_help1< T1, T2, F >
struct  mimas::_multi_help2< T1, T2, T3, F >

Functions

template<typename T1, typename T2, typename T2Ptr>
image< T1 > mimas::norm (const const_image_ref< T2, T2Ptr > &a)
template<typename T1, typename T2>
image< T1 > mimas::arg (const image< T2 > &a)
template<typename T>
image< intmimas::fastSqr (const image< T > &a)
template<typename T, typename T1Ptr, typename T2Ptr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC (const const_image_ref< T, T1Ptr > &a, const const_image_ref< T, T2Ptr > &b)
template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC (const const_image_ref< T, TPtr > &a, const T &b)
template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC (const T &a, const const_image_ref< T, TPtr > &b)
template<typename T, typename TPtr>
image_ref< T > & mimas::__MIMASINTERNALIMAGEFUNC (image_ref< T > &a, const const_image_ref< T, TPtr > &b)
template<typename T>
image_ref< T > & mimas::__MIMASINTERNALIMAGEFUNC (image_ref< T > &a, const T &b)
template<typename T, typename TPtr>
image_ref< T > & mimas::__MIMASINTERNALIMAGEFUNC (const const_image_ref< T, TPtr > &a)
template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC (const const_image_ref< T, TPtr > &a)
template<class _Array1, class _Array2>
boost::multi_array< typename
_Array1::element, _Array1::dimensionality > 
mimas::correlate (const _Array1 &x, const _Array2 &y)
 Correlation of two multi-arrays.
template<typename T>
boost::multi_array< T, 2 > mimas::correlate_separable (const boost::const_multi_array_ref< T, 2 > &x, const std::vector< boost::multi_array< T, 2 > > &f)
 Perform a two-dimensional separable correlation.
template<typename T>
std::vector< boost::multi_array<
T, 2 > > 
mimas::separate (const boost::const_multi_array_ref< T, 2 > &array)
 Separate a 2D filter.
template<typename T>
boost::multi_array< T, 2 > mimas::correlate_separable (const boost::const_multi_array_ref< T, 2 > &x, const boost::const_multi_array_ref< T, 2 > &f)
 Fast 2D correlation with a separable 2D filter.
template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::empty_clone (const MultiArray< T2, NumDims > &x)
template<typename T, class F>
boost::detail::multi_array::sub_array<
T, 1 > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T, 1 > a, F f)
template<typename T, class F, template< typename, size_t > class MultiArray>
MultiArray< T, 1 > & mimas::multi_apply (MultiArray< T, 1 > &a, F f)
template<typename T, size_t NumDims, class F>
boost::detail::multi_array::sub_array<
T, NumDims > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T, NumDims > a, F f)
template<typename T, size_t NumDims, class F, template< typename, size_t > class MultiArray>
MultiArray< T, NumDims > & mimas::multi_apply (MultiArray< T, NumDims > &a, F f)
template<typename T1, typename T2, class F, template< typename, size_t > class MultiArray2>
boost::detail::multi_array::sub_array<
T1, 1 > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T1, 1 > a, const MultiArray2< T2, 1 > &b, F f)
template<typename T1, typename T2, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
MultiArray1< T1, 1 > & mimas::multi_apply (MultiArray1< T1, 1 > &a, const MultiArray2< T2, 1 > &b, F f)
template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray2>
boost::detail::multi_array::sub_array<
T1, NumDims > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T1, NumDims > a, const MultiArray2< T2, NumDims > &b, F f)
template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
MultiArray1< T1, NumDims > & mimas::multi_apply (MultiArray1< T1, NumDims > &a, const MultiArray2< T2, NumDims > &b, F f)
template<typename T1, typename T2, typename T3, class F, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
boost::detail::multi_array::sub_array<
T1, 1 > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T1, 1 > a, const MultiArray2< T2, 1 > &b, const MultiArray3< T3, 1 > &c, F f)
template<typename T1, typename T2, typename T3, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
MultiArray1< T1, 1 > & mimas::multi_apply (MultiArray1< T1, 1 > &a, const MultiArray2< T2, 1 > &b, const MultiArray3< T3, 1 > &c, F f)
template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
boost::detail::multi_array::sub_array<
T1, NumDims > 
mimas::multi_apply (boost::detail::multi_array::sub_array< T1, NumDims > a, const MultiArray2< T2, NumDims > &b, const MultiArray3< T3, NumDims > &c, F f)
template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
MultiArray1< T1, NumDims > & mimas::multi_apply (MultiArray1< T1, NumDims > &a, const MultiArray2< T2, NumDims > &b, const MultiArray3< T3, NumDims > &c, F f)
template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::multi_func (const MultiArray< T2, NumDims > &a, F f)
template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
boost::multi_array< T1, NumDims > mimas::multi_func (const MultiArray1< T2, NumDims > &a, const MultiArray2< T3, NumDims > &b, F f)
template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::multi_cast (const MultiArray< T2, NumDims > &a)
template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::norm (const MultiArray< T2, NumDims > &a)
template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::arg (const MultiArray< T2, NumDims > &a)
template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< int, NumDims > mimas::fastSqr (const MultiArray< T, NumDims > &a)
template<template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC (const MultiArray1< T, NumDims > &a, const MultiArray2< T, NumDims > &b)
template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC (const MultiArray< T, NumDims > &a, const T &b)
template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC (const T &a, const MultiArray< T, NumDims > &b)
template<template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
boost::detail::multi_array::sub_array<
T, NumDims > 
mimas::__MIMASINTERNALARRAYFUNC (boost::detail::multi_array::sub_array< T, NumDims > a, const MultiArray2< T, NumDims > &b)
template<template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
MultiArray1< T, NumDims > & mimas::__MIMASINTERNALARRAYFUNC (MultiArray1< T, NumDims > &a, const MultiArray2< T, NumDims > &b)
template<typename T, size_t NumDims>
boost::detail::multi_array::sub_array<
T, NumDims > 
mimas::__MIMASINTERNALARRAYFUNC (boost::detail::multi_array::sub_array< T, NumDims > a, const T &b)
template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
MultiArray< T, NumDims > & mimas::__MIMASINTERNALARRAYFUNC (MultiArray< T, NumDims > &a, const T &b)
template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
MultiArray< T, NumDims > & mimas::__MIMASINTERNALARRAYFUNC (MultiArray< T, NumDims > &a)
template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC (const MultiArray< T, NumDims > &a)
template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC (const MultiArray< T, NumDims > &a, const MultiArray< T, NumDims > &b)

Detailed Description

Mimas has support for doing element-wise operations and convolutions on boost::multi_array as well as mimas::image.

Implementations for element-wise operations on multi-dimensional arrays are provided. boost::multi_array is used to represent the multidimensional arrays.

The supported operations are:

The following example demonstrates, how versatile the array-operators provided by mimas are:
#include <boost/multi_array.hpp>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <functional>
#include "multi_array_op.h"

using namespace boost;
using namespace mimas;
using namespace std;

int main()
{
  const int
    dim1 = 4,
    dim2 = 3,
    dim3 = 2;
  multi_array< double, 2 > x( extents[dim2][dim1] );
  multi_array< double, 3 > y( extents[dim3][dim2][dim1] );
  for ( int i=0; i<dim1; i++ )
    for ( int j=0; j<dim2; j++ ) {
      for ( int k=0; k<dim3; k++ )
        y[k][j][i] = i + j * dim1 + k * dim2 * dim1 + 1;
      x[j][i] = - i - j * dim1 - 1;
    };

  cout << y.shape()[0] << " " << y.strides()[0] << endl;
  cout << y.shape()[1] << " " << y.strides()[1] << endl;
  cout << y.shape()[2] << " " << y.strides()[2] << endl;

  // Scalar
  // intern
  y /= 2.0;
  y[1] *= 2.0;
  // extern
  //   left
  x / 2.0;
  y[1] * 2.0;
  //   right
  2.0 * x;
  2.0 * y[1];

  // Multiply subarray with scalar.
  typedef multi_array< double, 3 >::index_range range;
  multi_array< double, 3 >::array_view< 2 >::type view =
    y[ indices[ range(0,dim1) ][range(1,dim2-1)][1] ];
  view *= -1.0;

  cout << view.shape()[0] << " " << view.strides()[0] << endl;
  cout << view.shape()[1] << " " << view.strides()[1] << endl;

  // External multiplication with subarray.
  5.0 * view;
  ((const multi_array< double, 2 > &)x)[0] * ((const multi_array< double, 2 > &)x)[0];

  // element-wise intern
  y[0] *= logarithm( absolute( y[1] ) + 1.0 );
  y[0] *= ((const multi_array< double, 3 > &)y)[1];
  y[0] *= ((const multi_array< double, 2 > &)x);
  x *= y[1];
  x *= ((const multi_array< double, 3 > &)y)[1];
  x *= ((const multi_array< double, 2 > &)x);

  // element-wise extern.
  y[0] * y[1];
  y[0] * ((const multi_array< double, 3 > &)y)[1];
  y[0] * ((const multi_array< double, 2 > &)x);
  y[1] * x;
  x * y[1];
  x * ((const multi_array< double, 3 > &)y)[1];
  x * ((const multi_array< double, 2 > &)x);
  x * x;

  for ( int k=0; k<dim3; k++ ) {
    for ( int j=0; j<dim2; j++ ) {
      for ( int i=0; i<dim1; i++ )
        cout << setw( 12 ) << y[k][j][i];
      cout << endl;
    }
    cout << endl;
  };
  for ( int j=0; j<dim2; j++ ) {
    for ( int i=0; i<dim1; i++ )
      cout << setw( 12 ) << x[j][i];
    cout << endl;
  }
}

Author:
Jan Wedekind <jan at wedesoft.de>

Haifeng Gong <hfgong at users.sourceforge.net>

Date:
Thu Jul 06 14:13:05 UTC 2006
Todo:
Does not compile under Solaris at the moment.
Todo:
Add documentation of all available array operators.
Todo:
Define boost-mpl templates for mimas::rgba to allow the use of expression templates (how?)

Operators for mimas::image.

Element-wise operations for 2-dimensional images are implemented using the operators for boost::multiarray.

Functionality, which is specifically related to two-dimensional images, is implemented for mimas::image.

Algorithms, which can also be applied to n-dimensional arrays, are implemented for boost::multi_array. Corresponding wrappers for forwarding the calls are implemented for mimas::image.

Author:
Jan Wedekind <jan at wedesoft.de>
Date:
Mon Jun 13 17:19:18 UTC 2005
Todo:
Add documentation of all available image-operators.

Function Documentation

template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC ( const MultiArray< T, NumDims > &  a,
const MultiArray< T, NumDims > &  b 
)

Definition at line 17 of file multi_array_op_help3.h.

template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC ( const MultiArray< T, NumDims > &  a  ) 

Definition at line 31 of file multi_array_op_help2.h.

template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC ( const T &  a,
const MultiArray< T, NumDims > &  b 
)

Definition at line 46 of file multi_array_op_help.h.

template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC ( const MultiArray< T, NumDims > &  a,
const T &  b 
)

Definition at line 34 of file multi_array_op_help.h.

template<template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
boost::multi_array< T, NumDims > mimas::__MIMASEXTERNALARRAYFUNC ( const MultiArray1< T, NumDims > &  a,
const MultiArray2< T, NumDims > &  b 
)

Definition at line 22 of file multi_array_op_help.h.

template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC ( const const_image_ref< T, TPtr > &  a  ) 

Definition at line 29 of file image_op_help2.h.

template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC ( const T &  a,
const const_image_ref< T, TPtr > &  b 
)

Definition at line 39 of file image_op_help.h.

template<typename T, typename TPtr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC ( const const_image_ref< T, TPtr > &  a,
const T &  b 
)

Definition at line 29 of file image_op_help.h.

template<typename T, typename T1Ptr, typename T2Ptr>
image< T > mimas::__MIMASEXTERNALIMAGEFUNC ( const const_image_ref< T, T1Ptr > &  a,
const const_image_ref< T, T2Ptr > &  b 
)

Definition at line 19 of file image_op_help.h.

template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
MultiArray< T, NumDims >& mimas::__MIMASINTERNALARRAYFUNC ( MultiArray< T, NumDims > &  a  ) 

Definition at line 20 of file multi_array_op_help2.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<template< typename, size_t > class MultiArray, typename T, size_t NumDims>
MultiArray< T, NumDims >& mimas::__MIMASINTERNALARRAYFUNC ( MultiArray< T, NumDims > &  a,
const T &  b 
)

Definition at line 101 of file multi_array_op_help.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T, size_t NumDims>
boost::detail::multi_array::sub_array< T, NumDims > mimas::__MIMASINTERNALARRAYFUNC ( boost::detail::multi_array::sub_array< T, NumDims >  a,
const T &  b 
)

Definition at line 86 of file multi_array_op_help.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
MultiArray1< T, NumDims >& mimas::__MIMASINTERNALARRAYFUNC ( MultiArray1< T, NumDims > &  a,
const MultiArray2< T, NumDims > &  b 
)

Definition at line 73 of file multi_array_op_help.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<template< typename, size_t > class MultiArray2, typename T, size_t NumDims>
boost::detail::multi_array::sub_array< T, NumDims > mimas::__MIMASINTERNALARRAYFUNC ( boost::detail::multi_array::sub_array< T, NumDims >  a,
const MultiArray2< T, NumDims > &  b 
)

Definition at line 58 of file multi_array_op_help.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T, typename TPtr>
image_ref< T >& mimas::__MIMASINTERNALIMAGEFUNC ( const const_image_ref< T, TPtr > &  a  ) 

Definition at line 19 of file image_op_help2.h.

References mimas::image_apply().

Here is the call graph for this function:

template<typename T>
image_ref< T >& mimas::__MIMASINTERNALIMAGEFUNC ( image_ref< T > &  a,
const T &  b 
)

Definition at line 61 of file image_op_help.h.

References mimas::image_apply().

Here is the call graph for this function:

template<typename T, typename TPtr>
image_ref< T >& mimas::__MIMASINTERNALIMAGEFUNC ( image_ref< T > &  a,
const const_image_ref< T, TPtr > &  b 
)

Definition at line 49 of file image_op_help.h.

References mimas::image_apply().

Here is the call graph for this function:

template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::arg ( const MultiArray< T2, NumDims > &  a  ) 

Definition at line 368 of file multi_array_op.h.

Referenced by mimas::_arg< T1, T2 >::operator()().

template<typename T1, typename T2>
image< T1 > mimas::arg ( const image< T2 > &  a  ) 

Definition at line 177 of file image_op.h.

template<class _Array1, class _Array2>
boost::multi_array< typename _Array1::element, _Array1::dimensionality > mimas::correlate ( const _Array1 &  x,
const _Array2 &  y 
)

Correlation of two multi-arrays.

This method provides correlation of two n-dimensional arrays. The resulting array will have the same size as the input-array x. Elements outside of the array-boundaries are assumed to be zero.

The algorithm is intented to be used for convoluting an array with a small filter. If the filter is very big, it may be more efficient, to perform the correlation in fourier-space.

For a small array y this algorithm is very fast, because before doing the correlation the loops are reordered for maximum performance.

Parameters:
x First array (the big one).
y Second array (the small one).
Returns:
Result of correlation.
See also:
Fourier transformations using boost::multi_array
Author:
Jan Wedekind (jan at wedesoft.de)
Date:
Fri Jul 15 21:37:32 UTC 2005

template<typename T>
boost::multi_array< T, 2 > mimas::correlate_separable ( const boost::const_multi_array_ref< T, 2 > &  x,
const boost::const_multi_array_ref< T, 2 > &  f 
)

Fast 2D correlation with a separable 2D filter.

See also:
separate

Definition at line 85 of file multi_array_conv.h.

References mimas::separate().

Here is the call graph for this function:

template<typename T>
boost::multi_array< T, 2 > mimas::correlate_separable ( const boost::const_multi_array_ref< T, 2 > &  x,
const std::vector< boost::multi_array< T, 2 > > &  f 
)

Perform a two-dimensional separable correlation.

If you have compiled Mimas with LAPACK-wrappers, you can also let Mimas separate the filter for you (if it is separable).

Parameters:
x 2D array to be filtered.
f Two 2D arrays (one with a single column and one with a single row)
See also:
correlate_separable

Definition at line 59 of file multi_array_conv.h.

References mimas::correlate().

Here is the call graph for this function:

template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::empty_clone ( const MultiArray< T2, NumDims > &  x  ) 

Definition at line 42 of file multi_array_op.h.

template<typename T, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< int, NumDims > mimas::fastSqr ( const MultiArray< T, NumDims > &  a  ) 

Definition at line 378 of file multi_array_op.h.

template<typename T>
image< int > mimas::fastSqr ( const image< T > &  a  ) 

Definition at line 186 of file image_op.h.

template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
MultiArray1< T1, NumDims >& mimas::multi_apply ( MultiArray1< T1, NumDims > &  a,
const MultiArray2< T2, NumDims > &  b,
const MultiArray3< T3, NumDims > &  c,
f 
)

Definition at line 228 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
boost::detail::multi_array::sub_array< T1, NumDims > mimas::multi_apply ( boost::detail::multi_array::sub_array< T1, NumDims >  a,
const MultiArray2< T2, NumDims > &  b,
const MultiArray3< T3, NumDims > &  c,
f 
)

Definition at line 209 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, typename T3, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
MultiArray1< T1, 1 >& mimas::multi_apply ( MultiArray1< T1, 1 > &  a,
const MultiArray2< T2, 1 > &  b,
const MultiArray3< T3, 1 > &  c,
f 
)

Definition at line 191 of file multi_array_op.h.

template<typename T1, typename T2, typename T3, class F, template< typename, size_t > class MultiArray2, template< typename, size_t > class MultiArray3>
boost::detail::multi_array::sub_array< T1, 1 > mimas::multi_apply ( boost::detail::multi_array::sub_array< T1, 1 >  a,
const MultiArray2< T2, 1 > &  b,
const MultiArray3< T3, 1 > &  c,
f 
)

Definition at line 171 of file multi_array_op.h.

template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
MultiArray1< T1, NumDims >& mimas::multi_apply ( MultiArray1< T1, NumDims > &  a,
const MultiArray2< T2, NumDims > &  b,
f 
)

Definition at line 155 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray2>
boost::detail::multi_array::sub_array< T1, NumDims > mimas::multi_apply ( boost::detail::multi_array::sub_array< T1, NumDims >  a,
const MultiArray2< T2, NumDims > &  b,
f 
)

Definition at line 138 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
MultiArray1< T1, 1 >& mimas::multi_apply ( MultiArray1< T1, 1 > &  a,
const MultiArray2< T2, 1 > &  b,
f 
)

Definition at line 123 of file multi_array_op.h.

template<typename T1, typename T2, class F, template< typename, size_t > class MultiArray2>
boost::detail::multi_array::sub_array< T1, 1 > mimas::multi_apply ( boost::detail::multi_array::sub_array< T1, 1 >  a,
const MultiArray2< T2, 1 > &  b,
f 
)

Definition at line 106 of file multi_array_op.h.

template<typename T, size_t NumDims, class F, template< typename, size_t > class MultiArray>
MultiArray< T, NumDims >& mimas::multi_apply ( MultiArray< T, NumDims > &  a,
f 
)

Definition at line 93 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T, size_t NumDims, class F>
boost::detail::multi_array::sub_array< T, NumDims > mimas::multi_apply ( boost::detail::multi_array::sub_array< T, NumDims >  a,
f 
)

Definition at line 80 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T, class F, template< typename, size_t > class MultiArray>
MultiArray< T, 1 >& mimas::multi_apply ( MultiArray< T, 1 > &  a,
f 
)

Definition at line 68 of file multi_array_op.h.

template<typename T, class F>
boost::detail::multi_array::sub_array< T, 1 > mimas::multi_apply ( boost::detail::multi_array::sub_array< T, 1 >  a,
f 
)

Definition at line 55 of file multi_array_op.h.

Referenced by mimas::__MIMASINTERNALARRAYFUNC(), mimas::image_apply(), mimas::multi_apply(), and mimas::multi_func().

template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::multi_cast ( const MultiArray< T2, NumDims > &  a  ) 

Definition at line 289 of file multi_array_op.h.

template<typename T1, typename T2, typename T3, size_t NumDims, class F, template< typename, size_t > class MultiArray1, template< typename, size_t > class MultiArray2>
boost::multi_array< T1, NumDims > mimas::multi_func ( const MultiArray1< T2, NumDims > &  a,
const MultiArray2< T3, NumDims > &  b,
f 
)

Definition at line 277 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, size_t NumDims, class F, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::multi_func ( const MultiArray< T2, NumDims > &  a,
f 
)

Definition at line 265 of file multi_array_op.h.

References mimas::multi_apply().

Here is the call graph for this function:

template<typename T1, typename T2, size_t NumDims, template< typename, size_t > class MultiArray>
boost::multi_array< T1, NumDims > mimas::norm ( const MultiArray< T2, NumDims > &  a  ) 

Definition at line 358 of file multi_array_op.h.

Referenced by mimas::_norm< T1, T2 >::operator()().

template<typename T1, typename T2, typename T2Ptr>
image< T1 > mimas::norm ( const const_image_ref< T2, T2Ptr > &  a  ) 

Definition at line 168 of file image_op.h.

Referenced by mimas::filter< T >::filterCols(), and mimas::filter< T >::filterRows().

template<typename T>
std::vector< boost::multi_array< T, 2 > > mimas::separate ( const boost::const_multi_array_ref< T, 2 > &  array  ) 

Separate a 2D filter.

Separate the 2D filter using singular value decomposition. If the filter is not separable, you will only get an approximate solution.

The 2D filter is copied to a matrix. In an ideal case only the first singular value $\sigma_1$ is unequal to zero and the corresponding vectors $\vec{u_1}$ and $\vec{v_1}$ are holding the elements of the separable filter:

\[A=\vec{u_1}\sigma_1\vec{v_1}^\top\]

Referenced by mimas::correlate_separable().


[GNU/Linux] [Qt] [Mesa] [STL] [Lapack] [Boost] [Magick++] [Xalan-C and Xerces-C] [doxygen] [graphviz] [FFTW] [popt] [xine] [Gnuplot] [gnu-arch] [gcc] [gstreamer] [autoconf/automake/make] [freshmeat.net] [opensource.org] [sourceforge.net] [MMVL]
mimas 2.1 - Copyright Mon Oct 30 11:31:22 2006, Bala Amavasai, Stuart Meikle, Arul Selvan, Fabio Caparrelli, Jan Wedekind, Manuel Boissenin, ...