05/21/2017 at 17:18 •
I just released my new application PyFSPro. This Python program is an extension of the program used for Schlieren Videography. It offers more functionality and has a comfortable GUI instead of the keyboard short cuts in earlier versions. For the GUI the Kivy framework is used. The code and detailed instructions can be found on the projects GitHub pages.
09/03/2016 at 17:24 •
I presented Schlieren Videography at the family day of the Orkney International Science Festival in Kirkwall today. Over 900 visitors had the chance to enjoy the live projection of schlieren imaging with this python program. This brings a new release - schlieren_8.py with new functionality:
- reducing the pattern size to 0 completely disables the background window.
- press "M" for a new motion compensation mode that simply processes the difference between successive frames or framestacks.
- multiple images can be stacked before equalization - this reduces noise. Press 1-9 to stack 1 (no stacking) to 9 images. Larger image numbers can be choosen through the command line option.
The Schlieren project setup - from left to right: Computer to generate pattern, Screen for pattern projection, Candle as example object, camera, image processing computer showing an old NASA schlieren image of the X15 as example, projector on chair.
Projection of live schlieren image in the presentation area of our T-Exchange makerspace - still picture and video:
Schlieren video taken at the OISF. It shows a gas powered hot air gun. The used settings are: Enabled Filters: Equalizer, Blur; Color Palette 2:
08/19/2016 at 16:10 •
New Python version schlieren_6.py with many new features:
- record video as MP4 avi or image sequence (needs scikit-video because of OpenCV bug)
- all functions accessible via command line options.
- reduced noise in image processing by means of frame stacking for reference frame and CLAHE (contrast limited adaptive histogram equalization) for main processing. I could see the warm air rising from my hand with this new algorithm.
- fastNlMeansDenoising can be used, but is slow (1 fps on my i7 quadcore). But any image sequence from a previous pass can be fed into the program again via command line:
python ./schlieren_6.py -dd -i rawimg/%08d.bmp -fd 43 -c 4 -ov color_filtered.avi
This means: "Load bitmap sequence in rawimg, starting with 00000000.bmp, don't use schlieren differentiation but strong denoising (43) and pseudo-color palette 4, output to color_filtered.avi in the programs directory. You can see the results below.
- New Hotkey layout:
d - toggle display between raw and rendered image
h - toggle HUD style on screen text display
r - capture 10 frames, stack and average them as reference image
s - toggle schlieren differentiation (mostly needed from command line for postproc)
c - rotate through colour palettes
e - toggle histogram equalization
b - toggle median blur
n - toggle denoise (very slow! It is recommended to use this in a second pass)
v - toggle video recording
i - toggle recording of image sequence
p - rotate through background patterns
+ - increase pattern size
- - decrease pattern size
q - quit program
08/10/2016 at 15:12 •
Promising experiments with a second histogram equalization stage after differentiation and pseudo color mapping.
I recommend to turn off all automatic features (autofocus, exposure/shutter, gain, white balance) on your camera to avoid flickering images and "pumping". Linux users who use a webcam can use guvcview in control panel mode to control the camera without causing a busy v4l device:
guvcview -z -d /dev/video1 This controls my second (external) camera.
08/08/2016 at 19:41 •
A new Era: The first Python version can be found under the files section. The working test system runs XUbuntu 16.04 and uses Python 2.7, OpenCV 2.4.9., python-opencv and Numpy.
I am using Spyder as Python IDE
The default video input source is the first camera (device index 0). This can be changed by uncommenting and editing line 52 or the -i / --input_source command line option. The latter allows video files as input as well.
The program will open three windows for the raw video, the output (Schlieren!) and the background pattern. The background window is black until you choose 1 (chequerboard) or 2 (stripes). All three windows can be resized. There is no video recording option (yet!).
c use current frame as reference frame
q quit program
1 use chequerboard background pattern
2 use striped background pattern
=+ increase pattern size
-_ decrase pattern size
08/08/2016 at 15:56 •
These tests use background patterns on a screen instead of a printed moire. The idea is to be able to project the pattern on a screen or wall for larger scale schlieren videography.
On top the test setup with a stripe pattern on the external screen an a Logitech c930e camera.
In the first video a stripe pattern similar to the printed moire patterns is used:
This video is an attempt to get a better image by using a chequerboard pattern:
05/15/2016 at 18:16 •
There is now a playback version of the Processing sketch, with which you can record a video and then calculate the schlieren-effect afterwards. The raster-screen is still required.
This version of the code works great with higher resolutions, as it doesn't need to be played live.
04/10/2016 at 17:47 •
Hi, a python version of the program is on the go, I will update it soon, no more Java, yay!
03/20/2016 at 19:17 •
Finally! I created a HD-Schlieren-Video on an DIN A0 Moire screen and with my canon EOS 600D.
That was not possible to do live, so I recorded the Moire screen and the Schlieren and then run the program with the video.
The effect seems to be not that strong anymore, that is a bad side effect of the higher resolution.
03/20/2016 at 18:21 •
I recently got a new Moire pattern. It was supplied by the Tkkrlab in Enschede.
It is a Moire pattern with a line-spacing of ~1.45 mm and a size of DIN A0.
Stay tuned for some HD footage of Schlieren :)