math.h file
Declares image math functions, except basic arithmetic and comparison. See diplib/library/operators.h, Math and statistics.
Contents
- Reference
Functions
-
void dip::
FlushToZero(dip::Image const& in, dip::Image& out) - Flushes denormal sample values to zero. Denormal floating-point values can slow down computation. Only defined for floating-point types, the output is the same type.
-
void dip::
Round(dip::Image const& in, dip::Image& out) - Computes the nearest integer to each sample (rounds). Only defined for floating-point types, the output is the same type.
-
void dip::
Ceil(dip::Image const& in, dip::Image& out) - Computes the smallest integer larger or equal to each sample (rounds up). Only defined for floating-point types, the output is the same type.
-
void dip::
Floor(dip::Image const& in, dip::Image& out) - Computes the largest integer smaller or equal to each sample (rounds down). Only defined for floating-point types, the output is the same type.
-
void dip::
Truncate(dip::Image const& in, dip::Image& out) - Computes the truncated value of each sample (rounds towards zero). Only defined for floating-point types, the output is the same type.
-
void dip::
Fraction(dip::Image const& in, dip::Image& out) - Computes the fractional value of each sample (
out = in - dip::Truncate(in)
). Only defined for floating-point types, the output is the same type. -
void dip::
Reciprocal(dip::Image const& in, dip::Image& out) - Computes the reciprocal of each sample:
out = in == 0 ? 0 : 1/in
. -
void dip::
Square(dip::Image const& in, dip::Image& out) - Computes the square of each sample.
-
void dip::
Sqrt(dip::Image const& in, dip::Image& out) - Computes the square root of each sample.
-
void dip::
Exp(dip::Image const& in, dip::Image& out) - Computes the base e exponent (natural exponential) of each sample.
-
void dip::
Exp2(dip::Image const& in, dip::Image& out) - Computes the base 2 exponent of each sample.
-
void dip::
Exp10(dip::Image const& in, dip::Image& out) - Computes the base 10 exponent of each sample.
-
void dip::
Ln(dip::Image const& in, dip::Image& out) - Computes the natural logarithm (base e logarithm) of each sample.
-
void dip::
Log2(dip::Image const& in, dip::Image& out) - Computes the base 2 logarithm of each sample.
-
void dip::
Log10(dip::Image const& in, dip::Image& out) - Computes the base 10 logarithm of each sample.
-
void dip::
Sin(dip::Image const& in, dip::Image& out) - Computes the sine of each sample.
-
void dip::
Cos(dip::Image const& in, dip::Image& out) - Computes the cosine of each sample.
-
void dip::
Tan(dip::Image const& in, dip::Image& out) - Computes the tangent of each sample.
-
void dip::
Asin(dip::Image const& in, dip::Image& out) - Computes the arc sine of each sample.
-
void dip::
Acos(dip::Image const& in, dip::Image& out) - Computes the arc cosine of each sample.
-
void dip::
Atan(dip::Image const& in, dip::Image& out) - Computes the arc tangent of each sample.
-
void dip::
Sinh(dip::Image const& in, dip::Image& out) - Computes the hyperbolic sine of each sample.
-
void dip::
Cosh(dip::Image const& in, dip::Image& out) - Computes the hyperbolic cosine of each sample.
-
void dip::
Tanh(dip::Image const& in, dip::Image& out) - Computes the hyperbolic tangent of each sample.
-
void dip::
BesselJ0(dip::Image const& in, dip::Image& out) - Computes the Bessel functions of the first kind of each sample, of order alpha = 0. Precise up to about 7 digits.
-
void dip::
BesselJ1(dip::Image const& in, dip::Image& out) - Computes the Bessel functions of the first kind of each sample, of order alpha = 1. Precise up to about 7 digits.
-
void dip::
BesselJN(dip::Image const& in, dip::Image& out, dip::uint alpha) - Computes the Bessel functions of the first kind of each sample, of order
alpha
. Precise up to about 7 digits. -
void dip::
BesselY0(dip::Image const& in, dip::Image& out) - Computes the Bessel functions of the second kind of each sample, of order alpha = 0. Precise up to about 7 digits.
-
void dip::
BesselY1(dip::Image const& in, dip::Image& out) - Computes the Bessel functions of the second kind of each sample, of order alpha = 1. Precise up to about 7 digits.
-
void dip::
BesselYN(dip::Image const& in, dip::Image& out, dip::uint alpha) - Computes the Bessel functions of the second kind of each sample, of order
alpha
. Precise up to about 7 digits. -
void dip::
LnGamma(dip::Image const& in, dip::Image& out) - Computes the natural logarithm of the gamma function of each sample.
-
void dip::
Erf(dip::Image const& in, dip::Image& out) - Computes the error function of each sample.
-
void dip::
Erfc(dip::Image const& in, dip::Image& out) - Computes the complementary error function of each sample.
-
void dip::
Sinc(dip::Image const& in, dip::Image& out) - Computes the sinc function of each sample. .
-
void dip::
IsNotANumber(dip::Image const& in, dip::Image& out) - True for each pixel that is NaN.
-
void dip::
IsInfinite(dip::Image const& in, dip::Image& out) - True for each pixel that is positive or negative infinity.
-
void dip::
IsFinite(dip::Image const& in, dip::Image& out) - True for each pixel that is not NaN nor infinity.
-
void dip::
Abs(dip::Image const& in, dip::Image& out) - Computes the absolute value of each sample.
-
void dip::
Modulus(dip::Image const& in, dip::Image& out) - Computes the modulus (absolute value) of each sample.
dip::Modulus
is an alias fordip::Abs
. -
void dip::
SquareModulus(dip::Image const& in, dip::Image& out) - Computes the square of the modulus of each sample.
-
void dip::
Phase(dip::Image const& in, dip::Image& out) - Computes the phase (angle on complex plane, through
std::arg
) of each sample. -
auto dip::
Real(dip::Image const& in) -> dip::Image - Returns the real component of a complex image. Returns
dip::Image::Real
if the input is complex. -
auto dip::
Imaginary(dip::Image const& in) -> dip::Image - Returns the imaginary component of a complex image. Returns
dip::Image::Imaginary
if the input is complex -
void dip::
Conjugate(dip::Image const& in, dip::Image& out) - Computes the complex conjugate of each sample.
-
void dip::
Sign(dip::Image const& in, dip::Image& out) - Computes the sign of each sample. Only defined for signed real data types (signed integers
and floating-point types). Output is of type
dip::DT_SINT8
, containing values -1, 0 and 1. -
void dip::
NearestInt(dip::Image const& in, dip::Image& out) - Computes the integer closest to the value of each sample.
Only defined for floating-point types, the output is of type
dip::DT_SINT32
. -
void dip::
Supremum(dip::ImageConstRefArray const& in, dip::Image& out) - Computes the sample-wise supremum (maximum) over all the input images. For binary images, this is the same as the union.
-
void dip::
Supremum(dip::Image const& a, dip::Image const& b, dip::Image& out) - Computes the sample-wise supremum (maximum) of the two input images. For binary images, this is the same as the union.
-
void dip::
Infimum(dip::ImageConstRefArray const& in, dip::Image& out) - Computes the sample-wise infimum (minimum) over all the input images. For binary images, this is the same as the intersection.
-
void dip::
Infimum(dip::Image const& a, dip::Image const& b, dip::Image& out) - Computes the sample-wise infimum (minimum) of the two input images. For binary images, this is the same as the intersection.
-
void dip::
SignedInfimum(dip::Image const& a, dip::Image const& b, dip::Image& out) - Computes the sample-wise signed infimum (minimum) of the two input images: returns
-b
whereb < a
, a otherwise. -
void dip::
LinearCombination(dip::Image const& a, dip::Image const& b, dip::Image& out, dip::dfloat aWeight = 0.5, dip::dfloat bWeight = 0.5) - Computes the linear combination of the two images, sample-wise.
-
void dip::
LinearCombination(dip::Image const& a, dip::Image const& b, dip::Image& out, dip::dcomplex aWeight, dip::dcomplex bWeight) - Computes the linear combination of the two complex images, sample-wise, yielding a complex output,
-
void dip::
Atan2(dip::Image const& y, dip::Image const& x, dip::Image& out) - Computes the four-quadrant arc tangent of
y/x
. -
void dip::
Hypot(dip::Image const& a, dip::Image const& b, dip::Image& out) - Computes the square root of the sum of the squares of corresponding samples in
a
andb
. -
auto dip::
Transpose(dip::Image const& in) -> dip::Image - Transposes the tensor image, the data are not copied.
-
void dip::
ConjugateTranspose(dip::Image const& in, dip::Image& out) - Computes the conjugate transpose of the tensor image
in
. -
void dip::
DotProduct(dip::Image const& lhs, dip::Image const& rhs, dip::Image& out) - Computes the dot product (inner product) of two vector images.
-
void dip::
CrossProduct(dip::Image const& lhs, dip::Image const& rhs, dip::Image& out) - Computes the cross product (inner product) of two vector images.
-
void dip::
Norm(dip::Image const& in, dip::Image& out) - Computes the norm of the vector at each pixel in image
in
. -
void dip::
SquareNorm(dip::Image const& in, dip::Image& out) - Computes the square of the norm of the vector at each pixel in image
in
. -
void dip::
Angle(dip::Image const& in, dip::Image& out) - Computes the angle of the vector at each pixel in image
in
. -
void dip::
Orientation(dip::Image const& in, dip::Image& out) - Computes the orientation of the vector at each pixel in image
in
. -
void dip::
CartesianToPolar(dip::Image const& in, dip::Image& out) - Converts the vector at each pixel in image
in
from Cartesian coordinates to polar (or spherical) coordinates. -
void dip::
PolarToCartesian(dip::Image const& in, dip::Image& out) - Converts the vector at each pixel in image
in
from polar (or spherical) coordinates to Cartesian coordinates. -
void dip::
Determinant(dip::Image const& in, dip::Image& out) - Computes the determinant of the square matrix at each pixel in image
in
. -
void dip::
Trace(dip::Image const& in, dip::Image& out) - Computes the trace of the square matrix at each pixel in image
in
. -
void dip::
Rank(dip::Image const& in, dip::Image& out) - Computes the rank of the square matrix at each pixel in image
in
. The output is DT_UINT8, under the assumption that we won’t have tensor images with a rank higher than 255. -
void dip::
Eigenvalues(dip::Image const& in, dip::Image& out) - Computes the eigenvalues of the square matrix at each pixel in image
in
. -
void dip::
LargestEigenvalue(dip::Image const& in, dip::Image& out) - Finds the largest eigenvalue of the square matrix at each pixel in image
in
. -
void dip::
SmallestEigenvalue(dip::Image const& in, dip::Image& out) - Finds the smallest eigenvalue of the square matrix at each pixel in image
in
. -
void dip::
EigenDecomposition(dip::Image const& in, dip::Image& out, dip::Image& eigenvectors) - Computes the eigenvalues and eigenvectors of the square matrix at each pixel in image
in
. -
void dip::
LargestEigenvector(dip::Image const& in, dip::Image& out) - Finds the largest eigenvector of the symmetric matrix at each pixel in image
in
. -
void dip::
SmallestEigenvector(dip::Image const& in, dip::Image& out) - Finds the smallest eigenvector of the symmetric matrix at each pixel in image
in
. -
void dip::
Inverse(dip::Image const& in, dip::Image& out) - Computes the inverse of the square matrix at each pixel in image
in
. -
void dip::
PseudoInverse(dip::Image const& in, dip::Image& out, dip::dfloat tolerance = 1e-7) - Computes the pseudo-inverse of the matrix at each pixel in image
in
. -
void dip::
SingularValues(dip::Image const& in, dip::Image& out) - Computes the “thin” singular value decomposition of the matrix at each pixel in image
in
. -
void dip::
SingularValueDecomposition(dip::Image const& A, dip::Image& U, dip::Image& S, dip::Image& V) - Computes the “thin” singular value decomposition of the matrix at each pixel in image
in
. -
void dip::
Identity(dip::Image const& in, dip::Image& out) - Creates an image whose pixels are identity matrices.
-
void dip::
SumTensorElements(dip::Image const& in, dip::Image& out) - Adds all tensor elements, producing a scalar image.
-
void dip::
ProductTensorElements(dip::Image const& in, dip::Image& out) - Multiplies all tensor elements, producing a scalar image.
-
void dip::
AllTensorElements(dip::Image const& in, dip::Image& out) - Determines if all tensor elements are non-zero, producing a binary scalar image.
-
void dip::
AnyTensorElement(dip::Image const& in, dip::Image& out) - Determines if any tensor element is non-zero, producing a binary scalar image.
-
void dip::
MaximumTensorElement(dip::Image const& in, dip::Image& out) - Takes the maximum tensor element at each pixel, producing a scalar image.
-
void dip::
MaximumAbsTensorElement(dip::Image const& in, dip::Image& out) - Takes the maximum absolute tensor element at each pixel, producing a scalar image. For float and complex images only.
-
void dip::
MinimumTensorElement(dip::Image const& in, dip::Image& out) - Takes the minimum tensor element at each pixel, producing a scalar image.
-
void dip::
MinimumAbsTensorElement(dip::Image const& in, dip::Image& out) - Takes the minimum absolute tensor element at each pixel, producing a scalar image. For float and complex images only.
-
void dip::
MeanTensorElement(dip::Image const& in, dip::Image& out) - Computes the mean tensor element value at each pixel, producing a scalar image.
-
void dip::
GeometricMeanTensorElement(dip::Image const& in, dip::Image& out) - Computes the geometric mean tensor element value at each pixel, producing a scalar image.
-
void dip::
SortTensorElements(dip::Image& out) - Sorts the tensor elements within each pixel from largest to smallest. Works in-place.
out
must be real-valued. -
void dip::
SortTensorElementsByMagnitude(dip::Image& out) - Sorts the tensor elements within each pixel by magnitude from largest to smallest. Works in-place.
out
must be of a floating point or complex type. -
void dip::
Select(dip::Image const& in1, dip::Image const& in2, dip::Image const& in3, dip::Image const& in4, dip::Image& out, dip::String const& selector) - Compares
in1
toin2
according toselector
, and writesin3
orin4
toout
depending on the result. -
void dip::
Select(dip::Image const& in1, dip::Image const& in2, dip::Image const& mask, dip::Image& out) - Writes either
in1
orin2
toout
depending on the value ofmask
. -
void dip::
Toggle(dip::Image const& in, dip::Image const& in1, dip::Image const& in2, dip::Image& out) - Writes to
out
whichever ofin1
orin2
is closest toin
.