# Normalization

This code snippet shows how to apply normalization.

## C++

```cpp
#include <eVision/EasyImage/EasyImage.h>
#include <cmath>
```

```cpp
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#

```cs
using System;
using eVision;
using System.Collections.Generic;
```

```cs
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

```py
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)
```
