hip-1.5.6.0: Haskell Image Processing (HIP) Library.

Copyright (c) Alexey Kuleshevich 2017 BSD3 Alexey Kuleshevich experimental non-portable None Haskell2010

Graphics.Image.Processing.Filter

Description

Synopsis

# Filter

data Filter arr cs e Source #

Filter that can be applied to an image using applyFilter.

Since: 1.5.3

Constructors

 Filter (Image arr cs e -> Image arr cs e)

applyFilter :: Filter arr cs e -> Image arr cs e -> Image arr cs e Source #

Apply a filter to an image

data Direction Source #

Used to specify direction for some filters.

Constructors

 Vertical Horizontal

# Gaussian

Arguments

 :: (Array arr cs e, Array arr X e, Floating e, Fractional e) => Int Radius -> e Sigma -> Border (Pixel cs e) Border resolution technique. -> Filter arr cs e

Create a Gaussian Filter.

Since: 1.5.3

Arguments

 :: (Array arr cs e, Array arr X e, Floating e, RealFrac e) => e Sigma -> Filter arr cs e

Create a Gaussian Blur filter. Radius will be derived from standard deviation: ceiling (2*sigma) and Edge border resolution will be utilized. If custom radius and/or border resolution is desired, gaussianLowPass can be used instead.

Since: 1.5.3

# Sobel

sobelFilter :: (Array arr cs e, Array arr X e) => Direction -> Border (Pixel cs e) -> Filter arr cs e Source #

sobelOperator :: (Array arr cs e, Array arr X e, Floating e) => Image arr cs e -> Image arr cs e Source #

# Prewitt

prewittFilter :: (Array arr cs e, Array arr X e) => Direction -> Border (Pixel cs e) -> Filter arr cs e Source #

prewittOperator :: (Array arr cs e, Array arr X e, Floating e) => Image arr cs e -> Image arr cs e Source #

# Laplacian

laplacianFilter :: (Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e Source #

The Laplacian of an image highlights regions of rapid intensity change and is therefore often used for edge detection. It is often applied to an image that has first been smoothed with something approximating a Gaussian smoothing filter in order to reduce its sensitivity to noise. More info about the algo at https://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

# Laplacian of Gaussian

logFilter :: (Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e Source #

'Laplacian of Gaussian' (LOG) filter is a two step process of smoothing an image before applying some derivative filter on it. This comes in need for reducing the noise sensitivity while working with noisy datasets or in case of approximating second derivative measurements.

The LoG operator takes the second derivative of the image. Where the image is basically uniform, the LoG will give zero. Wherever a change occurs, the LoG will give a positive response on the darker side and a negative response on the lighter side. More info about the algo at https://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

# Gaussian Smoothing

gaussianSmoothingFilter :: (Fractional e, Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e Source #

The Gaussian smoothing operator is a 2-D convolution operator that is used to blur images and remove detail and noise. The idea of Gaussian smoothing is to use this 2-D distribution as a `point-spread' function, and this is achieved by convolution. Since the image is stored as a collection of discrete pixels we need to produce a discrete approximation to the Gaussian function before we can perform the convolution. More info about the algo at https://homepages.inf.ed.ac.uk/rbf/HIPR2/gsmooth.htm

# Mean

meanFilter :: (Fractional e, Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e Source #

The mean filter is a simple sliding-window spatial filter that replaces the center value in the window with the average (mean) of all the pixel values in the window. The window, or kernel, can be any shape, but this one uses the most common 3x3 square kernel. More info about the algo at http://homepages.inf.ed.ac.uk/rbf/HIPR2/mean.htm