pyimof package¶
Subpackages¶
Submodules¶
pyimof.display module¶
Collection of utils and functions for the visualization of vector fields.
-
pyimof.display.
color_wheel
(u=None, v=None, nr=50, ntheta=1025)[source]¶ Compute the discretization of a wheel used to describe the color code used to display a vector field (u, v).
If the vector field (u, v) is provided, the radius of the wheel is equal to its maximum magnitude. Otherwise (i.e. if any of u and v is None), the radius is set to 1.
- Parameters
u (ndarray (optional)) – The horizontal component of the vector field (default: None).
v (ndarray (optional)) – The vertical component of the vector field (default: None).
nr (int (optional)) – The number of steps used to discretise the wheel radius.
ntheta (int (optional)) – The number of steps used to discretise the wheel sectors.
- Returns
angle, radius – The grid discretisation of the wheel sectors and radius.
- Return type
-
pyimof.display.
flow_to_color
(u, v, cmap=None, scale=True)[source]¶ Apply color code to a vector field according to its orientation and magnitude.
Any colormap compatible with matplotlib can be applyed but circular colormaps are recommanded ( for example ‘huv’, ‘twilight’, ‘twilight_shifted’ and the builtin ‘middlebury’ colormaps).
If cmap is None, the HSV image defined using optical flow orientation (hue) and magnitude (saturation) is returned.
- Parameters
- Returns
img – RGBA image representing the desired color code applyed to the vector field.
- Return type
-
pyimof.display.
get_tight_figsize
(I)[source]¶ Computes the matplotlib figure tight size respecting image proportions.
-
pyimof.display.
plot
(u, v, ax=None, cmap='middlebury', scale=True, colorwheel=True)[source]¶ Plots the color coded vector field.
- Parameters
u (ndarray) – The horizontal component of the vector field.
v (ndarray) – The vertical component of the vector field.
ax (Axes (optional)) – Optional matplotlib axes used to plot the image. If None, the image is displayed in a tight figure.
cmap (str (optional)) – The colormap used to color code the input vector field.
scale (bool (optional)) – whether to scale output saturation according to magnitude.
colorwheel (bool (optional)) – whether to display the color wheel describing the images colors or not.
- Returns
ax – The matplotlib axes where the image is displayed.
- Return type
Axes
-
pyimof.display.
quiver
(u, v, c=None, bg=None, ax=None, step=None, nvec=50, bg_cmap=None, **kwargs)[source]¶ Draws a quiver plot representing a dense vector field.
- Parameters
u (ndarray (with shape m×n)) – The horizontal component of the vector field.
v (ndarray (with shape m×n)) – The vertical component of the vector field.
c (ndarray (optional (with shape m×n))) – Values used to color the arrows.
bg (ndarray (2D or 3D optional)) – Background image.
ax (Axes (optional)) – Axes used to plot the image. If None, the image is displayed in a tight figure.
step (int (optional)) – The grid step used to display the vector field. If None, it is computed using the nvec parameter.
nvec (int) – The maximum number of vector over all the grid dimentions. It is ignored if the step parameter is not None.
bg_cmap (str (optional)) – The colormap used to color the background image.
Notes
Any other
matplotlib.pyplot.quiver()
valid keyword can be used, knowing that some are fixedunits = ‘dots’
angles = ‘xy’
scale = ‘xy’
- Returns
ax – The matplotlib axes where the vector field is displayed.
- Return type
Axes
pyimof.io module¶
Functions to read and write ‘.flo’ Middleburry file format.
pyimof.solvers module¶
Collection of optical flow algorithms.
-
pyimof.solvers.
ilk
(I0, I1, rad=7, nwarp=10, gaussian=True, prefilter=False)[source]¶ Coarse to fine iterative Lucas-Kanade (iLK) optical flow estimator. A fast and robust algorithm developped by Le Besnerais and Champagnat 4 and improved in 5..
- Parameters
I0 (ndarray) – The first gray scale image of the sequence.
I1 (ndarray) – The second gray scale image of the sequence.
rad (int) – Radius of the window considered around each pixel.
nwarp (int) – Number of times I1 is warped.
gaussian (bool) – if True, gaussian kernel is used otherwise uniform kernel is used.
prefilter (bool) – whether to prefilter the estimated optical flow before each image warp.
- Returns
u, v – The horizontal and vertical components of the estimated optical flow.
- Return type
References
- 4
Le Besnerais, G., & Champagnat, F. (2005, September). Dense optical flow by iterative local window registration. In IEEE International Conference on Image Processing 2005 (Vol. 1, pp. I-137). IEEE.
- 5
Plyer, A., Le Besnerais, G., & Champagnat, F. (2016). Massively parallel Lucas Kanade optical flow for real-time video processing applications. Journal of Real-Time Image Processing, 11(4), 713-730.
Examples
>>> from matplotlib import pyplot as plt >>> import pyimof >>> I0, I1 = pyimof.data.yosemite() >>> u, v = pyimof.solvers.ilk(I0, I1) >>> pyimof.display.plot(u, v) >>> plt.show()
-
pyimof.solvers.
tvl1
(I0, I1, dt=0.2, lambda_=15, tau=0.3, nwarp=5, niter=10, tol=0.0001, prefilter=False)[source]¶ Coarse to fine TV-L1 optical flow estimator. A popular algorithm intrudced by Zack et al. [1]_, improved in 2 and detailed in 3.
- Parameters
I0 (ndarray) – The first gray scale image of the sequence.
I1 (ndarray) – The second gray scale image of the sequence.
dt (float) – Time step of the numerical scheme. Convergence is proved for values dt < 0.125, but it can be larger for faster convergence.
lambda_ (float) – Attachement parameter. The smaller this parameter is, the smoother is the solutions.
tau (float) – Tightness parameter. It should have a small value in order to maintain attachement and regularization parts in correspondence.
nwarp (int) – Number of times I1 is warped.
niter (int) – Number of fixed point iteration.
tol (float) – Tolerance used as stopping criterion based on the L² distance between two consecutive values of (u, v).
prefilter (bool) – whether to prefilter the estimated optical flow before each image warp.
- Returns
u, v – The horizontal and vertical components of the estimated optical flow.
- Return type
References
- 1
Zach, C., Pock, T., & Bischof, H. (2007, September). A duality based approach for realtime TV-L 1 optical flow. In Joint pattern recognition symposium (pp. 214-223). Springer, Berlin, Heidelberg.
- 2
Wedel, A., Pock, T., Zach, C., Bischof, H., & Cremers, D. (2009). An improved algorithm for TV-L 1 optical flow. In Statistical and geometrical approaches to visual motion analysis (pp. 23-45). Springer, Berlin, Heidelberg.
- 3
Pérez, J. S., Meinhardt-Llopis, E., & Facciolo, G. (2013). TV-L1 optical flow estimation. Image Processing On Line, 2013, 137-150.
Examples
>>> from matplotlib import pyplot as plt >>> import pyimof >>> I0, I1 = pyimof.data.yosemite() >>> u, v = pyimof.solvers.tvl1(I0, I1) >>> pyimof.display.plot(u, v) >>> plt.show()
pyimof.util module¶
Common tools to optical flow algorithms.
-
pyimof.util.
coarse_to_fine
(I0, I1, solver, downscale=2, nlevel=10, min_size=16)[source]¶ Generic coarse to fine solver.
- Parameters
I0 (ndarray) – The first gray scale image of the sequence.
I1 (ndarray) – The second gray scale image of the sequence.
solver (callable) – The solver applyed at each pyramid level.
downscale (float) – The pyramid downscale factor.
nlevel (int) – The maximum number of pyramid levels.
min_size (int) – The minimum size for any dimension of the pyramid levels.
- Returns
u, v – The horizontal and vertical components of the estimated optical flow.
- Return type
-
pyimof.util.
get_pyramid
(I, downscale=2.0, nlevel=10, min_size=16)[source]¶ Construct image pyramid.
- Parameters
- Returns
pyramid – The coarse to fine images pyramid.
- Return type
-
pyimof.util.
resize_flow
(u, v, shape)[source]¶ Rescale the values of the vector field (u, v) to the desired shape.
The values of the output vector field are scaled to the new resolution.
- Parameters
- Returns
ru, rv – The resized and rescaled horizontal and vertical components of the motion field.
- Return type
-
pyimof.util.
tv_regularize
(x, tau=0.3, dt=0.2, max_iter=100, p=None, g=None)[source]¶ Toltal variation regularization using Chambolle algorithm [1]_.
- Parameters
x (ndarray) – The target array.
tau (float) – Tightness parameter. It should have a small value in order to maintain attachement and regularization parts in correspondence.
dt (float) – Time step of the numerical scheme. Convergence is proved for values dt < 0.125, but it can be larger for faster convergence.
max_iter (int) – Maximum number of iteration.
p (ndarray) – Optional buffer array of shape (x.ndim, ) + x.shape.
g (ndarray) – Optional buffer array of shape (x.ndim, ) + x.shape.
References
- 1
A. Chambolle, An algorithm for total variation minimization and applications, Journal of Mathematical Imaging and Vision, Springer, 2004, 20, 89-97.
Module contents¶
A python package for optical flow estimation and visualization.