nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
contrast.hpp
Go to the documentation of this file.
1
3// toolboxes/image/include/nk/image/contrast/contrast.hpp
4// Histogram-based contrast operations.
5
6#pragma once
7
8#include <memory_resource>
9#include <nk/value/span.hpp>
10#include <nk/value/value.hpp>
11
12#include <string>
13#include <tuple>
14
15namespace nk::image {
16
19
20
30std::tuple<Value, Value>
31imhist(const Value &I, int n, std::pmr::memory_resource *mr = nullptr);
32
47Value stretchlim(const Value &I, double low_tol, double high_tol,
48 std::pmr::memory_resource *mr = nullptr);
49
68 double low_in, double high_in,
69 double low_out, double high_out,
70 double gamma,
71 std::pmr::memory_resource *mr = nullptr);
72
90Value adaptthresh(const Value &I, double sensitivity, int neighborhood,
91 const std::string &statistic,
92 std::pmr::memory_resource *mr = nullptr);
93
103Value histeq(const Value &I, int n,
104 std::pmr::memory_resource *mr = nullptr);
105
110 int numTilesR = 8;
111
113 int numTilesC = 8;
114
117 double clipLimit = 0.01;
118
120 int nBins = 256;
121
126 std::string distribution = "uniform";
127
129 double alpha = 0.4;
130
134 std::string range = "full";
135};
136
168 const AdaptHistEqOptions & opts = {},
169 std::pmr::memory_resource * mr = nullptr);
170
171// ── Thresholding ──────────────────────────────────────────────────────
172
182std::tuple<Value, Value>
183graythresh(const Value &I, std::pmr::memory_resource *mr = nullptr);
184
192std::tuple<Value, Value>
193otsuthresh(const Value &counts,
194 std::pmr::memory_resource *mr = nullptr);
195
205std::tuple<Value, Value>
206multithresh(const Value &I, int N,
207 std::pmr::memory_resource *mr = nullptr);
208
219Value imbinarize(const Value &I, double thresh,
220 std::pmr::memory_resource *mr = nullptr);
221
232Value imbinarize(const Value &I, const Value &T,
233 std::pmr::memory_resource *mr = nullptr);
234
245Value imquantize(const Value &I, const Value &levels,
246 std::pmr::memory_resource *mr = nullptr);
247
267Value imhistmatch(const Value &I, const Value &ref, int nbins,
268 Value *hgramOut = nullptr,
269 std::pmr::memory_resource *mr = nullptr);
270
285Value imflatfield(const Value &I, double sigma, const Value &mask,
286 std::pmr::memory_resource *mr = nullptr);
287
300Value wcodemat(const Value &X, int nb, const std::string &opt, int absol,
301 std::pmr::memory_resource *mr = nullptr);
302
315Value entropy(const Value &I, int nbins,
316 std::pmr::memory_resource *mr = nullptr);
317
330Value grayslice(const Value &I, int N,
331 std::pmr::memory_resource *mr = nullptr);
332
347 std::pmr::memory_resource *mr = nullptr);
348
349
351} // namespace nk::image
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value adaptthresh(const Value &I, double sensitivity, int neighborhood, const std::string &statistic, std::pmr::memory_resource *mr=nullptr)
Locally adaptive threshold matrix (T = adaptthresh(I, ...)).
Value histeq(const Value &I, int n, std::pmr::memory_resource *mr=nullptr)
Histogram equalisation (J = histeq(I, n)).
Value imadjust(const Value &I, double low_in, double high_in, double low_out, double high_out, double gamma, std::pmr::memory_resource *mr=nullptr)
Affine intensity remap with optional gamma (J = imadjust(...)).
std::tuple< Value, Value > otsuthresh(const Value &counts, std::pmr::memory_resource *mr=nullptr)
Otsu's threshold from a precomputed histogram ([level, em] = otsuthresh(counts)).
Value imquantize(const Value &I, const Value &levels, std::pmr::memory_resource *mr=nullptr)
Quantise into N+1 classes (L = imquantize(I, levels)).
Value entropy(const Value &I, int nbins, std::pmr::memory_resource *mr=nullptr)
Shannon entropy of the image histogram (H = entropy(I, nbins)).
Value grayslice(const Value &I, int N, std::pmr::memory_resource *mr=nullptr)
Multilevel thresholding into an indexed image, level-count form (L = grayslice(I, N)).
Value imhistmatch(const Value &I, const Value &ref, int nbins, Value *hgramOut=nullptr, std::pmr::memory_resource *mr=nullptr)
Histogram matching to a reference image ([J, hgram] = imhistmatch(I, ref, nbins)).
std::tuple< Value, Value > imhist(const Value &I, int n, std::pmr::memory_resource *mr=nullptr)
Image histogram ([counts, bin_centers] = imhist(I, n)).
Value wcodemat(const Value &X, int nb, const std::string &opt, int absol, std::pmr::memory_resource *mr=nullptr)
Wavelet-display quantisation (Y = wcodemat(X, nb, opt, absol)).
std::tuple< Value, Value > graythresh(const Value &I, std::pmr::memory_resource *mr=nullptr)
Otsu's threshold and effectiveness metric ([level, em] = graythresh(I)).
Value imbinarize(const Value &I, double thresh, std::pmr::memory_resource *mr=nullptr)
Threshold an image (BW = imbinarize(I, thresh)).
Value adapthisteq(const Value &I, const AdaptHistEqOptions &opts={}, std::pmr::memory_resource *mr=nullptr)
Contrast Limited Adaptive Histogram Equalisation (J = adapthisteq(I, opts)).
Value imflatfield(const Value &I, double sigma, const Value &mask, std::pmr::memory_resource *mr=nullptr)
Flat-field correction (J = imflatfield(I, sigma, mask)).
std::tuple< Value, Value > multithresh(const Value &I, int N, std::pmr::memory_resource *mr=nullptr)
N-level Otsu ([thresh, em] = multithresh(I, N)).
Value stretchlim(const Value &I, double low_tol, double high_tol, std::pmr::memory_resource *mr=nullptr)
Stretch limits from saturation tolerances (lim = stretchlim(I, [low_tol, high_tol])).
Parameters for adapthisteq.
Definition contrast.hpp:107
double clipLimit
Histogram clip fraction in [0, 1]; 0 disables clipping.
Definition contrast.hpp:117
std::string distribution
Target histogram shape:
Definition contrast.hpp:126
std::string range
Output intensity range:
Definition contrast.hpp:134
int numTilesC
NumTiles along the column axis.
Definition contrast.hpp:113
int numTilesR
NumTiles along the row axis.
Definition contrast.hpp:110
double alpha
Shape parameter for the rayleigh / exponential distributions.
Definition contrast.hpp:129
int nBins
Histogram bin count.
Definition contrast.hpp:120