Image Processing with Python: Glossary

Key Points

Introduction
  • Simple Python and OpenCV techniques can be used to solve genuine morphometric and colorimetric problems.

  • Morphometric problems involve the number, shape, and / or size of the objects in an image.

  • Colorimetric problems involve analyzing the color of the objects in an image.

Image Basics
  • Digital images are represented as rectangular arrays of square pixels.

  • Digital images use a left-hand coordinate system, with the origin in the upper left corner, the x-axis running to the right, and the y-axis running down.

  • Most frequently, digital images use an additive RGB model, with eight bits for the red, green, and blue channels.

  • Lossless compression retains all the details in an image, but lossy compression results in loss of some of the original image detail.

  • BMP images are uncompressed, meaning they have high quality but also that their file sizes are large.

  • JPEG images use lossy compression, meaning that their file sizes are smaller, but image quality may suffer.

  • TIFF images can be uncompressed or compressed with lossy or lossless compression.

  • Depending on the camera or sensor, various useful pieces of information may be stored in an image file, in the image metadata.

OpenCV Images
  • OpenCV images are stored as three-dimensional NumPy arrays.

  • In OpenCV images, the blue channel is specified first, then the green, then the red, i.e., BGR instead of RGB.

  • Images are read from disk with the cv2.imread() function.

  • We create a sizable window that automatically scales the displayed image with the cv2.namedWindow() function.

  • We cause an image to be displayed in a window with the cv2.imshow() function.

  • We cause our program to pause until we press a key with the cv2.waitKey(0) function call.

  • We can resize images with the cv2.resize() function.

  • NumPy array commands, like img[img < 128] = 0, and be used to manipulate the pixels of an OpenCV image.

  • Command-line arguments are accessed via the sys.argv list; sys.argv[1] is the first parameter passed to the program, sys.argv[2] is the second, and so on.

  • Array slicing can be used to extract sub-images or modify areas of OpenCV images, e.g., clip = img[60:150, 135:480, :].

  • Metadata is not retained when images are loaded as OpenCV images.

Drawing and Bitwise Operations
  • We can use the NumPy zeros() function to create a blank, black image.

  • We can draw on OpenCV images with functions such as cv2.rectangle(), cv2.circle(), cv2.line(), and more.

  • We can use the cv2.bitwise_and() function to apply a mask to an image.

Creating Histograms
  • We can load images in grayscale by passing the cv2.IMREAD_GRAYSCALE parameter to the cv2.imread() function.

  • We can create histograms of OpenCV images with the cv2.calcHist() function.

  • We can separate the RGB channels of an image with the cv2.split() function.

  • We can display histograms using the matplotlib pyplot figure(), title(), xlabel(), ylabel(), xlim(), plot(), and show() functions.

Blurring images
  • Applying a low-pass blurring filter smooths edges and removes noise from an image.

  • Blurring is often used as a first step before we perform Thresholding, Edge Detection, or before we find the Contours of an image.

  • The Gaussian blur can be applied to an image with the cv2.GaussianBlur() function.

  • The blur kernel for the Gaussian blur function should be odd.

  • Larger blur kernels may remove more noise, but they will also remove detail from and image.

  • The int() function can be used to parse a string into an integer.

Thresholding
  • Thresholding produces a binary image, where all pixels with intensities above (or below) a threshold value are turned on, while all other pixels are turned off.

  • The binary images produced by thresholding are held in two-dimensional NumPy arrays, since they have only one color value channel.

  • The cv2.merge() function can be used to combine three single-channel image layers into a single, color image.

  • Thresholding can be used to create masks that select only the interesting parts of an image, or as the first step before Edge Detection or finding Contours.

  • Depending on its parameters, the cv2.threshold() function can perform simple fixed-level thresholding or adaptive thresholding.

Edge Detection
  • The cv2.createTrackbar() function is used to create trackbars on windows that have been created by our programs.

  • We use Python functions as callbacks when we create trackbars using cv2.createTrackbar().

  • Use the Python global keyword to indicate variables referenced inside functions that are global variables, i.e., variables that are first declared in other parts of the program.

Contours
  • Contours are closed curves of points or line segments, representing the boundaries of objects in an image.

Challenges
  • What are the key points?

Glossary

adaptive thresholding
additive color model
a color model that predicts the appearance of colors by summing the numeric representations of the component colors
bacterial colony
a visible cluster of bacteria growing on the surface of or within a solid medium, presumably cultured from a single cell
binary image
a digital image that has only two possible values for each pixel. Typically, the two colors used for a binary image are black and white.
Gaussian blur
a widely used effect in graphics software, typically to reduce image noise and reduce detail
BMP (bitmap image file)
a raster graphics image file format used to store bitmap digital images, independently of the display device
bounding box
the smallest enclosing box for a set of points
colorimetrics
the science of describing human color perception
channel
the grayscale representation of a primary color in a digital image
contour
child (in contours)
crop
the removal of unwanted outer areas from an image
color histogram
a representation of the number of pixels that have colors in each of a fixed list of color ranges
edge detection
a variety of mathematical methods that aim at identifying points in a digital image at which the image brightness changes sharply
fixed-level thresholding
picking a constant cut-off value to distinguish between pixels considered “on” and “off”
grayscale
an image in which the value of each pixel is a single value representing only the amount of light (or intensity) of that pixel
image segmentation
the process of partitioning a digital image into multiple segments to make the image more meaningful and easier to analyze
intensity
value corresponding to amount of light in a pixel
JPEG
a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography
kernel
a small matrix. It is used for blurring, sharpening, embossing, edge detection, and more
left-hand coordinate system
lossy compression
a class of data encoding methods that uses inexact approximations and partial data discarding to represent the content
lossless compression
a class of data compression algorithms that allows the original data to be perfectly reconstructed from the compressed data
maize
also known as corn
mask
applied to digital images to “cut-out” the background or other unwanted features
morphometrics
the quantitative analysis of form, a concept that encompasses size and shape
noise
random variation of brightness or color information in images. An undesirable by-product of image capture that obscures the desired information.
parent (in contours)
raster graphics
a dot matrix data structure that represents a generally rectangular grid of pixels
RGB color model
an additive color model in which red, green and blue light are added together in various ways to reproduce a broad array of colors. The name of the model comes from the initials of the three additive primary colors, red, green, and blue.
root (in contours)
thresholding
the simplest method of image segmentation. From a grayscale image, thresholding can be used to create binary images
TIFF (Tagged Image File Format)
a computer file format for storing raster graphics images; also abbreviated TIF
titration
a common laboratory method of quantitative chemical analysis to determine the concentration of an identified analyte (a substance to be analyzed)