nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
arithmetic.hpp
Go to the documentation of this file.
1
3// toolboxes/image/include/nk/image/arithmetic/arithmetic.hpp
4//
5// Image arithmetic. Element-wise operations on image arrays with
6// saturating semantics for integer types
7// (uint8/uint16/int16) and pass-through for floating types.
8//
9// All operations broadcast scalars and accept mismatched-but-castable
10// types (one input promotes to the other's class).
11
12#pragma once
13
14#include <memory_resource>
15#include <nk/value/value.hpp>
16
17#include <vector>
18
19namespace nk::image {
20
23
24
41Value imadd(const Value &x, const Value &y,
42 std::pmr::memory_resource *mr = nullptr);
43
53Value imsubtract(const Value &x, const Value &y,
54 std::pmr::memory_resource *mr = nullptr);
55
64Value immultiply(const Value &x, const Value &y,
65 std::pmr::memory_resource *mr = nullptr);
66
78Value imdivide(const Value &x, const Value &y,
79 std::pmr::memory_resource *mr = nullptr);
80
90Value imabsdiff(const Value &x, const Value &y,
91 std::pmr::memory_resource *mr = nullptr);
92
102Value imcomplement(const Value &x, std::pmr::memory_resource *mr = nullptr);
103
116Value imlincomb(const std::vector<double> &coefs,
117 const std::vector<Value> &images,
118 ValueType output_class,
119 std::pmr::memory_resource *mr = nullptr);
120
133Value imapplymatrix(const Value &M, const Value &x,
134 ValueType output_class,
135 std::pmr::memory_resource *mr = nullptr);
136
137
139} // namespace nk::image
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value imapplymatrix(const Value &M, const Value &x, ValueType output_class, std::pmr::memory_resource *mr=nullptr)
Apply a colour-space transform matrix (Y = imapplymatrix(M, X)).
Value imsubtract(const Value &x, const Value &y, std::pmr::memory_resource *mr=nullptr)
Saturating image subtraction (Z = imsubtract(X, Y)).
Value imdivide(const Value &x, const Value &y, std::pmr::memory_resource *mr=nullptr)
Saturating element-wise division (Z = imdivide(X, Y)).
Value immultiply(const Value &x, const Value &y, std::pmr::memory_resource *mr=nullptr)
Saturating element-wise multiplication (Z = immultiply(X, Y)).
Value imabsdiff(const Value &x, const Value &y, std::pmr::memory_resource *mr=nullptr)
Saturating absolute difference (Z = imabsdiff(X, Y)).
Value imcomplement(const Value &x, std::pmr::memory_resource *mr=nullptr)
Image complement (Y = imcomplement(X)).
Value imadd(const Value &x, const Value &y, std::pmr::memory_resource *mr=nullptr)
Saturating image addition (Z = imadd(X, Y)).
Value imlincomb(const std::vector< double > &coefs, const std::vector< Value > &images, ValueType output_class, std::pmr::memory_resource *mr=nullptr)
Linear combination of images (Z = imlincomb(coefs, images, class)).