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
124Array distance_transform(const Array &array,
125 bool return_squared_distance = false);
126
147Array distance_transform_approx(const Array &array,
148 bool return_squared_distance = false);
149
169Array distance_transform_manhattan(const Array &array,
170 bool return_squared_distance = false);
171
172Array distance_transform_with_closest(const Array &array,
173 Mat<int> &closest_i,
174 Mat<int> &closest_j,
175 bool return_squared_distance = false);
176
191Array erosion(const Array &array, int ir);
192
208void flood_fill(Array &array,
209 int i,
210 int j,
211 float fill_value = 1.f,
212 float background_value = 0.f);
213
228Array morphological_black_hat(const Array &array, int ir);
229
244Array morphological_gradient(const Array &array, int ir);
245
260Array morphological_top_hat(const Array &array, int ir);
261
276Array opening(const Array &array, int ir);
277
314Array relative_distance_from_skeleton(const Array &array,
315 int ir_search,
316 bool zero_at_borders = true,
317 int ir_erosion = 1);
318
340Array signed_curvature_from_distance(const Array &array, int prefilter_ir = 0);
341
353Array signed_distance_transform(const Array &array, int prefilter_ir = 0);
354
378Array skeleton(const Array &array, bool zero_at_borders = true);
379
380} // namespace hmap
381
382namespace hmap::gpu
383{
384
386Array border(const Array &array, int ir, bool use_disk_kernel = true);
387
389Array closing(const Array &array, int ir, bool use_disk_kernel = true);
390
392Array dilation(const Array &array, int ir, bool use_disk_kernel = true);
393
395Array dilation_expand_border_only(const Array &array,
396 int ir,
397 bool use_disk_kernel = true);
398
421Array distance_transform_jfa(const Array &array,
422 bool return_squared_distance = false);
423
425Array erosion(const Array &array, int ir, bool use_disk_kernel = true);
426
428Array morphological_black_hat(const Array &array,
429 int ir,
430 bool use_disk_kernel = true);
431
433Array morphological_gradient(const Array &array,
434 int ir,
435 bool use_disk_kernel = true);
436
438Array morphological_top_hat(const Array &array,
439 int ir,
440 bool use_disk_kernel = true);
441
443Array opening(const Array &array, int ir, bool use_disk_kernel = true);
444
446Array relative_distance_from_skeleton(const Array &array,
447 int ir_search,
448 bool zero_at_borders = true,
449 int ir_erosion = 1,
450 bool use_disk_kernel = true);
451
453Array signed_curvature_from_distance(const Array &array, int prefilter_ir = 0);
454
456Array signed_distance_transform(const Array &array, int prefilter_ir = 0);
457
459Array skeleton(const Array &array, bool zero_at_borders = true);
460
461} // 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:28
Array morphological_gradient(const Array &array, int ir)
Apply a morphological gradient algorithm to the input array using a square structure.
Definition morphology.cpp:101
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:201
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:96
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:106
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 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:150
Array closing(const Array &array, int ir)
Apply a closing algorithm to the input array using a square structure.
Definition morphology.cpp:19
Array erosion(const Array &array, int ir)
Apply an erosion algorithm to the input array using a square structure.
Definition morphology.cpp:44
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:111
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:49
Array border(const Array &array, int ir)
Apply a border algorithm to the input array using a square structure.
Definition morphology.cpp:14
Array distance_transform_with_closest(const Array &array, Mat< int > &closest_i, Mat< int > &closest_j, bool return_squared_distance=false)
Definition distance_transform.cpp:102