#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 31 09:50:47 2020
Custom filters for cleaning/blurring images.
@author: Pawel M. Kozlowski
"""
import numpy as np
from scipy import ndimage
# listing all functions declared in this file so that sphinx-automodapi
# correctly documents them and doesn't document imported functions.
__all__ = ["boxFilter",
]
[docs]def boxFilter(img, boxSize=2):
"""
Applies a symmetric box filter to blur the image. A box filter
approaches a Gaussian filter for large number of filterings, but
at smaller kernel sizes it causes less blur. Convolution is
handled using scipy.ndimage.convolve, and edges condition is 'reflect'.
img : numpy.ndarray
2D numpy array of the image to be filtered.
boxSize : int
Length in pixels of the side of the box. The box is symmetric.
Default size 2 pixels by 2 pixels.
filteredImg : numpy.ndarray
Box filtered image returned as a 2D numpy array.
"""
boxKernel = np.ones((boxSize, boxSize)) / boxSize ** 2
filteredImg = ndimage.convolve(img, boxKernel, mode='reflect')
return filteredImg