Jump into filtering
IMAGE PROCESSING IN PYTHON
Rebeca Gonzalez
Data Engineer
Filters
Enhancing an image
Emphasize or remove features
Smoothing
Sharpening
Edge detection
IMAGE PROCESSING IN PYTHON
Neighborhoods
IMAGE PROCESSING IN PYTHON
Edge detection
IMAGE PROCESSING IN PYTHON
Edge detection
IMAGE PROCESSING IN PYTHON
Edge detection
Sobel
# Import module and function
from [Link] import sobel
# Apply edge detection filter
edge_sobel = sobel(image_coins)
# Show original and resulting image to compare
plot_comparison(image_coins, edge_sobel, "Edge with Sobel")
IMAGE PROCESSING IN PYTHON
Edge detection
Sobel
IMAGE PROCESSING IN PYTHON
Comparing plots
def plot_comparison(original, filtered, title_filtered):
fig, (ax1, ax2) = [Link](ncols=2, figsize=(8, 6), sharex=True,
sharey=True)
[Link](original, cmap=[Link])
ax1.set_title('original')
[Link]('off')
[Link](filtered, cmap=[Link])
ax2.set_title(title_filtered)
[Link]('off')
IMAGE PROCESSING IN PYTHON
Gaussian smoothing
IMAGE PROCESSING IN PYTHON
Gaussian smoothing
IMAGE PROCESSING IN PYTHON
Gaussian smoothing
# Import the module and function
from [Link] import gaussian
# Apply edge detection filter
gaussian_image = gaussian(amsterdam_pic, multichannel=True)
# Show original and resulting image to compare
plot_comparison(amsterdam_pic, gaussian_image, "Blurred with Gaussian filter")
IMAGE PROCESSING IN PYTHON
Gaussian smoothing
IMAGE PROCESSING IN PYTHON
Gaussian smoothing
IMAGE PROCESSING IN PYTHON
Let's practice!
IMAGE PROCESSING IN PYTHON
Contrast
enhancement
IMAGE PROCESSING IN PYTHON
Rebeca Gonzalez
Data engineer
Contrast enhancement
IMAGE PROCESSING IN PYTHON
Contrast
Histograms for contrast enhancement
IMAGE PROCESSING IN PYTHON
Contrast
IMAGE PROCESSING IN PYTHON
Enhance contrast
Contrast stretching
Histogram equalization
IMAGE PROCESSING IN PYTHON
Types
Histogram equalization
Adaptive histogram equalization
Contrast Limited Adaptive Histogram Equalization (CLAHE)
IMAGE PROCESSING IN PYTHON
Histogram equalization
IMAGE PROCESSING IN PYTHON
Histogram equalization
IMAGE PROCESSING IN PYTHON
Histogram equalization
from skimage import exposure
# Obtain the equalized image
image_eq = exposure.equalize_hist(image)
# Show original and result
show_image(image, 'Original')
show_image(image_eq, 'Histogram equalized')
IMAGE PROCESSING IN PYTHON
Histogram equalization
IMAGE PROCESSING IN PYTHON
Adaptive Equalization
Contrastive Limited Adaptive Histogram Equalization
IMAGE PROCESSING IN PYTHON
Contrastive Limited Adaptive Equalization
IMAGE PROCESSING IN PYTHON
CLAHE in scikit-image
from skimage import exposure
# Apply adaptive Equalization
image_adapteq = exposure.equalize_adapthist(image, clip_limit=0.03)
# Show original and result
show_image(image, 'Original')
show_image(image_adapteq, 'Adaptive equalized')
IMAGE PROCESSING IN PYTHON
CLAHE in scikit-image
IMAGE PROCESSING IN PYTHON
Let's practice!
IMAGE PROCESSING IN PYTHON
Transformations
IMAGE PROCESSING IN PYTHON
Rebeca Gonzalez
Data Engineer
Why transform images?
Preparing images for classification Machine Learning models
Optimization and compression of images
Save images with same proportion
IMAGE PROCESSING IN PYTHON
Rotating
IMAGE PROCESSING IN PYTHON
Rotating
IMAGE PROCESSING IN PYTHON
Rotating clockwise
from [Link] import rotate
# Rotate the image 90 degrees clockwise
image_rotated = rotate(image, -90)
show_image(image, 'Original')
show_image(image_rotated, 'Rotated 90 degrees clockwise')
IMAGE PROCESSING IN PYTHON
Rotating anticlockwise
from [Link] import rotate
# Rotate an image 90 degrees anticlockwise
image_rotated = rotate(image, 90)
show_image(image, 'Original')
show_image(image_rotated, 'Rotated 90 degrees anticlockwise')
IMAGE PROCESSING IN PYTHON
Rescaling
IMAGE PROCESSING IN PYTHON
Rescaling
Downgrading
from [Link] import rescale
# Rescale the image to be 4 times smaller
image_rescaled = rescale(image, 1/4, anti_aliasing=True, multichannel=True)
show_image(image, 'Original image')
show_image(image_rescaled, 'Rescaled image')
IMAGE PROCESSING IN PYTHON
Rescaling
IMAGE PROCESSING IN PYTHON
Aliasing in digital images
IMAGE PROCESSING IN PYTHON
Aliasing in digital images
IMAGE PROCESSING IN PYTHON
Resizing
IMAGE PROCESSING IN PYTHON
Resizing
from [Link] import resize
# Height and width to resize
height = 400
width = 500
# Resize image
image_resized = resize(image, (height, width), anti_aliasing=True)
# Show the original and resulting images
show_image(image, 'Original image')
show_image(image_resized, 'Resized image')
IMAGE PROCESSING IN PYTHON
Resizing
IMAGE PROCESSING IN PYTHON
Resizing proportionally
from [Link] import resize
# Set proportional height so its 4 times its size
height = [Link][0] / 4
width = [Link][1] / 4
# Resize image
image_resized = resize(image, (height, width), anti_aliasing=True)
show_image(image_resized, 'Resized image')
IMAGE PROCESSING IN PYTHON
Resizing proportionally
IMAGE PROCESSING IN PYTHON
Let's practice!
IMAGE PROCESSING IN PYTHON
Morphology
IMAGE PROCESSING IN PYTHON
Rebeca Gonzalez
Data Engineer
Binary images
IMAGE PROCESSING IN PYTHON
Morphological filtering
Better for binary images
Can extend for grayscale
IMAGE PROCESSING IN PYTHON
Morphological operations
Dilation
Erosion
IMAGE PROCESSING IN PYTHON
Structuring element
IMAGE PROCESSING IN PYTHON
Structuring element
IMAGE PROCESSING IN PYTHON
Shapes in scikit-image
from skimage import morphology rectangle = [Link](4, 2)
square = [Link](4) [[1 1]
[1 1]
[[1 1 1 1] [1 1]
[1 1 1 1] [1 1]]
[1 1 1 1]
[1 1 1 1]]
IMAGE PROCESSING IN PYTHON
Erosion in scikit-image
from skimage import morphology
# Set structuring element to the rectangular-shaped
selem = rectangle(12,6)
# Obtain the erosed image with binary erosion
eroded_image = morphology.binary_erosion(image_horse, selem=selem)
IMAGE PROCESSING IN PYTHON
Erosion in scikit-image
# Show result
plot_comparison(image_horse, eroded_image, 'Erosion')
IMAGE PROCESSING IN PYTHON
Binary erosion with default selem
# Binary erosion with default selem
eroded_image = morphology.binary_erosion(image_horse)
IMAGE PROCESSING IN PYTHON
Dilation in scikit-image
from skimage import morphology
# Obtain dilated image, using binary dilation
dilated_image = morphology.binary_dilation(image_horse)
# See results
plot_comparison(image_horse, dilated_image, 'Erosion')
IMAGE PROCESSING IN PYTHON
Dilation in scikit-image
IMAGE PROCESSING IN PYTHON
Let's practice!
IMAGE PROCESSING IN PYTHON