 |
AliceVision
Photogrammetric Computer Vision Framework
|
11 #define CUDA_HOST_DEVICE __host__ __device__
12 #define CUDA_HOST __host__
13 #define CUDA_CEIL(f) ceil(f)
14 #define CUDA_FLOOR(f) floor(f)
15 #define CUDA_MIN(a, b) min(a, b)
16 #define CUDA_MAX(a, b) max(a, b)
17 #elif defined(ACPP_LIBKERNEL_IS_DEVICE_PASS)
18 #include <aliceVision/depthMap_sycl/sycl/sycl.hpp>
19 #define CUDA_HOST_DEVICE
21 #define CUDA_CEIL(f) sycl::ceil(f)
22 #define CUDA_FLOOR(f) sycl::floor(f)
23 #define CUDA_MIN(a, b) sycl::min(a, b)
24 #define CUDA_MAX(a, b) sycl::max(a, b)
26 #define CUDA_HOST_DEVICE
28 #define CUDA_CEIL(f) std::ceil(f)
29 #define CUDA_FLOOR(f) std::floor(f)
30 #define CUDA_MIN(a, b) std::min(a, b)
31 #define CUDA_MAX(a, b) std::max(a, b)
45 unsigned int begin = 0;
56 CUDA_HOST_DEVICE
Range(
unsigned int in_begin,
unsigned int in_end)
66 CUDA_HOST_DEVICE
inline unsigned int size()
const {
return end - begin; }
68 CUDA_HOST_DEVICE
inline bool isEmpty()
const {
return begin >= end; }
75 CUDA_HOST
inline bool contains(
unsigned int i)
const {
return ((begin <= i) && (end > i)); }
78 inline Range intersect(
const Range& a,
const Range& b) {
return Range(CUDA_MAX(a.begin, b.begin), CUDA_MIN(a.end, b.end)); }
98 CUDA_HOST_DEVICE
ROI(
unsigned int in_beginX,
unsigned int in_endX,
unsigned int in_beginY,
unsigned int in_endY)
99 : x(in_beginX, in_endX),
100 y(in_beginY, in_endY)
117 CUDA_HOST_DEVICE
inline unsigned int width()
const {
return x.size(); }
123 CUDA_HOST_DEVICE
inline unsigned int height()
const {
return y.
size(); }
125 CUDA_HOST_DEVICE
inline bool isEmpty()
const {
return x.isEmpty() || y.isEmpty(); }
133 CUDA_HOST
inline bool contains(
unsigned int in_x,
unsigned int in_y)
const {
return (x.contains(in_x) && y.
contains(in_y)); }
145 return ((roi.x.end <= (
unsigned int)(width)) && (roi.x.begin < roi.x.end) && (roi.y.end <= (
unsigned int)(height)) && (roi.y.begin < roi.y.end));
156 return Range(CUDA_FLOOR(range.begin / downscale), CUDA_CEIL(range.end / downscale));
167 return Range(CUDA_FLOOR(range.begin * upscale), CUDA_CEIL(range.end * upscale));
178 const float midRange = range.begin + (range.
size() * 0.5f);
179 const float inflateSize = range.
size() * factor * 0.5f;
180 return Range(CUDA_FLOOR(CUDA_MAX(midRange - inflateSize, 0.f)), CUDA_CEIL(midRange + inflateSize));
207 inline ROI intersect(
const ROI& a,
const ROI& b) {
return ROI(intersect(a.x, b.x), intersect(a.y, b.y)); }
209 #if !defined(__NVCC__)
210 inline std::ostream& operator<<(std::ostream& os,
const Range& range)
212 os << range.begin <<
"-" << range.end;
215 inline std::ostream& operator<<(std::ostream& os,
const ROI& roi)
217 os <<
"x: " << roi.x <<
", y: " << roi.y;
CUDA_HOST Range inflateRange(const Range &range, float factor)
Inflate the given Range with the given factor.
Definition: ROI.hpp:176
CUDA_HOST_DEVICE ROI(unsigned int in_beginX, unsigned int in_endX, unsigned int in_beginY, unsigned int in_endY)
ROI constructor.
Definition: ROI.hpp:98
CUDA_HOST ROI downscaleROI(const ROI &roi, float downscale)
Downscale the given ROI with the given downscale factor.
Definition: ROI.hpp:189
CUDA_HOST bool contains(unsigned int in_x, unsigned int in_y) const
Return true if the given 2d point is contained in the ROI.
Definition: ROI.hpp:133
CUDA_HOST_DEVICE unsigned int size() const
Return true if the given index is contained in the Range.
Definition: ROI.hpp:66
Definition: checkerDetector.cpp:32
CUDA_HOST_DEVICE Range(unsigned int in_begin, unsigned int in_end)
Range constructor.
Definition: ROI.hpp:56
CUDA_HOST bool contains(unsigned int i) const
Return true if the given index is contained in the Range.
Definition: ROI.hpp:75
CUDA_HOST_DEVICE unsigned int height() const
Get the ROI height.
Definition: ROI.hpp:123
CUDA_HOST Range upscaleRange(const Range &range, float upscale)
Upscale the given Range with the given upscale factor.
Definition: ROI.hpp:165
CUDA_HOST_DEVICE unsigned int width() const
Get the ROI width.
Definition: ROI.hpp:117
CUDA_HOST ROI upscaleROI(const ROI &roi, float upscale)
Upscale the given ROI with the given upscale factor.
Definition: ROI.hpp:197
CUDA_HOST Range downscaleRange(const Range &range, float downscale)
Downscale the given Range with the given downscale factor.
Definition: ROI.hpp:154
CUDA_HOST bool checkImageROI(const ROI &roi, int width, int height)
check if a given ROI is valid and can be contained in a given image
Definition: ROI.hpp:143
CUDA_HOST_DEVICE ROI(const Range &in_rangeX, const Range &in_rangeY)
ROI constructor.
Definition: ROI.hpp:108
CUDA_HOST ROI inflateROI(const ROI &roi, float factor)
Inflate the given ROI with the given factor.
Definition: ROI.hpp:205