Normalization¶
This code snippet shows how to apply normalization.
C++¶
#include <eVision/EasyImage/EasyImage.h>
#include <cmath>
using namespace eVision;
EImageBW8 tooLightImage;
// 256 elements reserve
EBW8Vector lookupVector(256);
// 256 elements transformation
float gamma = 1.8f;
for (uint32_t i = 0; i < 256; i++)
{
// equivalent to a simple tone-mapper: 255 * (pixelValue / 255)^1.8
float newPixelValue = 255.0f * std::pow((float)i / 255.0f, gamma);
lookupVector.AddElement(static_cast<uint8_t>(newPixelValue));
}
// Transform the too light image
EImageBW8 outputImage;
outputImage.SetSize(&tooLightImage);
EasyImage::Lut(&tooLightImage, &outputImage, &lookupVector);
C#¶
using System;
using eVision;
using System.Collections.Generic;
EImageBW8 tooLightImage = new EImageBW8();
// 256 elements reserve
EBW8Vector lookupVector = new EBW8Vector(256);
// 256 elements transformation
float gamma = 1.8f;
for (int i = 0; i < 256; i++)
{
// equivalent to a simple tone-mapper: 255 * (pixelValue / 255)^1.8
var newPixelValue = 255.0f * Math.Pow(i / 255.0f, gamma);
lookupVector.AddElement(new EBW8((byte)(newPixelValue)));
}
// Transform the too light image
EImageBW8 outputImage = new EImageBW8();
outputImage.SetSize(tooLightImage);
EasyImage.Lut(tooLightImage, outputImage, lookupVector);
Python¶
import eVision
import math
tooLightImage = eVision.EImageBW8()
# 256 elements reserve
lookupVector = eVision.EBW8Vector(256)
# 256 elements transformation
gamma = 1.8
for i in range(0, 256):
# equivalent to a simple tone-mapper: 255 * (pixelValue / 255)^1.8
newPixelValue = eVision.EBW8(int(255.0 * math.pow(i / 255.0, gamma)))
lookupVector.AddElement(newPixelValue)
# Transform the too light image
outputImage = eVision.EImageBW8()
outputImage.SetSize(tooLightImage)
eVision.EasyImage.Lut(tooLightImage, outputImage, lookupVector)