Products & Services Solutions Academia Support User Community Company

Learn more about Video and Image Processing Blockset   

isfilterseparable - Determine whether filter coefficients are separable

Syntax

S = isfilterseparable(H)
[S, HCOL, HROW] = isfilterseparable(H)

Description

S = isfilterseparable(H) takes in the filter kernel H and returns 1 (true) when the filter is separable, and 0 (false) otherwise.

[S, HCOL, HROW] = isfilterseparable(H) uses the filter kernel, H, to return its vertical coefficients HCOL and horizontal coefficients HROW when the filter is separable. Otherwise, HCOL and HROW are empty.

Definition

Separable two dimensional filters

Separable two-dimensional filters reflect the outer product of two vectors. Separable filters help reduce the number of calculations required.

A two-dimensional convolution calculation requires (width*height) number of multiplications for each output pixel. The general case equation for a two-dimensional convolution is:

If the filter H is separable then,

Shifting the filter instead of the image, the two-dimensional equation becomes:

This calculation requires only (width + height) number of multiplications for each pixel.

Inputs

H

H numeric or logical, 2-D, and nonsparse.

Outputs

HCOL

HCOL is the same data type as input H when H is either single or double floating point. Otherwise, HCOL becomes double floating point. If S is true, HCOL is a vector of vertical filter coefficients. Otherwise, HCOL is empty.

HROW

HROW is the same data type as input H when H is either single or double floating point. Otherwise, HROW becomes double floating point. If S is true, HROW is a vector of horizontal filter coefficients. Otherwise, HROW is empty.

S

S is a logical variable that is true, when the filter is separable, and false, when it is not.

Examples

Determine if the Gaussian filter created using the fspecial function is separable.

% Create a gaussian filter
two_dimensional_filter = fspecial('gauss');
% Test with isfilterseparable
[isseparable, hcol, hrow] = isfilterseparable(two_dimensional_filter)

When you run this example, notice that hcol*hrow equals the two_dimensional_filter. This result is expected for a Gaussian filter.

Algorithm

The isfilterseparable function uses the singular value decomposition svd function to determine the rank of the matrix.

See Also

2-D FIR Filter | rank | svd

Related Links

  


Related Products & Applications

Learn more about Simulink through this collection of videos, articles, technical literature and the Getting Started with Simulink Guide.

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS