Fix colors in the X-ray points processor. (#460)

mean_..._in_column was broken in #423.
master
Wolfgang Hess 2017-08-17 18:07:33 +02:00 committed by GitHub
parent 9498cc90ca
commit c29fec3dd0
2 changed files with 11 additions and 19 deletions

View File

@ -35,15 +35,15 @@ namespace {
struct PixelData { struct PixelData {
size_t num_occupied_cells_in_column = 0; size_t num_occupied_cells_in_column = 0;
double mean_r = 0.; float mean_r = 0.;
double mean_g = 0.; float mean_g = 0.;
double mean_b = 0.; float mean_b = 0.;
}; };
using PixelDataMatrix = using PixelDataMatrix =
Eigen::Matrix<PixelData, Eigen::Dynamic, Eigen::Dynamic>; Eigen::Matrix<PixelData, Eigen::Dynamic, Eigen::Dynamic>;
double Mix(const double a, const double b, const double t) { float Mix(const float a, const float b, const float t) {
return a * (1. - t) + t * b; return a * (1. - t) + t * b;
} }
@ -74,18 +74,10 @@ Image IntoImage(const PixelDataMatrix& mat) {
// details like chairs and tables are still well visible. // details like chairs and tables are still well visible.
const float saturation = const float saturation =
std::log(cell.num_occupied_cells_in_column) / max; std::log(cell.num_occupied_cells_in_column) / max;
double mean_r_in_column = (cell.mean_r / 255.); const FloatColor color = {{Mix(1.f, cell.mean_r, saturation),
double mean_g_in_column = (cell.mean_g / 255.); Mix(1.f, cell.mean_g, saturation),
double mean_b_in_column = (cell.mean_b / 255.); Mix(1.f, cell.mean_b, saturation)}};
image.SetPixel(x, y, ToUint8Color(color));
double mix_r = Mix(1., mean_r_in_column, saturation);
double mix_g = Mix(1., mean_g_in_column, saturation);
double mix_b = Mix(1., mean_b_in_column, saturation);
image.SetPixel(
x, y,
{{FloatComponentToUint8(mix_r), FloatComponentToUint8(mix_g),
FloatComponentToUint8(mix_b)}});
} }
} }
return image; return image;

View File

@ -58,9 +58,9 @@ class XRayPointsProcessor : public PointsProcessor {
private: private:
struct ColumnData { struct ColumnData {
double sum_r = 0.; float sum_r = 0.;
double sum_g = 0.; float sum_g = 0.;
double sum_b = 0.; float sum_b = 0.;
uint32_t count = 0; uint32_t count = 0;
}; };