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