Image Processing in Python
Rebeca Gonzalez
Data Engineer
Partitioning an image into a foreground and background
By making it black and white
We do so by setting each pixel to:

Simplest method of image segmentation

Only from grayscale images

# Obtain the optimal threshold value thresh = 127# Apply thresholding to the image binary = image > thresh# Show the original and thresholded show_image(image, 'Original') show_image(binary, 'Thresholded')

# Obtain the optimal threshold value thresh = 127# Apply thresholding to the image inverted_binary = image <= thresh# Show the original and thresholded show_image(image, 'Original') show_image(inverted_binary, 'Inverted thresholded')

Global or histogram based: good for uniform backgrounds
Local or adaptive: for uneven background illumination

from skimage.filters import try_all_threshold# Obtain all the resulting images fig, ax = try_all_threshold(image, verbose=False)# Showing resulting plots show_plot(fig, ax)

# Import the otsu threshold function from skimage.filters import threshold_otsu# Obtain the optimal threshold value thresh = threshold_otsu(image)# Apply thresholding to the image binary_global = image > thresh
# Show the original and binarized image
show_image(image, 'Original')
show_image(binary_global, 'Global thresholding')

# Import the local threshold function from skimage.filters import threshold_local# Set the block size to 35 block_size = 35# Obtain the optimal local thresholding local_thresh = threshold_local(text_image, block_size, offset=10)# Apply local thresholding and obtain the binary image binary_local = text_image > local_thresh
# Show the original and binarized image
show_image(text_image, 'Original')
show_image(binary_local, 'Local thresholding')

Image Processing in Python