$\newcommand{\dotp}[2]{\langle #1, #2 \rangle} \newcommand{\enscond}[2]{\lbrace #1, #2 \rbrace} \newcommand{\pd}[2]{ \frac{ \partial #1}{\partial #2} } \newcommand{\umin}[1]{\underset{#1}{\min}\;} \newcommand{\umax}[1]{\underset{#1}{\max}\;} \newcommand{\umin}[1]{\underset{#1}{\min}\;} \newcommand{\uargmin}[1]{\underset{#1}{argmin}\;} \newcommand{\norm}[1]{\|#1\|} \newcommand{\abs}[1]{\left|#1\right|} \newcommand{\choice}[1]{ \left\{ \begin{array}{l} #1 \end{array} \right. } \newcommand{\pa}[1]{\left(#1\right)} \newcommand{\diag}[1]{{diag}\left( #1 \right)} \newcommand{\qandq}{\quad\text{and}\quad} \newcommand{\qwhereq}{\quad\text{where}\quad} \newcommand{\qifq}{ \quad \text{if} \quad } \newcommand{\qarrq}{ \quad \Longrightarrow \quad } \newcommand{\ZZ}{\mathbb{Z}} \newcommand{\CC}{\mathbb{C}} \newcommand{\RR}{\mathbb{R}} \newcommand{\EE}{\mathbb{E}} \newcommand{\Zz}{\mathcal{Z}} \newcommand{\Ww}{\mathcal{W}} \newcommand{\Vv}{\mathcal{V}} \newcommand{\Nn}{\mathcal{N}} \newcommand{\NN}{\mathcal{N}} \newcommand{\Hh}{\mathcal{H}} \newcommand{\Bb}{\mathcal{B}} \newcommand{\Ee}{\mathcal{E}} \newcommand{\Cc}{\mathcal{C}} \newcommand{\Gg}{\mathcal{G}} \newcommand{\Ss}{\mathcal{S}} \newcommand{\Pp}{\mathcal{P}} \newcommand{\Ff}{\mathcal{F}} \newcommand{\Xx}{\mathcal{X}} \newcommand{\Mm}{\mathcal{M}} \newcommand{\Ii}{\mathcal{I}} \newcommand{\Dd}{\mathcal{D}} \newcommand{\Ll}{\mathcal{L}} \newcommand{\Tt}{\mathcal{T}} \newcommand{\si}{\sigma} \newcommand{\al}{\alpha} \newcommand{\la}{\lambda} \newcommand{\ga}{\gamma} \newcommand{\Ga}{\Gamma} \newcommand{\La}{\Lambda} \newcommand{\si}{\sigma} \newcommand{\Si}{\Sigma} \newcommand{\be}{\beta} \newcommand{\de}{\delta} \newcommand{\De}{\Delta} \renewcommand{\phi}{\varphi} \renewcommand{\th}{\theta} \newcommand{\om}{\omega} \newcommand{\Om}{\Omega} $
This tour explores the analysis and synthesis of stationary dynamic textures using Gaussian models.
%load_ext pymatbridge
%%matlab
addpath('toolbox_signal')
addpath('toolbox_general')
addpath('solutions/todo_graphics_8_dyntextures')
You need to download numerical_tours and install the IPython notebook to run the code.
You must also install the python-matlab-bridge.
A color video is a 4-D array of values of size $(n_1,n_2,p,3)$ where $N=n_1 \times n_2$ is the number of pixels in the video and $p$ of frames.
Load a video from a |.gif| file, which requires conversion from indexed color to RGB colors.
%%matlab
name = 'smoke';
name = 'fire';
[X, map] = imread([name '.gif'], 'frames', 'all');
f = [];
for i=1:size(X,4)
f(:,:,:,i) = ind2rgb(X(:,:,1,i),map);
end
Modify the video (here time reverse it).
%%matlab
g = f(:,:,:,end:-1:1);
Save the video as a |.gif| file. Compute the quantized color map from the first frame.
%%matlab
X = [];
[X(:,:,1,1),map] = rgb2ind(g(:,:,:,1),128*2);
for i=2:size(g,4)
[X(:,:,1,i),map] = rgb2ind(g(:,:,:,i),map);
end
imwrite(X+1, map, ['../html/graphics_9_dyntextures/video1.gif'], 'DelayTime',1/10, 'loopcount', Inf);