HighMap library (C++)
Loading...
Searching...
No Matches
morphology.hpp
Go to the documentation of this file.
1/* Copyright (c) 2023 Otto Link. Distributed under the terms of the GNU General
2 Public License. The full license is in the file LICENSE, distributed with
3 this software. */
4
18#pragma once
19
20#include "highmap/array.hpp"
21
22namespace hmap
23{
24
35
49Array border(const Array &array, int ir);
50
64Array closing(const Array &array, int ir);
65
80Array dilation(const Array &array, int ir);
81
100Array dilation_expand_border_only(const Array &array, int ir);
101
102Array dilation_expand_min_value_border_only(const Array &array);
103
126Array distance_transform(const Array &array,
127 bool return_squared_distance = false);
128
149Array distance_transform_approx(const Array &array,
150 bool return_squared_distance = false);
151
171Array distance_transform_manhattan(const Array &array,
172 bool return_squared_distance = false);
173
186Array distance_transform_with_closest(const Array &array,
187 Mat<glm::ivec2> &closest,
188 bool return_squared_distance = false);
189
204Array erosion(const Array &array, int ir);
205
221void flood_fill(Array &array,
222 int i,
223 int j,
224 float fill_value = 1.f,
225 float background_value = 0.f);
226
241Array morphological_black_hat(const Array &array, int ir);
242
257Array morphological_gradient(const Array &array, int ir);
258
273Array morphological_top_hat(const Array &array, int ir);
274
289Array opening(const Array &array, int ir);
290
327Array relative_distance_from_skeleton(const Array &array,
328 int ir_search,
329 bool zero_at_borders = true,
330 int ir_erosion = 1);
331
353Array signed_curvature_from_distance(const Array &array, int prefilter_ir = 0);
354
366Array signed_distance_transform(const Array &array, int prefilter_ir = 0);
367
391Array skeleton(const Array &array, bool zero_at_borders = true);
392
393} // namespace hmap
394
395namespace hmap::gpu
396{
397
399Array border(const Array &array, int ir, bool use_disk_kernel = true);
400
402Array closing(const Array &array, int ir, bool use_disk_kernel = true);
403
405Array dilation(const Array &array, int ir, bool use_disk_kernel = true);
406
408Array dilation_expand_border_only(const Array &array,
409 int ir,
410 bool use_disk_kernel = true);
411
434Array distance_transform_jfa(const Array &array,
435 bool return_squared_distance = false);
436
438Array erosion(const Array &array, int ir, bool use_disk_kernel = true);
439
441Array morphological_black_hat(const Array &array,
442 int ir,
443 bool use_disk_kernel = true);
444
446Array morphological_gradient(const Array &array,
447 int ir,
448 bool use_disk_kernel = true);
449
451Array morphological_top_hat(const Array &array,
452 int ir,
453 bool use_disk_kernel = true);
454
456Array opening(const Array &array, int ir, bool use_disk_kernel = true);
457
459Array relative_distance_from_skeleton(const Array &array,
460 int ir_search,
461 bool zero_at_borders = true,
462 int ir_erosion = 1,
463 bool use_disk_kernel = true);
464
466Array signed_curvature_from_distance(const Array &array, int prefilter_ir = 0);
467
469Array signed_distance_transform(const Array &array, int prefilter_ir = 0);
470
472Array skeleton(const Array &array, bool zero_at_borders = true);
473
474} // namespace hmap::gpu
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition blending.hpp:186
Array opening(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::opening.
Definition morphology_gpu.cpp:73
Array dilation(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::dilation.
Definition morphology_gpu.cpp:24
Array morphological_gradient(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::morphological_gradient.
Definition morphology_gpu.cpp:62
Array distance_transform_jfa(const Array &array, bool return_squared_distance=false)
Return the Euclidean distance transform.
Definition distance_transform_jfa.cpp:13
Array morphological_top_hat(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::morphological_top_hat.
Definition morphology_gpu.cpp:68
Array skeleton(const Array &array, bool zero_at_borders=true)
See hmap::skeleton.
Definition morphology_gpu.cpp:108
Array erosion(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::erosion.
Definition morphology_gpu.cpp:49
Array relative_distance_from_skeleton(const Array &array, int ir_search, bool zero_at_borders=true, int ir_erosion=1, bool use_disk_kernel=true)
See hmap::relative_distance_from_skeleton.
Definition morphology_gpu.cpp:80
Array signed_distance_transform(const Array &array, int prefilter_ir=0)
See hmap::signed_distance_transform.
Definition signed_curvature_from_distance.cpp:44
Array morphological_black_hat(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::morphological_black_hat.
Definition morphology_gpu.cpp:57
Array dilation_expand_border_only(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::dilation_expand_border_only.
Definition morphology_gpu.cpp:32
Array border(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::border.
Definition morphology_gpu.cpp:12
Array closing(const Array &array, int ir, bool use_disk_kernel=true)
See hmap::closing.
Definition morphology_gpu.cpp:17
Array signed_curvature_from_distance(const Array &array, int prefilter_ir=0)
See hmap::signed_curvature_from_distance.
Definition signed_curvature_from_distance.cpp:38
Definition algebra.hpp:23
Array morphological_gradient(const Array &array, int ir)
Apply a morphological gradient algorithm to the input array using a square structure.
Definition morphology.cpp:131
Array skeleton(const Array &array, bool zero_at_borders=true)
Computes the skeleton of a binary image using the Zhang-Suen skeletonization algorithm.
Definition morphology.cpp:231
Array morphological_black_hat(const Array &array, int ir)
Apply a morphological black hat algorithm to the input array using a square structure.
Definition morphology.cpp:126
Array morphological_top_hat(const Array &array, int ir)
Apply a morphological top hat algorithm to the input array using a square structure.
Definition morphology.cpp:136
Array distance_transform_approx(const Array &array, bool return_squared_distance=false)
Calculates an approximate distance transform of the input array.
Definition distance_transform_approx.cpp:12
Array dilation_expand_border_only(const Array &array, int ir)
Expand non-zero regions of an array by morphological dilation, while preserving the original non-zero...
Definition morphology.cpp:29
Array distance_transform(const Array &array, bool return_squared_distance=false)
Return the Euclidean distance transform.
Definition distance_transform.cpp:23
Array dilation_expand_min_value_border_only(const Array &array)
Definition morphology.cpp:44
Array relative_distance_from_skeleton(const Array &array, int ir_search, bool zero_at_borders=true, int ir_erosion=1)
Computes the relative distance of each non-zero cell in a binary array from the skeleton and border.
Definition morphology.cpp:180
Array closing(const Array &array, int ir)
Apply a closing algorithm to the input array using a square structure.
Definition morphology.cpp:19
Array distance_transform_with_closest(const Array &array, Mat< glm::ivec2 > &closest, bool return_squared_distance=false)
Return the Euclidean distance transform.
Definition distance_transform.cpp:102
Array erosion(const Array &array, int ir)
Apply an erosion algorithm to the input array using a square structure.
Definition morphology.cpp:74
DistanceTransformType
Enumeration for different types of distance transforms.
Definition morphology.hpp:29
@ DT_EXACT
Exact distance transform.
Definition morphology.hpp:30
@ DT_APPROX
Approximate distance transform.
Definition morphology.hpp:31
@ DT_JFA
Approximate (JFA) distance transform.
Definition morphology.hpp:33
@ DT_MANHATTAN
Manhattan distance transform.
Definition morphology.hpp:32
Array opening(const Array &array, int ir)
Apply an opening algorithm to the input array using a square structure.
Definition morphology.cpp:141
Array signed_curvature_from_distance(const Array &array, int prefilter_ir=0)
Computes the signed curvature of the distance transform.
Definition signed_curvature_from_distance.cpp:14
Array dilation(const Array &array, int ir)
Apply a dilation algorithm to the input array using a square structure.
Definition morphology.cpp:24
Array signed_distance_transform(const Array &array, int prefilter_ir=0)
Computes a signed distance transform using curvature sign.
Definition signed_curvature_from_distance.cpp:20
Array distance_transform_manhattan(const Array &array, bool return_squared_distance=false)
Calculates the Manhattan distance transform of an array.
Definition distance_transform_approx.cpp:54
void flood_fill(Array &array, int i, int j, float fill_value=1.f, float background_value=0.f)
Apply a flood fill algorithm to the input array.
Definition morphology.cpp:79
Array border(const Array &array, int ir)
Apply a border algorithm to the input array using a square structure.
Definition morphology.cpp:14