Source code for magni.imaging.dictionaries._visualisations

"""
..
    Copyright (c) 2014-2017, Magni developers.
    All rights reserved.
    See LICENSE.rst for further information.

Module providing functionality for visualising dictionary coefficients.

Routine listings
----------------
visualise_DCT(shape)
    Function for visualising DCT coefficients.
visualise_DFT(shape)
    Function for visualising DFT coefficients.

"""

from __future__ import division

import numpy as np

from magni.imaging import vec2mat as _vec2mat


[docs]def visualise_DCT(shape): """ Return utilities for visualising DCT coefficients. A handle to a function to transform the coefficients into a 'displayable' format is returned along with a tuple of ranges of the axes in the 2D coefficient plane. Parameters ---------- shape : tuple The shape of the 2D DCT being visualised. Returns ------- display_coefficients : Function The function used to transform coefficients into a 'displayable' format. axes_extent : tuple The ranges of the axes in the 2D coefficient plane. Notes ----- The display_coefficients function takes log10 to the absolute value of the transform cofficient vector given to it as an argument. The returned displayable coefficients is a matrix. The axes_extent consists of (abcissa_min, abcissa_max, ordinate_min, ordinate_max). """ h, w = shape def display_coefficients(x): return np.log10(np.abs(_vec2mat(x, (h, w)))) axes_extent = (0, w - 1, h - 1, 0) return display_coefficients, axes_extent
[docs]def visualise_DFT(shape): """ Return utilities for visualising DFT coefficients. A handle to a function to transform the coefficients into a 'displayable' format is returned along with a tuple of ranges of the axes in the 2D coefficient plane. Parameters ---------- shape : tuple The shape of the 2D DFT being visualised. Returns ------- display_coefficients : Function The function used to transform coefficients into a 'displayable' format. axes_extent : tuple The ranges of the axes in the 2D coefficient plane. Notes ----- The display_coefficients function takes log10 to the absolute value of the transform cofficient vector given to it as an argument. The returned displayable coefficients is a matrix that is flipped up/down and fftshifted. The axes_extent consists of (abcissa_min, abcissa_max, ordinate_min, ordinate_max). """ h, w = shape def display_coefficients(x): return np.flipud( np.fft.fftshift(np.log10(np.abs(_vec2mat(x, (h, w)))))) axes_extent = (-(w // 2), (w - 1) // 2, -(h // 2), (h - 1) // 2) return display_coefficients, axes_extent