Commit 72135a20 authored by André Anjos's avatar André Anjos 💬

More preprocessor changes

parent 4f0f8a5c
This diff is collapsed.
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
'''Base utilities for post-filtering vein images'''
import numpy
class Filter(object):
'''Objects of this class filter the input image'''
def __init__(self):
pass
def __call__(self, image, mask):
'''Inputs image and mask and outputs a filtered version of the image
Parameters:
image (numpy.ndarray): raw image to filter as 2D array of unsigned
8-bit integers
mask (numpy.ndarray): mask to normalize as 2D array of booleans
Returns:
numpy.ndarray: A 2D boolean array with the same shape and data type of
the input image representing the filtered image.
'''
raise NotImplemented('You must implement the __call__ slot')
class NoFilter(Filter):
'''Applies no filtering on the input image, returning it without changes'''
def __init__(self):
pass
def __call__(self, image, mask):
'''Inputs image and mask and outputs the image, without changes
Parameters:
image (numpy.ndarray): raw image to filter as 2D array of unsigned
8-bit integers
mask (numpy.ndarray): mask to normalize as 2D array of booleans
Returns:
numpy.ndarray: A 2D boolean array with the same shape and data type of
the input image representing the filtered image.
'''
return image
class HistogramEqualization(Filter):
'''Applies histogram equalization on the input image inside the mask.
In this implementation, only the pixels that lie inside the mask will be
used to calculate the histogram equalization parameters. Because of this
particularity, we don't use Bob's implementation for histogram equalization
and have one based exclusively on scikit-image.
'''
def __init__(self):
pass
def __call__(self, image, mask):
'''Applies histogram equalization on the input image, returns filtered
Parameters:
image (numpy.ndarray): raw image to filter as 2D array of unsigned
8-bit integers
mask (numpy.ndarray): mask to normalize as 2D array of booleans
Returns:
numpy.ndarray: A 2D boolean array with the same shape and data type of
the input image representing the filtered image.
'''
from skimage.exposure import equalize_hist
from skimage.exposure import rescale_intensity
retval = rescale_intensity(equalize_hist(image, mask=mask), out_range = (0, 255))
# make the parts outside the mask totally black
retval[~mask] = 0
return retval
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment