Compute Library
 20.11
HOGInfo.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016-2019 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_HOGINFO_H
25 #define ARM_COMPUTE_HOGINFO_H
26 
28 #include "arm_compute/core/Types.h"
29 
30 #include <cstddef>
31 
32 namespace arm_compute
33 {
34 /** Store the HOG's metadata */
35 class HOGInfo
36 {
37 public:
38  /** Default constructor */
39  HOGInfo();
40  /** Default destructor */
41  virtual ~HOGInfo() = default;
42  /** Allow instances of this class to be copy constructed */
43  HOGInfo(const HOGInfo &) = default;
44  /** Allow instances of this class to be copied */
45  HOGInfo &operator=(const HOGInfo &) = default;
46  /** Allow instances of this class to be move constructed */
47  HOGInfo(HOGInfo &&) = default;
48  /** Allow instances of this class to be moved */
49  HOGInfo &operator=(HOGInfo &&) = default;
50  /** Constructor
51  *
52  * @param[in] cell_size Cell size in pixels
53  * @param[in] block_size Block size in pixels. Must be a multiple of cell_size.
54  * @param[in] detection_window_size Detection window size in pixels. Must be a multiple of block_size and block_stride.
55  * @param[in] block_stride Distance in pixels between 2 consecutive blocks along the x and y direction. Must be a multiple of cell size
56  * @param[in] num_bins Number of histogram bins for each cell
57  * @param[in] normalization_type (Optional) Normalization type to use for each block
58  * @param[in] l2_hyst_threshold (Optional) Threshold used for L2HYS_NORM normalization method
59  * @param[in] phase_type (Optional) Type of @ref PhaseType
60  */
63  /** Initialize the metadata structure with the given parameters
64  *
65  * @param[in] cell_size Cell size in pixels
66  * @param[in] block_size Block size in pixels. Must be a multiple of cell_size.
67  * @param[in] detection_window_size Detection window size in pixels. Must be a multiple of block_size and block_stride.
68  * @param[in] block_stride Distance in pixels between 2 consecutive blocks along the x and y direction. Must be a multiple of cell size
69  * @param[in] num_bins Number of histogram bins for each cell
70  * @param[in] normalization_type (Optional) Normalization type to use for each block
71  * @param[in] l2_hyst_threshold (Optional) Threshold used for L2HYS_NORM normalization method
72  * @param[in] phase_type (Optional) Type of @ref PhaseType
73  */
74  void init(const Size2D &cell_size, const Size2D &block_size, const Size2D &detection_window_size, const Size2D &block_stride, size_t num_bins,
76  /** The cell size in pixels
77  *
78  * @return The cell size in pixels
79  */
80  const Size2D &cell_size() const;
81  /** The block size in pixels
82  *
83  * @return The block size in pixels
84  */
85  const Size2D &block_size() const;
86  /** The detection window size in pixels
87  *
88  * @return The detection window size in pixels
89  */
90  const Size2D &detection_window_size() const;
91  /** The block stride in pixels. The block stride is the distance between 2 consecutive blocks
92  *
93  * @return The block stride in pixels
94  */
95  const Size2D &block_stride() const;
96  /** The number of histogram bins for each cell
97  *
98  * @return The number of histogram bins for each cell
99  */
100  size_t num_bins() const;
101  /** The normalization type
102  *
103  * @return The normalization type
104  */
106  /** Threshold used for L2HYS_NORM normalization type
107  *
108  * @return Threshold used for L2HYS_NORM normalization type
109  */
110  float l2_hyst_threshold() const;
111  /** The type of @ref PhaseType
112  *
113  * @return The type of @ref PhaseType
114  */
115  PhaseType phase_type() const;
116  /** The size of HOG descriptor
117  *
118  * @return The size of HOG descriptor
119  */
120  size_t descriptor_size() const;
121  /** Calculates the number of cells for each block
122  *
123  * @return The Size2D data object which stores the number of cells along the x and y directions
124  */
125  Size2D num_cells_per_block() const;
126 
127  /** Calculates the number of cells per block stride
128  *
129  * @return The Size2D data object which stores the number of cells per block stride along the x and y directions
130  */
132  /** Calculates the number of block positions for the given image size
133  *
134  * @param[in] image_size The input image size data object
135  *
136  * @return The Size2D data object which stores the number of block positions along the x and y directions
137  */
138  Size2D num_block_positions_per_image(const Size2D &image_size) const;
139 
140 private:
141  Size2D _cell_size;
142  Size2D _block_size;
143  Size2D _detection_window_size;
144  Size2D _block_stride;
145  size_t _num_bins;
146  HOGNormType _normalization_type;
147  float _l2_hyst_threshold;
148  PhaseType _phase_type;
149  size_t _descriptor_size;
150 };
151 }
152 #endif /*ARM_COMPUTE_HOGINFO_H */
L2-norm followed by clipping.
size_t num_bins() const
The number of histogram bins for each cell.
Definition: HOGInfo.cpp:111
const Size2D & detection_window_size() const
The detection window size in pixels.
Definition: HOGInfo.cpp:101
Angle range: [0, 180].
const Size2D & cell_size() const
The cell size in pixels.
Definition: HOGInfo.cpp:91
PhaseType
Phase calculation type.
Definition: Types.h:432
Size2D num_cells_per_block_stride() const
Calculates the number of cells per block stride.
Definition: HOGInfo.cpp:75
Store the HOG's metadata.
Definition: HOGInfo.h:35
PhaseType phase_type() const
The type of PhaseType.
Definition: HOGInfo.cpp:126
const Size2D & block_stride() const
The block stride in pixels.
Definition: HOGInfo.cpp:106
HOGNormType normalization_type() const
The normalization type.
Definition: HOGInfo.cpp:116
Copyright (c) 2017-2020 Arm Limited.
HOGInfo()
Default constructor.
Definition: HOGInfo.cpp:31
Size2D num_cells_per_block() const
Calculates the number of cells for each block.
Definition: HOGInfo.cpp:67
const Size2D & block_size() const
The block size in pixels.
Definition: HOGInfo.cpp:96
float l2_hyst_threshold() const
Threshold used for L2HYS_NORM normalization type.
Definition: HOGInfo.cpp:121
HOGNormType
Normalization type for Histogram of Oriented Gradients (HOG)
Definition: Types.h:568
Size2D num_block_positions_per_image(const Size2D &image_size) const
Calculates the number of block positions for the given image size.
Definition: HOGInfo.cpp:83
Class for specifying the size of an image or rectangle.
Definition: Size2D.h:34
HOGInfo & operator=(const HOGInfo &)=default
Allow instances of this class to be copied.
virtual ~HOGInfo()=default
Default destructor.
size_t descriptor_size() const
The size of HOG descriptor.
Definition: HOGInfo.cpp:131
void init(const Size2D &cell_size, const Size2D &block_size, const Size2D &detection_window_size, const Size2D &block_stride, size_t num_bins, HOGNormType normalization_type=HOGNormType::L2HYS_NORM, float l2_hyst_threshold=0.2f, PhaseType phase_type=PhaseType::UNSIGNED)
Initialize the metadata structure with the given parameters.
Definition: HOGInfo.cpp:44