## Prerequisites

Before starting this lesson, you should be familiar with:

## Learning Objectives

After completing this lesson, learners should be able to:
• Understand how the numerical values in an image are transformed into colourful images.

• Understand what a lookup table (LUT) is and how to adjust it.

• Appreciate that choosing the correct LUT is a very serious responsibility when preparing images for a talk or publication.

## Motivation

Images are a collection of a lot (millions) of values, which is information that is hard to process for our human brains. Thus, one typically assigns a color to each distinct value, by means of a lookup table (LUT). There is no fix recipe for how to adjust this mapping from numbers to colors. It is easy to chose a mapping that hides certain information in an image, while emphasising other information. Thus, configuring this mapping properly is a great responsibility that scientists have to take on when presenting their image data.

## Concept map

graph TD V("Pixel value") --> L("Lookup table (LUT)") L --> |does not change|V L --> C("Color & Brightness") L -->|often is| A("Adjustable")

## Activities

#### Explore LUTs

• Open the image xy_8bit__nuclei_high_dynamic_range.tif
• Explore different contrast settings
• Observe that there are very dim nuclei
• Observe that LUT settings do not change pixel values
• Explore various single color LUTs (e.g., gray, green, red, blue)
• Understand that gray is the recommended default
• Understand that certain LUTs such as red and blue should be avoided
• Explore various multi color LUTs, which can be helpful to
• highlight extreme values
• render high dynamic range data without “clipping information”
• Visualise the LUT itself, e.g. as an inset in the image
• Understand that this is especially important for multi-color LUTs where the mapping from the displayed color to the numeric data is not obvious

Show activity for:

## ImageJ GUI

• Open an image
• Change the contrast settings
• [ Image › Adjust › Brightness/Contrast… ]
• Explore different min and max values
• Appreciate that at certain settings a very dim nucleus becomes visible
• Check that the pixel values did not change
• Never click [ Apply ]
• Explore various single color LUTs, e.g.
• [ Image › Lookup Tables › Green ]
• [ Image › Lookup Tables › Blue ]
• [ Image › Lookup Tables › Red ]
• Avoid red! 15% of males cannot see anything here!
• Magenta can be a better alternative.
• Explore various multi color LUTs, e.g.
• [ Image › Lookup Tables › Fire ]
• Good for this high-dynamic range image
• [ Image › Lookup Tables › HiLo ]
• Good to see extreme values
• Show the LUT
• Especially useful for multi-color LUTs
• [ Analyze › Tools › Calibration Bar… ]
• Explore the various settings

## skimage napari

#### Configure LUTs

Open those two image:

Display the images with the same gray scale LUT and the same LUT settings (this is what one typically should do for a presentation or publication). Visualise the LUT as an inset in both images.

Show activity for:

## ImageJ GUI

• Open the files by drag and drop or first download and then [File > Open …]
• Choose a suitable LUT [Image › Lookup Tables › … ]
• Adjust brightness and contrast [ Image › Adjust › Brightness/Contrast… ]
• Use the [ Set ] button in [ Image › Adjust › Brightness/Contrast… ] and check “[X] propagate to …”
• Visualise the LUT as an inset in both images using [Analyze › Tools › Calibration Bar…]

## Calculate the brightness:

Use the formula and explanations given in “single color lookup tables” section below.

1. `value = 49, min = 10, max = 50, brightness = ?`
2. `value = 100, min = 0, max = 65, brightness = ?`
3. `value = 10, min = 20, max = 65, brightness = ?`

## Solution

1. `0.975`
2. `1.538 ( -> 1 )`
3. `-0.15 ( -> 0 )`

### Fill in the blanks

Fill in the blanks using those words: larger than, smaller than

1. Pixels with values _____ `max` will appear saturated.
2. Pixels with values _____ the `min` will appear black (using a single color LUT).

## Solution

1. larger than
2. smaller than

## Explanations

Lookup tables do the mapping from a numeric pixel value to a color. This is the main mechanism how we visualise microscopy image data. In case of doubt, it is always a good idea to show the mapping as an inset in the image (or next to the image).

#### Single color lookup tables

Single color lookup tables are typically configured by chosing one color such as, e.g., grey or green, and choosing a `min` and `max` value that determine the brightness of this color depending on the `value` of the respective pixel in the following way:

`brightness( value ) = ( value - min ) / ( max - min )`

In this formula, 1 corresponds to the maximal brightness and 0 corresponds to the minimal brightness that, e.g., your computer monitor can produce.

Depending on the values of `value`, `min` and `max` it can be that the formula yields values that are less than 0 or larger than 1. This is handled by assinging a brightness of 0 even if the formula yields values < 0 and assigning a brightness of 1 even if the formula yields values larger than `1`. In such cases one speaks of “clipping”, because one looses (“clips”) information about the pixel value (see below for an example).

##### Clipping example

`min = 20, max = 100, v1 = 100, v2 = 200`

`brightness( v1 ) = ( 100 - 20 ) / ( 100 - 20 ) = 1`

`brightness( v2 ) = ( 200 - 20 ) / ( 100 - 20 ) = 2.25`

Both pixel values will be painted with the same brightness as a brightness larger than `1` is not possible (see above).

#### Multi color lookup tables

As the name suggestes multi color lookup tables map pixel gray values to different colors.

For example:

`0 -> black`

`1 -> green`

`2 -> blue`

`3 -> ...`

Typical use cases for multi color LUTs are images of a high dynamic range (large differences in gray values) and label mask images (where the pixel values encode object IDs).

Sometimes, also multi color LUTs can be configured in terms of a `min` and `max` value. The reason is that multi colors LUTs only have a limited amount of colors, e.g. 256 different colors. For instance, if you have an image that contains a pixel with a value of 300 it is not immediately obvious which color it should get; the `min` and `max` settings allow you to configure how to map your larger value range into a limited amount of colors.

## Follow-up material

Recommended follow-up modules: