One of the basic functions for binary images (containing TRUE and FALSE pixels) are the boolean operators useful to manipulate this kind of images.

#### 1- Boolean operators

Fig.1: Image A |

Then, load these two images in ImageJ with

*File > Open*.

Check that your images are 8-bit and only contain black (value = 0) and white (value=255) pixels because boolean operators are only working with binary (boolean) images (containing two types of pixels: TRUE and FALSE).

Fig.2: Image B |

**Note**: To convert an image in a binary image, use a threshold value to partition your image in two types of pixels (

*Image > Adjust > Threshold*) or if your image is still in black and white, go to

*Process > Binary > Make Binary*.

##### 1-1- AND, OR, XOR operators

All types of calculation between images are available in*Process > Image Calculator...*

- Select image 'A' as image 1 and 'B' as image 2, then choose the AND operator (don't be confused with the 'Add' operator) in the combo list.

-Repeat the calculations with OR and XOR (exclusive OR). You'll get the images shown in Fig.3.

Fig.3: Result of AND, OR, and XOR respectively |

Fig.4: AND, OR, XOR operators |

**AND**: The resulting pixel is TRUE if and only if a pixel of 'A' is TRUE *and* the other of 'B' is TRUE.**OR**: The resulting pixel is TRUE if and only if a pixel is TRUE *or* the other is TRUE *or* both are TRUE.**XOR**(for exclusive OR); The resulting pixel is TRUE if and only if a pixel is TRUE *or* the other is TRUE but not when the two pixels are TRUE.

##### 1-2- NOT operator

Fig. 5: Result of NOT(A) calculated with Edit > Invert |

*vice versa*) of the original image.

In ImageJ, there is no NOT operator, however you can use the

*Edit > Invert*function to get the same result.

##### 1-3- Exercises

Try to find out what kind of boolean operator(s) are used to get these three images. Following the approach described in 1-1, fill the array of TRUE/FALSE and then, interpret this array in terms of boolean operations.**Tips**: The left and right images are computed from images 'A' and 'B'. The middle image is only calculated from image 'A'.

Fig. 6: Three resulting images obtained by the use of various boolean operators. |

#### 2- Applications

The boolean operators are useful when one of the image acts as a mask to remove or highlight objects of interest.

Here is an example based on the analysis of the sample image 'blobs' (

*File > Open Samples > Blobs (25K)*).

After binarization (

*Process > Binary > Make Binary*) , an

*Analyze > Analyze Particles...*is run by choosing a size range of 400-Infinity and the display mode 'Masks'. The resulting image of Fig. 6B is created.

To get the blobs whose size is less than 400, you can re-run a new

*Analyze Particles*with a size range of 0-400 or just calculate a XOR image between the binary image and the mask (Fig. 6C).

Note: Why a XOR? That's seems puzzling, but after the binarization, the image is in 'Inverted LUT' mode, thus black becomes TRUE and white, FALSE. In these conditions, a blob (in black and TRUE) present in both images disappear in the XOR image (TRUE XOR TRUE = FALSE).

Fig. 6: A) Binary image of blobs.gif; B) Mask after Analyze Particles. C) A XOR B to get the smallest blobs. These images are in 'Inverted LUT' mode. |

#### 3- Links

Several mini-games of crazybiocomputing are based on boolean operators:

## No comments:

## Post a Comment