# -*- coding: utf-8 -*-
"""
HDRI / Radiance Image Plotting
==============================
Defines the HDRI / radiance image plotting objects:
- :func:`colour_hdri.plotting.plot_radiance_image_strip`
"""
from __future__ import division, unicode_literals
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from colour.plotting import COLOUR_STYLE_CONSTANTS, override_style, render
from colour.utilities import as_float_array
from colour_hdri.utilities.exposure import adjust_exposure
__author__ = 'Colour Developers'
__copyright__ = 'Copyright (C) 2015-2019 - Colour Developers'
__license__ = 'New BSD License - http://opensource.org/licenses/BSD-3-Clause'
__maintainer__ = 'Colour Developers'
__email__ = 'colour-science@googlegroups.com'
__status__ = 'Production'
__all__ = ['plot_radiance_image_strip']
[docs]@override_style()
def plot_radiance_image_strip(
image,
count=5,
ev_steps=-2,
encoding_cctf=COLOUR_STYLE_CONSTANTS.colour.colourspace.encoding_cctf,
**kwargs):
"""
Plots given HDRI / radiance image as strip of images of varying exposure.
Parameters
----------
image : array_like
HDRI / radiance image to plot.
count : int, optional
Strip images count.
ev_steps : numeric, optional
Exposure variation for each image of the strip.
encoding_cctf : callable, optional
Encoding colour component transfer function / opto-electronic
transfer function used for plotting.
Other Parameters
----------------
\\**kwargs : dict, optional
{:func:`colour.plotting.display`},
Please refer to the documentation of the previously listed definition.
Returns
-------
tuple
Current figure and axes.
"""
image = as_float_array(image)
grid = matplotlib.gridspec.GridSpec(1, count)
grid.update(wspace=0, hspace=0)
height, width, _channel = image.shape
for i in range(count):
ev = i * ev_steps
axis = plt.subplot(grid[i])
axis.imshow(np.clip(encoding_cctf(adjust_exposure(image, ev)), 0, 1))
axis.text(
width * 0.05,
height - height * 0.05,
'EV {0}'.format(ev),
color=(1, 1, 1))
axis.set_xticks([])
axis.set_yticks([])
axis.set_aspect('equal')
return render(**kwargs)