26 throw std::invalid_argument(
"Null image given");
29 img->allocate(image->width(), image->height(), image->channels());
30 for (int64_t i = 0; i < image->get_value_amount(); ++i)
32 float value = (float)image->at(i) / 255.0f;
33 img->at(i) = std::min(1.0f, std::max(0.0f, value));
44 throw std::invalid_argument(
"Null image given");
47 img->allocate(image->width(), image->height(), image->channels());
48 for (int64_t i = 0; i < image->get_value_amount(); ++i)
50 double value =
static_cast<double>(image->at(i)) / 255.0;
51 img->at(i) = std::min(1.0, std::max(0.0, value));
62 throw std::invalid_argument(
"Null image given");
65 img->allocate(image->width(), image->height(), image->channels());
66 for (int64_t i = 0; i < image->get_value_amount(); ++i)
68 float value = std::min(vmax, std::max(vmin, image->at(i)));
69 value = 255.0f * (value - vmin) / (vmax - vmin);
70 img->at(i) =
static_cast<uint8_t
>(value + 0.5f);
81 throw std::invalid_argument(
"Null image given");
84 img->allocate(image->width(), image->height(), image->channels());
85 for (int64_t i = 0; i < image->get_value_amount(); ++i)
87 double value = std::min(vmax, std::max(vmin, image->at(i)));
88 value = 255.0 * (value - vmin) / (vmax - vmin);
89 img->at(i) =
static_cast<uint8_t
>(value + 0.5);
100 throw std::invalid_argument(
"Null image given");
103 img->allocate(image->width(), image->height(), image->channels());
104 for (int64_t i = 0; i < image->get_value_amount(); ++i)
106 img->at(i) =
math::clamp(std::abs(image->at(i)), 0, 255);
116 if (image ==
nullptr)
117 throw std::invalid_argument(
"Null image given");
120 img->allocate(image->width(), image->height(), image->channels());
121 for (int64_t i = 0; i < image->get_value_amount(); ++i)
123 uint16_t value = std::min(vmax, std::max(vmin, image->at(i)));
124 value = 255.0 *
static_cast<double>(value - vmin)
125 /
static_cast<double>(vmax - vmin);
126 img->at(i) =
static_cast<uint8_t
>(value + 0.5);
136 if (image ==
nullptr)
137 throw std::invalid_argument(
"Null image given");
140 img->allocate(image->width(), image->height(), image->channels());
141 for (int64_t i = 0; i < image->get_value_amount(); ++i)
143 float const value =
static_cast<float>(image->at(i)) / 65535.0f;
144 img->at(i) = std::min(1.0f, std::max(0.0f, value));
154 if (image ==
nullptr)
155 throw std::invalid_argument(
"Null image given");
158 find_min_max_value<float>(image, &vmin, &vmax);
164 for (
float* ptr = image->begin(); ptr != image->end(); ++ptr)
165 *ptr = (*ptr - vmin) / (vmax - vmin);
173 if (image ==
nullptr)
174 throw std::invalid_argument(
"Null image given");
177 for (int64_t i = 0; i < 256; ++i)
178 lookup[i] =
static_cast<uint8_t
>(std::pow(i / 255.0f, power)
180 for (int64_t i = 0; i < image->get_value_amount(); ++i)
181 image->at(i) = lookup[image->at(i)];
std::shared_ptr< Image< T > > Ptr
std::shared_ptr< Image< T > const > ConstPtr
#define MVE_IMAGE_NAMESPACE_END
#define MVE_NAMESPACE_BEGIN
#define MVE_IMAGE_NAMESPACE_BEGIN
#define MVE_NAMESPACE_END
T const & clamp(T const &v, T const &min=T(0), T const &max=T(1))
Returns value 'v' clamped to the interval specified by 'min' and 'max'.
FloatImage::Ptr byte_to_float_image(ByteImage::ConstPtr image)
Converts a given byte image to a float image.
ByteImage::Ptr int_to_byte_image(IntImage::ConstPtr image)
Convertes a given int image to a byte image.
DoubleImage::Ptr byte_to_double_image(ByteImage::ConstPtr image)
Converts a given byte image to a double image.
ByteImage::Ptr float_to_byte_image(FloatImage::ConstPtr image, float vmin, float vmax)
Converts a given float image to a byte image.
void float_image_normalize(FloatImage::Ptr image)
Normalizes a float image IN-PLACE such that all values are [0, 1].
ByteImage::Ptr double_to_byte_image(DoubleImage::ConstPtr image, double vmin, double vmax)
Converts a given double image to a byte image.
void gamma_correct(ByteImage::Ptr image, float power)
Applies fast gamma correction to byte image using a lookup table.
ByteImage::Ptr raw_to_byte_image(RawImage::ConstPtr image, uint16_t vmin, uint16_t vmax)
Converts a given raw image to a byte image.
FloatImage::Ptr raw_to_float_image(RawImage::ConstPtr image)
Converts a given raw image to a float image.