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