Logging exceptions with traceback in python

When using logging module one often need to print traceback along with error message. Solution is: 1 logger.error('error message', exc_info=True) # for adding traceback to log Equivalent : 1 logger.exception('message')

February 2, 2015 · SergeM

Installing Ubuntu from USB

I use Windows OS and I want to install Ubuntu on another PC. Download software for bootable usb creation http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ Download ubuntu image from http://www.ubuntu.com/download/desktop According to instructions from http://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows install image on usb stick use usb-stick as bootable

January 11, 2015 · SergeM

Installing theano on windows

install Anaconda download Theano sources from git (install it using setup.py) Setup NVIDIA GPU Toolkit. I have installed version 6.5 Setup Visual Studio Community Edition 2013 Create config file .theanorc in c:\Users\X: [global] floatX = float32 device = gpu [nvcc] fastmath = True compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe Without the line with path to cl.exe I got: nvcc fatal : Cannot find compiler 'cl.exe' in PATH ['nvcc', '-shared', '-O3', '-use_fast_math', '-Xlinker', '/DEBUG', '-D HAVE_ROUND', '-m64', '-Xcompiler', '-DCUDA_NDARRAY_CUH=f411a53ee0a470fbaad3b5c4a681ef64,-D NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD', '-Ic:\\anaconda\\theano\\theano\\sandbox\\cuda', '-Ic:\\anaconda\\lib\\site-packages\\numpy\\core\\include', '-Ic:\\anaconda\\include', '-o', 'C:\\Users\\X\\AppData\\Local\\Theano\\compiledir_Windows-7-6....

December 28, 2014 · SergeM

Writing simple optical flow in python. Part 3

Today, my imaginary readers, we improve our optical flow dramatically. Lets see, what our algorithm produces for images that have more than 1-pixel shifts. I0 I1 OF results: <img alt="OF results" src="data:image/png;base64,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" /> </td></tr> You can see, that the algorithm cannot deal with too large displacements. Even with multiple warps. Lets apply multiscale scheme now. We need to construct image pyramid: #from flow_huber_py import construct_image_pyramid def construct_image_pyramid(I, pyrlevels, pyrfactor): factor = 2....

December 21, 2014 · SergeM

Writing simple optical flow in python. Part 2

After fixing some errors, it seems my OF is working. [](https://www.blogger.com/blogger.g?blogID=636453477220885924" imageanchor=“1” style=“clear: right; float: right; margin-bottom: 1em; margin-left: 1em;) [](https://www.blogger.com/blogger.g?blogID=636453477220885924" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;)Image I0Image I1 [](https://www.blogger.com/blogger.g?blogID=636453477220885924" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;)first iteration OF 1st iteration of warped I1 Second Iteration OF Second iteration of warped I1 3 iteration Of 3rd iteration of warped I1 Last iteration Some strange results for another image pair:...

December 20, 2014 · SergeM

Writing simple optical flow in python

First of all we need a couple of test images: # import numpy from StringIO import StringIO I0 = numpy.loadtxt(StringIO(""" 0 0 0 0 0 0 0 0.5000 0 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 0 0 0 0""") ) I1 = numpy.loadtxt(StringIO(""" 0 0 0 0 0 0 0.5 0 0 0 0 1.0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 "...

November 30, 2014 · SergeM

Setting default parameters for imshow in pyplot

I find default visualization settings for images in matplotlib inconvenient. Usually I prefer to see images in grayscale color map and without smoothing. Thus I see actual data without distortions. Grayscale is easier to understand. 1 2 3 import matplotlib.pyplot as plt plt.rcParams['image.cmap'] = 'gray' plt.rcParams['image.interpolation'] = 'nearest' Compare default colors and interpolation: and after applying the settings:

November 23, 2014 · SergeM

Loading numpy array from string

Okay children, today we learn how to convert text to numpy matrix. Source is [here](http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html" target="_blank). # loading modules import numpy from StringIO import StringIO # Using StringIO as a file-like wrapper over text I0 = numpy.loadtxt(StringIO(""" 0 0 0 0 0 0 0 0.5000 0 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 0 0.5000 1.0000 0 0 0 0 0 0 0"...

November 17, 2014 · SergeM

Quiver for optical flow

Standard matlab’s quiver function has axis origin in left bottom corner, however, images have origin in top left corner. To display optical flow vector field consistenly i use the following fucntion: function [ output ] = quiver_flow( u, v ) %QUIVER_FLOW Displays quiver for optical flow % SMatyunin2014 output = quiver( u, v, 0); axis ij; end

November 6, 2014 · SergeM

Simple tests of classic OF methods

BA method, simple synthetic images For simple synthetic images: I0 = 0 0.5000 0 0 1.0000 0 0 0.5000 0 0.1000 0 0 0.0500 0 0 0.0500 0.1000 0 I1 = 0.5000 0 0 1.0000 0 0 0.5000 0 0 0 0.1000 0 0 0.0500 0 0 0.0500 0.1000 Running code by D.Sun. Disabled texture decomposition, disabled multiscale processing. uv = estimate_flow_interface(I0, I1, 'classic-c-brightness', [], {'display', 1, 'pyramid_levels', 1, 'gnc_pyramid_levels', 1}); After first iteration ( loop for ignc = 1:this....

November 5, 2014 · SergeM