[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]
![]() |
SplineImageView Class Template Reference | ![]() |
---|
Create a continuous view onto a discrete image using splines. More...
#include "vigra/splineimageview.hxx"
Public Types | |
typedef VALUETYPE | value_type |
typedef Size2D | size_type |
typedef TinyVector< double, 2 > | difference_type |
typedef BasicImage< InternalValue > | InternalImage |
enum | StaticOrder |
Public Methods | |
template<class SrcIterator, class SrcAccessor> | SplineImageView (SrcIterator is, SrcIterator iend, SrcAccessor sa, bool skipPrefiltering=false) |
template<class SrcIterator, class SrcAccessor> | SplineImageView (triple< SrcIterator, SrcIterator, SrcAccessor > s, bool skipPrefiltering=false) |
value_type | operator() (double x, double y) const |
value_type | operator() (double x, double y, unsigned int dx, unsigned int dy) const |
value_type | dx (double x, double y) const |
value_type | dy (double x, double y) const |
value_type | dxx (double x, double y) const |
value_type | dxy (double x, double y) const |
value_type | dyy (double x, double y) const |
value_type | dx3 (double x, double y) const |
value_type | dy3 (double x, double y) const |
value_type | dxxy (double x, double y) const |
value_type | dxyy (double x, double y) const |
value_type | operator() (difference_type const &d) const |
value_type | operator() (difference_type const &d, unsigned int dx, unsigned int dy) const |
value_type | dx (difference_type const &d) const |
value_type | dy (difference_type const &d) const |
value_type | dxx (difference_type const &d) const |
value_type | dxy (difference_type const &d) const |
value_type | dyy (difference_type const &d) const |
value_type | dx3 (difference_type const &d) const |
value_type | dy3 (difference_type const &d) const |
value_type | dxxy (difference_type const &d) const |
value_type | dxyy (difference_type const &d) const |
value_type | g2 (double x, double y) const |
value_type | g2x (double x, double y) const |
value_type | g2y (double x, double y) const |
value_type | g2xx (double x, double y) const |
value_type | g2xy (double x, double y) const |
value_type | g2yy (double x, double y) const |
value_type | g2 (difference_type const &d) const |
value_type | g2x (difference_type const &d) const |
value_type | g2y (difference_type const &d) const |
value_type | g2xx (difference_type const &d) const |
value_type | g2xy (difference_type const &d) const |
value_type | g2yy (difference_type const &d) const |
unsigned int | width () const |
unsigned int | height () const |
size_type | size () const |
InternalImage const & | image () const |
template<class Array> void | coefficientArray (double x, double y, Array &res) const |
bool | isInsideX (double x) const |
bool | isInsideY (double y) const |
bool | isInside (double x, double y) const |
bool | isValid (double x, double y) const |
bool | sameFacet (double x0, double y0, double x1, double y1) const |
Detailed Description |
This class is very useful if image values or derivatives at arbitrary real-valued coordinates are needed. Access at such coordinates is implemented by interpolating the given discrete image values with a spline of the specified ORDER
. Continuous derivatives are available up to degree ORDER-1
. If the requested coordinates are near the image border, reflective boundary conditions are applied. In principle, this class can also be used for image resizing, but here the functions from the resize...
family are more efficient.
The SplineImageView
template is explicitly specialized to make it as efficient as possible. In particular, unnecessary copying of the image is avoided when the iterators passed in the constructor originate from a vigra::BasicImage. In addition, these specializations provide function unchecked(...)
that do not perform bounds checking. If the original image is not a variant of vigra::BasicImage, one can customize the internal representation by using vigra::SplineImageview0 or vigra::SplineImageview1.
Usage:
#include "vigra/splineimageview.hxx"
Namespace: vigra
BImage img(w,h); ... // fill img // construct spline view for quadratic interpolation SplineImageView<2, double> spi2(img); double x = ..., y = ...; double v2 = spi2(x, y); // construct spline view for linear interpolation SplineImageView<1, UInt32> spi1(img); UInt32 v1 = spi1(x, y); FixedPoint<16, 15> fx(...), fy(...); UInt32 vf = spi1.unchecked(fx, fy);
|
The view's difference type. |
|
The type of the internal image holding the spline coefficients. |
|
The view's size type. |
|
The view's value type (return type of access and derivative functions). |
|
The order of the spline used. |
|
Construct SplineImageView for the given image.
If |
|
Construct SplineImageView for the given image.
If |
|
Get the array of polynomial coefficients for the facet containing the point
SplineImageView<ORDER, float> view(...); double x = ..., y = ...; double dx, dy; // calculate the local facet coordinates of x and y if(ORDER % 2) { // odd order => facet coordinates between 0 and 1 dx = x - floor(x); dy = y - floor(y); } else { // even order => facet coordinates between -0.5 and 0.5 dx = x - floor(x + 0.5); dy = y - floor(y + 0.5); } BasicImage<float> coefficients; view.coefficientArray(x, y, coefficients); float f_x_y = 0.0; for(int ny = 0; ny < ORDER + 1; ++ny) for(int nx = 0; nx < ORDER + 1; ++nx) f_x_y += pow(dx, nx) * pow(dy, ny) * coefficients(nx, ny); assert(abs(f_x_y - view(x, y)) < 1e-6); |
|
Access 1st derivative in x-direction at real-valued coordinate |
|
Access 1st derivative in x-direction at real-valued coordinate |
|
Access 3rd derivative in x-direction at real-valued coordinate |
|
Access 3rd derivative in x-direction at real-valued coordinate |
|
Access 2nd derivative in x-direction at real-valued coordinate |
|
Access 2nd derivative in x-direction at real-valued coordinate |
|
Access mixed 3rd derivative dxxy at real-valued coordinate |
|
Access mixed 3rd derivative dxxy at real-valued coordinate |
|
Access mixed 2nd derivative at real-valued coordinate |
|
Access mixed 2nd derivative at real-valued coordinate |
|
Access mixed 3rd derivative dxyy at real-valued coordinate |
|
Access mixed 3rd derivative dxyy at real-valued coordinate |
|
Access 1st derivative in y-direction at real-valued coordinate |
|
Access 1st derivative in y-direction at real-valued coordinate |
|
Access 3rd derivative in y-direction at real-valued coordinate |
|
Access 3rd derivative in y-direction at real-valued coordinate |
|
Access 2nd derivative in y-direction at real-valued coordinate |
|
Access 2nd derivative in y-direction at real-valued coordinate |
|
Access gradient squared magnitude at real-valued coordinate |
|
Access gradient squared magnitude at real-valued coordinate |
|
Access 1st derivative in x-direction of gradient squared magnitude at real-valued coordinate |
|
Access 1st derivative in x-direction of gradient squared magnitude at real-valued coordinate |
|
Access 2nd derivative in x-direction of gradient squared magnitude at real-valued coordinate |
|
Access 2nd derivative in x-direction of gradient squared magnitude at real-valued coordinate |
|
Access mixed 2nd derivative of gradient squared magnitude at real-valued coordinate |
|
Access mixed 2nd derivative of gradient squared magnitude at real-valued coordinate |
|
Access 1st derivative in y-direction of gradient squared magnitude at real-valued coordinate |
|
Access 1st derivative in y-direction of gradient squared magnitude at real-valued coordinate |
|
Access 2nd derivative in y-direction of gradient squared magnitude at real-valued coordinate |
|
Access 2nd derivative in y-direction of gradient squared magnitude at real-valued coordinate |
|
The height of the image. |
|
The internal image holding the spline coefficients. |
|
Check if x and y are in the original image range. Equivalent to |
|
Check if x is in the original image range. Equivalent to |
|
Check if y is in the original image range. Equivalent to |
|
Check if x and y are in the valid range. Points outside the original image range are computed by reflcective boundary conditions, but only within the first reflection. Equivalent to |
|
Access derivative of order |
|
Access interpolated function at real-valued coordinate |
|
Access derivative of order |
|
Access interpolated function at real-valued coordinate |
|
Check whether the points |
|
The size of the image. |
|
The width of the image. |
© Ullrich Köthe (koethe@informatik.uni-hamburg.de) |
html generated using doxygen and Python
|