Runge-Kutta 4th and 5th order adaptive ODE integrator. Generally the scipy integrators will be easier to use, unless you specifically need RK45.
(Code)
Sunday, November 04, 2007
Wednesday, September 12, 2007
Filter numpy images with FFT, Python
Generic linear filter support is not currently built into the Python Imaging Library. This module lets you filter a numpy array against an arbitrary kernel:
Update: A number of image filtering operations are provided in
(Source)
>>> I = numpy.asarray(Image.open('test.jpg'))
>>> I = filter(I, [[-1,0,1],[-2,0,2],[-1,0,1]])/8+128
>>> Image.fromarray(numpy.uint8(I)).show()
Update: A number of image filtering operations are provided in
numarray
(in the module numpy.numarray.nd_image
), such as filtering, image morphology, distance transforms, and segmentation; see [2].(Source)
Monday, June 04, 2007
framecap - Capture camera input with Allegro, C++
Requires OpenCV, Allegro, and pthreads. Captures frames from a webcam. Usage:
(Source)
CAPTURE *cap = create_capture();Use
BITMAP *bmp = capture_frame(cap);
capture_frame_nb
to capture a frame in nonblocking mode (a NULL pointer is returned if no frame is available). Should work on Mac OS X, Linux, Windows; only tested on Windows.(Source)
Monday, April 30, 2007
pfm - Read/write 1 and 3 channel PFM files
PFM files are mxnx1 or mxnx3 arrays of floats. C++ code to read/write the format (public domain).
(Source)
(Source)
Wednesday, April 04, 2007
OpenCV camera and AVI input
To convert a video to a format that OpenCV can read:
$ mencoder in.avi -ovc raw -vf format=i420 -o out.aviThis is necessary because OpenCV uses platform specific video libraries, and the intersection of their supported formats is DIB/I420/IYUV. To capture input from a camera or an AVI file, use the following C++ code: [1]. To capture frames in a nonblocking manner in Python, use: [2] with Gary Bishop's
cvtypes
[3].
Tuesday, April 03, 2007
Burrows-Wheeler transform in Python
def bwt(s):The Burrows-Wheeler transform [1] is an invertible mathematical transformation which tends to clump related sequences of data together; hence it is useful as a pre-pass for some compression algorithms. The BWT domain in the above code excludes the null character; to include the null character, modify the transformation to also output the row of
s = s + '\0'
return ''.join([x[-1] for x in
sorted([s[i:] + s[:i] for i in range(len(s))])])
def ibwt(s):
L = [''] * len(s)
for i in range(len(s)):
L = sorted([s[i] + L[i] for i in range(len(s))])
return [x for x in L if x.endswith('\0')][0][:-1]
sorted([s[i:] + s[:i]...])
on which s
occurs, then in IBWT simply return this row after the for loop. The Python code above is not particularly fast.
Sunday, April 01, 2007
How to put a video on the Web
Install FFMPEG [1], use
ffmpeg -i in.avi out.swf
, then place <embed src="out.swf" width="400" height="300" loop="false" quality="high"></embed>
in your HTML. Optionally, use the -s
argument after -i
in FFMPEG to change the resolution. If you want playback controls, output to a .flv
file instead, download FlowPlayer [1], and modify their example HTML to point to your .flv
video.
Saturday, February 17, 2007
Ubuntu Linux postinstall notes
After installing an operating system, there are always a zillion changes I have to make to get the operating system operational. I'm new to Linux, so I thought I'd post up a list of changes I made after installing Ubuntu to help out others. These are mostly basic changes such as enabling all software packages, choosing a fast repository, mounting FAT32 drives, making Ctrl+Alt+Del bring up a task manager, installing multimedia software, changing the system DPI, trying to disable the trash feature, and adding an Open Terminal option to the desktop.
(Document)
(Document)
Friday, February 09, 2007
Eigenvectors of 3x3 symmetric matrix
A C++ source and header file to compute eigenvectors/values of a 3x3 symmetric matrix. Potentially easier than installing EISPACK, LAPACK, or Gandalf if you only need this single function. Takes about 6000 clock cycles per call on my Pentium 4. Public domain. [1]
Subscribe to:
Posts (Atom)