43 const float depth_min,
const float depth_max)
45 depth_min_(depth_min),
46 depth_max_(depth_max) {}
49 const float depth_max)
50 :
Mat<
float>(mat.GetWidth(), mat.GetHeight(), mat.GetDepth()),
51 depth_min_(depth_min),
52 depth_max_(depth_max) {
62 const size_t new_width = std::round(
width_ * factor);
63 const size_t new_height = std::round(
height_ * factor);
64 std::vector<float> new_data(new_width * new_height);
72 data_.shrink_to_fit();
79 const float factor_x =
static_cast<float>(max_width) /
width_;
80 const float factor_y =
static_cast<float>(max_height) /
height_;
81 Rescale(std::min(factor_x, factor_y));
85 const float max_percentile)
const {
92 std::vector<float> valid_depths;
93 valid_depths.reserve(
data_.size());
94 for (
const float depth :
data_) {
96 valid_depths.push_back(depth);
100 if (valid_depths.empty()) {
105 const float robust_depth_min =
Percentile(valid_depths, min_percentile);
106 const float robust_depth_max =
Percentile(valid_depths, max_percentile);
108 const float robust_depth_range = robust_depth_max - robust_depth_min;
111 const float depth =
Get(
y,
x);
113 const float robust_depth =
114 std::max(robust_depth_min, std::min(robust_depth_max, depth));
116 (robust_depth - robust_depth_min) / robust_depth_range;
bool SetPixel(const int x, const int y, const BitmapColor< uint8_t > &color)
void Fill(const BitmapColor< uint8_t > &color)
bool Allocate(const int width, const int height, const bool as_rgb)
static float Red(const float gray)
static float Blue(const float gray)
static float Green(const float gray)
void Downsize(const size_t max_width, const size_t max_height)
float Get(const size_t row, const size_t col) const
Bitmap ToBitmap(const float min_percentile, const float max_percentile) const
void Rescale(const float factor)
std::vector< float > data_
const std::vector< T > & GetData() const
void DownsampleImage(const float *data, const int rows, const int cols, const int new_rows, const int new_cols, float *downsampled)
T Percentile(const std::vector< T > &elems, const double p)