nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
transform.hpp
Go to the documentation of this file.
1
3// toolboxes/image/include/nk/image/transform/transform.hpp
4//
5// Image transforms: 2-D DCT, integral images, checkerboard / phantom
6// patterns, normalised cross-correlation, OTF / PSF conversions.
7
8#pragma once
9
10#include <memory_resource>
11#include <nk/value/span.hpp>
12#include <nk/value/value.hpp>
13#include <string>
14#include <tuple>
15
16namespace nk::image {
17
20
21
31Value dct2(const Value &A, std::pmr::memory_resource *mr = nullptr);
32
41Value idct2(const Value &B, std::pmr::memory_resource *mr = nullptr);
42
53Value dctmtx(double N, std::pmr::memory_resource *mr = nullptr);
54
66Value integralImage(const Value &I, std::pmr::memory_resource *mr = nullptr);
67
77Value integralImage3(const Value &V, std::pmr::memory_resource *mr = nullptr);
78
91Value checkerboard(size_t side, size_t M, size_t N,
92 std::pmr::memory_resource *mr = nullptr);
93
104Value normxcorr2(const Value &templ, const Value &img,
105 std::pmr::memory_resource *mr = nullptr);
106
118Value psf2otf(const Value &PSF, Span<const size_t> outsize = {},
119 std::pmr::memory_resource *mr = nullptr);
120
132Value fftconv2(const Value &A, const Value &B, const std::string &shape,
133 std::pmr::memory_resource *mr = nullptr);
134
167Value deconvwnr(const Value &I, const Value &PSF, double nsr,
168 std::pmr::memory_resource *mr = nullptr);
176Value deconvwnr(const Value &I, const Value &PSF,
177 const Value &ncorr, const Value &icorr,
178 std::pmr::memory_resource *mr = nullptr);
179
183 double lagra;
184};
185
199 double np, double lo, double hi,
200 const Value &regop,
201 std::pmr::memory_resource *mr = nullptr);
202
236Value edgetaper(const Value &I, const Value &PSF,
237 std::pmr::memory_resource *mr = nullptr);
238
250Value bestblk(const Value &IMS, double k,
251 std::pmr::memory_resource *mr = nullptr);
252
265Value otf2psf(const Value &OTF, Span<const size_t> outsize = {},
266 std::pmr::memory_resource *mr = nullptr);
267
280std::tuple<Value, Value>
281phantom(const Value &model_or_E, size_t n,
282 std::pmr::memory_resource *mr = nullptr);
283
284
286} // namespace nk::image
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value otf2psf(const Value &OTF, Span< const size_t > outsize={}, std::pmr::memory_resource *mr=nullptr)
OTF → PSF (PSF = otf2psf(OTF, outsize)).
Value edgetaper(const Value &I, const Value &PSF, std::pmr::memory_resource *mr=nullptr)
Taper image edges via blur (J = edgetaper(I, PSF)).
std::tuple< Value, Value > phantom(const Value &model_or_E, size_t n, std::pmr::memory_resource *mr=nullptr)
Shepp-Logan computational head phantom ([P, E] = phantom(model_or_E, n)).
Value fftconv2(const Value &A, const Value &B, const std::string &shape, std::pmr::memory_resource *mr=nullptr)
2-D convolution via FFT (Y = fftconv2(A, B, shape)).
Value normxcorr2(const Value &templ, const Value &img, std::pmr::memory_resource *mr=nullptr)
Normalised cross-correlation (C = normxcorr2(template, img)).
DeconvregResult deconvreg(const Value &I, const Value &PSF, double np, double lo, double hi, const Value &regop, std::pmr::memory_resource *mr=nullptr)
Tikhonov-regularized deconvolution ([J, LAGRA] = deconvreg(I, PSF, NP, ...)).
Value dct2(const Value &A, std::pmr::memory_resource *mr=nullptr)
2-D Type-II orthonormal DCT (B = dct2(A)).
Value bestblk(const Value &IMS, double k, std::pmr::memory_resource *mr=nullptr)
Best block size for block-wise processing (siz = bestblk(IMS, k)).
Value checkerboard(size_t side, size_t M, size_t N, std::pmr::memory_resource *mr=nullptr)
Checkerboard test pattern (I = checkerboard(side, M, N)).
Value idct2(const Value &B, std::pmr::memory_resource *mr=nullptr)
Inverse 2-D DCT (A = idct2(B)).
Value integralImage3(const Value &V, std::pmr::memory_resource *mr=nullptr)
3-D summed-volume table (J = integralImage3(V)).
Value deconvwnr(const Value &I, const Value &PSF, double nsr, std::pmr::memory_resource *mr=nullptr)
Wiener deconvolution (J = deconvwnr(I, PSF, NSR) / deconvwnr(I, PSF, NCORR, ICORR)).
Value psf2otf(const Value &PSF, Span< const size_t > outsize={}, std::pmr::memory_resource *mr=nullptr)
PSF → OTF (OTF = psf2otf(PSF, outsize)).
Value integralImage(const Value &I, std::pmr::memory_resource *mr=nullptr)
Summed-area table (J = integralImage(I)).
Value dctmtx(double N, std::pmr::memory_resource *mr=nullptr)
N × N DCT-II transform matrix (D = dctmtx(N)).
Result of regularized deconvolution ([J, LAGRA] = deconvreg(...)).
double lagra
Lagrange multiplier λ.
Value J
Deblurred restored image.