Mark Dow

Geek software

Video motion estimation and quantification

    Examples, notes and MATLAB code for estimating frame to frame motion in a video file. The form of image processing presented is most suitable for complex small motions in scenes, as opposed to path analysis of fast rigid body motion. It is very fast and simple, suitable for real-time processing, and amenable to parallel processing methods -- either in software or hardware.


video frame differencing, link to 

Visual comparison of video and frame differences

Video total motion (average speed) estimation

Example analysis

Video velocity distribution estimation

Video image stabilization

Programs and code

get video frame
video frame difference
video_frames_diff_compare
video total motion
video_supress_camera_jitter

example video files

References

    How can we quantify and characterize how "wiggly" kids are? This problem came up in the context of evaluating groups of kids for a combined behavioral and ERP study of kids before and after an intervention designed to impact cognitive attention networks and performance. Extracting motion estimates from video frames allows unbiased and roughly comparable metrics of body and face motion.
   
    The methods are also relevant to fMRI studies, particularly with young kids. As well as motion estimation, we would like to give motion feedback training in a mock scanner to reduce motion-related imaging artifacts. From scanning in practice:

"Subjects participating in a fMRI experiment are asked to lie still and are usually restrained with soft pads to prevent small motions from disturbing measurements. Some labs also employ bite bars to reduce motion, although these are unpopular as they can cause some discomfort to subjects. It is possible to correct for some amount of head movement with post-processing of the data, but large transient motion can render these attempts futile. Generally motion in excess of 3 millimeters will result in unusable data. The issue of motion is present for all populations, but most notably within populations that are not physically or emotionally equipped for even short MRI sessions (e.g., those with Alzheimer's Disease or schizophrenia, or young children). In these populations, various and negative reinforcement strategies can be employed in an attempt to attenuate motion artifacts, but in general the solution lies in designing a paradigm compatible with these populations."

Background: frame differencing and edge detection

    Ideally we'd like to estimate the relative velocity of every point of every physical object within the field of view of a sequential imaging system (e.g. a video camera). But the only information we have, other than the characteristics of the imaging system, are pixel to pixel image differences. A uniform set of image values, locally or globally, don't reflect any information about object motion.   

    Differencing of sequential frames of the same scene provides a wealth of information about shifts of image gradients, most of which correspond to motion of physical boundaries, discontinuities in surface orientation, and lighting changes (shadows). The effects of smooth surface orientation changes are relatively small over short time scales. In most simple scenes pixel-wise differences are dominated by shifts of high gradient regions which reflect the motion of physical boundaries and high curvature contours. [To Do: Illustrate.]

    These regions of high image value gradients are typically called edges, and the algorithms for localizing and characterizing them is called edge detection. One approach to motion estimation would be to find edges in sequential images and estimate how they moved between images. But this process is often ambiguous -- motion of roughly straight edge segments is not well determined (ill-posed, e.g. Barberpole illusion) without solving the correspondence problem, which is itself ill-posed without some set of smoothness constraints.

    By analysis of simple differences between sequential images, we can use the image gradient information to find regional motion estimates without explicit edge detection and correspondences. Furthermore we can use fast, low quality, gradient estimates in noisy images to find reliable estimates of total regional motion and velocity distributions. Explicit information about specific edges is sacrificed for speed. Regional averaging allows high signal to noise ratios, while sacrificing spatial specificity.

    For this discussion camera position and orientation, and all other properties of the imaging system, will be considered as constant -- the camera is spatially fixed, with a fixed aperture, focal length, and luminance or color transform (color balance). The range of types of images for which the technique is applicable is broad -- it is largely independent of  the object properties, lighting conditions, or optical system properties.

    If the scene objects are at similar distances (dD/D << 1), with no restrictions on fixed background object distances with a fixed camera,  the differences between frames provides robust information about motion of the objects. The largest magnitude differences are highly likely to be due to physical edge and sharp contour position changes. The number of pixels with an absolute difference above some threshold is a good estimate of (proportional to) the integrated speed of all object points. This assumes that the average speed of surfaces without high gradient features is on average matched to those with high gradient featrures. A suitable threshold can be determined from a frame's content. The constant of proportionality can be found by differencing artificial shifts of the images, or equivalently by applying a gradient approximation operator at every point of an image. The method is not strongly sensitive to noise within or across images.

    Estimation performance is best for objects and illumination that result in the most, and well distributed, high contrast features that move with the object.

Sources of error

    Generally the errors in motion estimation will be greater than dD/D, or (width of the distribution of high gradient features distances)/D. This condition favors a longer focal length imaging system (large D). Make sure, if there are distinct shadows, that the shadow distances are included in this lower bound error estimate.

[To Do: Reflections from surfaces with orientation and deformation changes.
[To Do:  People, faces and hair.]
[To Do: Lighting changes, for example in time-lapse photography. Not surprisinly, large illumination changes across frames cause image value differences that are not related to object motion, but may be related to light source motion.]
[To Do: Distribution of orientation of boundaries.]
[To Do: Changes of occlusion.]
[To Do: Compression artifacts.]
[To Do: Camera jitter.]

Visual comparison of video and frame differences

[To Do: Describe the program with an example. Also see its use in video total motion estimation.]

MATLAB command:
>> video_frames_diff_compare_v1( 'Cosmo_torso_no-instruction_640x480.avi', 1, 300, 8.0, [100 1 470 256], true, true );

Output file:
Cosmo_torso_holding-still_640x480-diff-1_400.avi
A video showing the difference frames on top, and the original cropped frames on the bottom.
   
[To Do: "Think, blink, wink" loop
- close-up video of eyes saccade, blink and wink in quick succession.
- use video_frames_diff_compare.m to extract and interpolate difference frames and compare over-under
- clean up and enhance  

    Across a saccade, blink or wink, which are fast relative to the frame rate, does the number of super-threshold difference pixels reflect the integrated speed of the visible surfaces? Not precisely, because of the change in occlude surfaces, and the relative fraction of change with respect to the whole scene.
    For example, during a blink the eyeball becomes occluded and the eyelid becomes visible. The largest error of this type would occur if the occluded and unoccluded surfaces were uniform with identical image values. In that case the surface motion would be underestimated, as some fraction of the surface motion would not be accounted for.  
    Note that the relative change in occluded surfaces is not as much of a problem for a saccade as long as the primary edges (pupil) don't become occluded.
    Human eyes (the visible part of the eye ball and surrounding regions) are have more and stronger edges than most other portions of the face. So differencing of eye movements result in an over estimation of total motion if the spatial distribution of edges is not accounted for.

    There may be evolutionary reasons that eyes are overrepresented in an edge map. Humans do a lot of communicating with eye and eyebrow motion. From eyebrow: "Eyebrows also have an important facilitative function in communication, strengthening expressions like surprise or anger.")

    We are particularly sensitive to the gaze direction of others. Could it be that we evolved white and exposed sclera to amplify and facilitate communication with eye motion? From sclera: "...certain animals, such as horses and lizards, can have black sclera".  The cooperative eye hypothesis eye suggests "that this feature of human eyes evolved to make it easier for conspecifics to follow an individual's gaze direction in close-range joint attentional and communicative interactions" [Tomasello 2006].

From "Did evolution make our eyes stand out?":

"For humans, the eyes are more than just windows to the outside world. They are also portals inward, providing others with glimpses into our inner thoughts and feelings.

Of all primates, human eyes are the most conspicuous; our eyes see, but they are also meant to be seen. Our colored irises float against backdrops of white and encircle black pupils. This color contrast is not found in the eyes of most apes.

According to one idea, called the cooperative eye hypothesis, the distinctive features that help highlight our eyes evolved partly to help us follow each others' gazes when communicating or when cooperating with one another on tasks requiring close contact."

From Grossmann 2008:

"The face as a prototypical social stimulus provides a wealth of relevant information. From birth, human infants preferentially orient towards face stimuli, especially when they include gaze-relevant contrast information (Johnson et al. 1991; Farroni et al. 2005). Among the social cues contained in the face, eye gaze plays a fundamental role in non-verbal social communication (Emery 2000). Compared with other primate species, human eyes are unique in their morphology because they have a widely exposed white sclera surrounding the darker iris, making it easy to discern the target of another person's attention during face-to-face interactions (Kobayashi & Kohshima 1997, 2001; Tomasello et al. 2006). It is therefore not surprising that the sensitivity to eyes and eye gaze is evident very early in ontogeny: newborns not only prefer to look at faces that have open eyes (Batki et al. 2000), but also exhibit a strong tendency to attend to faces that engage them in mutual gaze when compared with averted gaze (Farroni et al. 2002). Importantly, it has been argued that an early sensitivity to eye gaze serves as a major foundation for later development of social skills (Baron-Cohen 1995; Csibra & Gergely 2006). Indeed, an impairment of the sensitivity to eye gaze in general, and mutual gaze in particular, might be one of the early signs of atypical social development manifested in neurodevelopmental disorders such as autism (Phillips et al. 1992; Zwaigenbaum et al. 2005)."

From "The whites of their eyes": 

"[Another] theory addresses the usual mate selection bit: bright white sclera (versus bleary red-veined maybe-he's-flaccid coloration) signal good health and fitness."

]

Video total motion (average speed) estimation

    Estimation of total motion based on absolute differences between frames, without respect to the direction of motion that causes differences.

    This is the general procedure and specific example commands used to create the examples below.
MATLAB command:
>> get_video_frame( 'Cosmo_torso_no-instruction_640x480.avi', 500, true, true );

Output file: 
Cosmo_torso_no-instruction_640x480-500.png
The 500th frame as an image.
-> [100 1 470 256]
[ left top right bottom ] of desired crop rectangle
Optionally the crop rectangle can be specified as 0, which will cause the whole image to be analyzed.

MATLAB command:
>> arrMotion = video_total_motion_v2( 'Cosmo_torso_no-instruction_640x480.avi', [100 1 470 256], true, true );

Output files:
Cosmo_torso_no-instruction_640x480_100-1-470-256_total-motion.mat
MATLAB total motion array. These are the timecourses of motion plotted in the figure (below).  
Cosmo_torso_no-instruction_640x480_100-1-470-256_total-motion.fig      
 MATLAB figure plotting total motion:    
Cosmo_torso_no-instruction_640x480_100-1-470-256_sumdiff.jpg
"Total motion" integration of cropped image, which represents all sequential frame pixel differences counted (above threshold) across the video.            

MATLAB command:
>> video_frames_diff_compare_v1( 'Cosmo_torso_no-instruction_640x480.avi', 1, 300, 8.0, [100 1 470 256], true, true );

Output file:
Cosmo_torso_holding-still_640x480-diff-1_400.avi
A video showing the difference frames on top, and the original cropped frames on the bottom.

Example analysis

For the Cosmo_torso_no-instruction_640x480.avi (10 MB) video, Cosmo was asked to stand in front of the camera, with no other explicit instructions about what to do.
Example frame, 500th
Example (link to) full frame, the 500th, of the video.
Example extracted frame with blink, link to
Example (link to) cropped frame (bottom) and difference frame (top).
Example extracted frame with blink, link to
"Total motion" integration of cropped image, which represents all sequential frame pixel differences counted (above threshold) across the video.

For the Cosmo_torso_holding-still_640x480.avi (10 MB) video, Cosmo was asked to look at a point on a far wall and "hold as still as possible for a couple of minutes".
Example frame, 500th
Example (link to) full frame, the 500th, of the video.
Example extracted frame with blink, link to
Example (link to) cropped frame (bottom) and difference frame (top).
Example extracted frame with blink, link to
"Total motion" image, which represents all sequential frame pixel differences counted (above threshold) across the video.

Motion estimation plot for "no instruction" case, at several time differences. Slower or drifting motions are shown as wider peaks, and fast transient motions (like eye blinks) are shown as (blue) sharp peaks.


Motion estimation plot for "holding still" case, at several time difference ranges. Most of the highest transient (dark blue) peaks are eye blinks.
[Note the difference in y-axis scale from the figure above.]


    The current code (video_frames_diff_compare_v1.m) isn't documented well, and there are many extraneous lines and odd naming conventions, leftovers from experimentation. Consider it a "beta test version".

    I call it "motion estimation" but the algorithm is more accurately described as finding the "number of pixel differences" through time.

    Here's a short pseudo-code explanation:

{ Find the difference between sequential frames, at frame k and k-1.
At every pixel, if the pixel's difference is greater than a threshold (nDiffThreshold);
Add one to the "motion estimate" at frame k, tk = tk + 1
[ Note that this is currently accomplished with the MATLAB command:
length( find( imDiff > nDiffThreshold ) )   ]

   Plot the "motion estimate":
Plot as a time series (blue line, labeled "33 ms")
tk
Plot differences across frame pairs, separated by two time increments  (green line, "67 ms"):
  t2 - t0, t2 - t0,     t4 - t2, t4 - t2,    t6 - t4, t6 - t4,
Plot differences across frame pairs, separated by four time increments (red line, "134 ms"):
  t4 - t0, t4 - t0, t4 - t0,  t4 - t0,  t4 - t0,      t8 - t4, t8 - t4, t8 - t4, t8 - t4, t8 - t4,     t12 - t8, t12 - t8, t12 - t8, t12 - t8, t12 - t8, t12 - t8
...
}
    I think the most confusing part of the code is plotting at different frame difference increments. My purpose was to get a feel for "brief changes" (like eye blinks) and "slow drifts" (like body sway). A better way to plot this would be to use a running average of the motion estimate for different temporal windows.

[To Do:
    An even better way might be to find the Fourier spectrum (DFT) of the time series. The spectrum would show the power in high and low frequency components of the "motion estimates".
]

Video velocity distribution estimation

[To Do: By estimating the gradients at every position in the image, accomplished by simple shift-subtract operations on each frame, a spatial distribution of velocities can be estimated.]


Video image stabilization (remove camera and smooth background motion artifacts)

[To Do: By estimating the large scale motion between frames, camera jitter and other types of coherent motion can be removed. This process is qualitatively different than the other programs on this page because a correspondence between image blocks using a correlation metric is required, not just difference information. It is much more computationally demanding, but is still amenable to parallelization.
video_supress_camera_jitter_v2( 'FILE0085-0.avi', true ) ]


About processing speed and parallelization


    These algorithms could be very efficiently realized using a programmable (general purpose) GPU.

"Recently NVidia began releasing cards supporting an API extension to the C programming language called CUDA ("Compute Unified Device Architecture"), which allows specified functions from a normal C program to run on the GPU's stream processors. This makes C programs capable of taking advantage of a GPU's ability to operate on large matrices in parallel, while still making use of the CPU where appropriate. CUDA is also the first API to allow CPU-based applications to access directly the resources of a GPU for more general purpose computing without the limitations of using a graphics API."

"AccelerEyes LLC builds programming tools for parallel programming and visual computing on GPU chipsets. The company released Jacket, a tool to compile MATLAB code for CUDA-enabled GPUs, in June 2008."

OpenVIDIA : Parallel GPU Computer Vision

The OpenVIDIA project implements computer vision algorithms on computer graphics hardware, using OpenGL, Cg and CUDA. The project provides useful example programs which run real time computer vision algorithms on single or parallel graphics processing units(GPUs).

OpenVIDIA utilizes the computational power of the GPU to provide real--time computer vision much faster than the CPU is capable of, and leaves the CPU free to conduct other tasks beyond vision.

This project was founded at the Eyetap Personal Imaging Lab (ePi Lab) at the Electrical and Computer Engineering Group at the University of Toronto. It is being expanded to include contributions from many sources.


Programs and code

    The example images and animations were generated using the following video files and MATLAB programs:

get video frame
video frame difference
video_frames_diff_compare
video total motion
example video files


get_video_frame.m
Select a single frame from a video, and optionally show the image and/or write it to a PNG image file.

Example usage (see the file header for details):
Example extracted frame, link to  
Example MATLAB command:
>> get_video_frame ( 'Marks_face_test_640x480.avi', 239, true, true );
Example extracted frame with blink, link to  
Example MATLAB command:
>> get_video_frame ( 'Marks_face_test_640x480.avi', 245, true, true );


video_frame_diff.m
Get absolute difference of any pair of video frames. Each color channel of the 3 x 8-bit frames are differences independently.

Example usage (see the file header for details):
Example frame diffeernce, link to  
Example MATLAB command:
>> video_frame_diff ( 'Marks_face_test_640x480.avi', 239, 245, 8.0, true, true );

This image is the absolute difference between the two frames (#239 and 245) shown above, with no processing except for a luminance gain of x8. The frames are separated by about 167 ms. Note that the eyes are mostly shadowed and low contrast, which contributes to the orange tones in the difference image.



video_frames_diff_compare_v1.m
Estimation of total motion based on absolute differences between frames, without respect to the direction of motion that causes differences.

Example MATLAB command:
>> video_frames_diff_compare_v1( 'Cosmo_torso_no-instruction_640x480.avi', 1, 300, 8.0, [100 1 470 256], true, true );

video_total_motion_v2.m
Estimation of total motion based on absolute differences between frames, without respect to the direction of motion that causes differences.

Example MATLAB command:

>> video_total_motion_v2( 'Cosmo_torso_no-instruction_640x480.avi', 0 )
video_supress_camera_jitter_v2.m
Work in progress. Estimation of and correction of background motion due to small camera (or full field) motion.

video_supress_camera_jitter_v2( 'FILE0085-0.avi', true )

-> block_motion_v5.m
-> block_correlate_v1.m
-> velocity_map_CA_interpolate_v1.m
-> block_correlate_v1.m
->reverse_distortion_interp_image_fa_v1.m
To Do:
Scale-space image pyramid representation, use to estimate motion of large blocks, filter down to small blocks.
Pass large block size motion estimate to small size.
velocity_map_CA_interpolate.m
Use a CA to regionally confirm quality and  interpolate correspondences ().
Allow for discontinuous velocity regions.
Cell state:   
Measured value (local correlation maximum position)
x-component of velocity
y-component of velocity
Qstd (measured standard deviation -- magnitude error)
Qpeak (measured width of correlation peak -- localization error)
Background value estimate (interpolated or measured)
Confirmed measurement (regionally confirmed measured value)
Transition rules:
Based on:
Quality weighted value of current position
Quality weighted sum of 4-neighborhood mode
Quality weighted sum of 8-neighborhood mode
Termination condition:
All unconfirmed background estimates stable
Include reduced block size margins
Edge padding (in CA or post hoc?)


Reverse image distortion interpolation using large oversampling grid.
          interpolate_distortion_map_v1.m
reverse_distortion_interp_image_fa_v1.m
Given an image and a map of how it is distorted, interpolate the undistorted image. (see the file header for details)
Apply reverse interpolation to velocity (disparity) maps?
Smooth interpolation maps in time (spatio-temporally filtering of high frequencies)?
Will a space-time gaussian filter applied to the 3-D volume do the trick?
CA filling-in? For smoothed velocity maps, no filling-in required (excepting edges).

Example video files

    Most AVI and MPG formats on Windows systems, and AVI and MOV on Mac systems are recognized by the MATLAB programs, using the mmreader function.
    These short video clips were recorded at 1440 x 1080 px. in MOV format, with downsampling and format conversion using ImTOO MOV Converter.
Marks_face_test_640x480.avi

Close up of face in bad lighting with various small head translations and rotations and blinks.

7.0 MB, 640 x 480 px., AVI format, 20 sec, 643 frame, 29.97 frames per second.
Vertical stretching caused by incorrect format conversion.
Cosmo_torso_no-instruction_640x480.avi

Cosmo was asked to stand in front of the camera, on a dark background, with no other explicit instructions about what to do.

10 MB, 640 x 480 px., AVI format, 25 sec, 776 frame, 29.97 frames per second.
Vertical stretching caused by incorrect format conversion.
Cosmo_torso_holding-still_640x480.avi

Cosmo was asked to look at a point on a far wall, on a dark background, and "hold as still as possible for a couple of minutes".
10.0 MB, 640 x 480 px., AVI format, 25 sec, 776 frame, 29.97 frames per second.
Vertical stretching caused by incorrect format conversion.


References

A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms

Jackdaw eyes and gaze perception:

Jackdaw eye thumbnail, link to
Eurasian Jackdaw, Corvus monedula. This is the smallest species of corvid (crows and ravens). Image: Wikipedia [larger view].

Auguste M.P. von Bayern & Nathan J. Emery (2009). Jackdaws Respond to Human Attentional States and Communicative Cues in Different Contexts. Current Biology, 19 (7) DOI: 10.1016/j.cub.2009.02.062 [free PDF].

Birds can "Read" Human Gaze, ScienceDaily (Apr. 4, 2009)

Jackdaws seem to recognize the eye's role in visual perception, or at the very least they are extremely sensitive to the way that human eyes are oriented.

...

Unlike most birds, jackdaws' eyes have a dark pupil surrounded by a silvery white iris. The researchers said they believe jackdaws are probably sensitive to human eyes because, as in humans, eyes are an important means of communication for them. The hand-raised birds examined in the study may be even better than wild jackdaws at attending to human gaze and responding to the gestures of the people who have raised them.

Human Eyes Speak Volumes to Birds, Living the Scientific Life

Ten hand-raised jackdaws were placed into a threatening situation where a preferred food item -- the "reward" -- was presented to them while in the presence of a human. The threatening situation was the result of using a person who was a stranger to the birds and comparing the birds' reactions to when in the presence of a person who was familiar to them.

...

"We may have underestimated the psychological realms of birds," von Bayern remarked. "Jackdaws, amongst many other birds, form pair bonds for life and need to closely coordinate and collaborate with their partner, which requires an efficient way of communicating and sensitivity to their partner's perspective."

"Early cortical specialization for face-to-face communication in human infants"
Tobias Grossmann, Mark H Johnson, Sarah Lloyd-Fox, Anna Blasi, Fani Deligianni, Clare Elwell, and Gergely Csibra
Proc Biol Sci. 2008 December 22; 275(1653): 2803–2811
"This study examined the brain bases of early human social cognitive abilities. Specifically, we investigated whether cortical regions implicated in adults' perception of facial communication signals are functionally active in early human development. Four-month-old infants watched two kinds of dynamic scenarios in which a face either established mutual gaze or averted its gaze, both of which were followed by an eyebrow raise with accompanying smile. Haemodynamic responses were measured by near-infrared spectroscopy, permitting spatial localization of brain activation (experiment 1), and gamma-band oscillatory brain activity was analysed from electroencephalography to provide temporal information about the underlying cortical processes (experiment 2). The results revealed that perceiving facial communication signals activates areas in the infant temporal and prefrontal cortex that correspond to the brain regions implicated in these processes in adults. In addition, mutual gaze itself, and the eyebrow raise with accompanying smile in the context of mutual gaze, produce similar cortical activations. This pattern of results suggests an early specialization of the cortical network involved in the perception of facial communication cues, which is essential for infants' interactions with, and learning from, others."
 
"Reliance on head versus eyes in the gaze following of great apes and human infants: the cooperative eye hypothesis"
Michael Tomasello, Brian Hare, et al.
Journal of Human Evolution
In Press, Corrected Proof, Available online 20 October 2006

"As compared with other primates, humans have especially visible eyes (e.g., white sclera). One hypothesis is that this feature of human eyes evolved to make it easier for conspecifics to follow an individual's gaze direction in close-range joint attentional and communicative interactions, which would seem to imply especially cooperative (mututalistic) conspecifics. In the current study, we tested one aspect of this cooperative eye hypothesis by comparing the gaze following behavior of great apes to that of human infants. A human experimenter “looked” to the ceiling either with his eyes only, head only (eyes closed), both head and eyes, or neither. Great apes followed gaze to the ceiling based mainly on the human's head direction (although eye direction played some role as well). In contrast, human infants relied almost exclusively on eye direction in these same situations. These results demonstrate that humans are especially reliant on eyes in gaze following situations, and thus, suggest that eyes evolved a new social function in human evolution, most likely to support cooperative (mututalistic) social interactions."

The Expression of the Emotions in Man and Animals” (1872)
Charles Darwin

Darwin noted the universal nature of facial expressions in the book: "...the young and the old of widely different races, both with man and animals, express the same state of mind by the same movements."

Gorilla-viewing glasses prevent eye-contact  (No Eye-Contact Glasses)

The Rotterdam Zoo is giving away cardboard glasses that make it appear that you're looking off to one side; these are gorilla-viewing glasses, meant to avoid incidents in which gorillas attack visitors for making eye contact with them. The glasses' introduction follow an attack on a woman by an escaped gorilla; the specs are sponsored by a local health-insurance company:

no eye contact glasses

Apple Recasts iMovie With Improved Features (about iMovie '09)

David Pogue, February 12, 2009
New York Times

"The killer app is image stabilization. It takes a long time to apply to a clip--several minutes each--but it winds up making jerky footage smooth, even if you were filming while hiccuping on a camel ride during an earthquake. You control the degree of smoothness; that's lucky, since 100 percent steady looks almost freakishly unnatural.

This feature works fantastically well--so much, in fact, that it's ruined everyone else's videos for me. Now, every time I see a handheld camera shot--on YouTube, on the news, in a documentary, I struggle to suppress the instinct to mentally apply iMovie stabilization to it. I just can't overstate what a revelation this feature is--and how much more watchable your home movies become."

How your looks betray your personality, and Fearful expressions evolved to mimic babies' faces

"The idea that a person's character can be glimpsed in their face dates back to the ancient Greeks. It was most famously popularized in the late 18th century by the Swiss poet Johann Lavater, whose ideas became a talking point in intellectual circles. In Darwin's day, they were more or less taken as given. It was only after the subject became associated with phrenology, which fell into disrepute in the late 19th century, that physiognomy was written off as pseudoscience.

Now the field is undergoing something of a revival. Researchers around the world are re-evaluating what we see in a face, investigating whether it can give us a glimpse of someone's personality or even help to shape their destiny. What is emerging is a "new physiognomy" which is more subtle but no less fascinating than its old incarnation.

First impressions are highly influential, despite the well-worn admonition not to judge a book by its cover. Within a tenth of a second of seeing an unfamiliar face we have already made a judgement about its owner's character - caring, trustworthy, aggressive, extrovert, competent and so on (Psychological Science, vol 17, p 592). Once that snap judgement has formed, it is surprisingly hard to budge. What's more, different people come to strikingly similar conclusions about a particular face - as shown in our own experiment (see "The New Scientist face experiment")."


Different receptive fields in axons and dendrites underlie robust coding in motion-sensitive neurons.
 
Elyada et al. ,Nature Neuroscience, 2009
From ScienceDaily (Feb. 28, 2009), 
How One And The Same Nerve Cell Reacts To Two Visual Areas In Flies

A small network of only 60 nerve cells in each cerebral hemisphere suffices the blowfly to integrate visual motion information. The resulting information is then used in the control and correction of the fly's flight manoeuvres. However, flies clearly demonstrate just how efficient these 60 cells actually are when they dodge obstacles while flying at high speed and land upside-down on the ceiling.

...

Complexity by means of connectivity

"However, the most fascinating aspect of these VS-cells is that the closer we examined the network, the more complex it appeared", group leader Alexander Borst reports. He and his group at the Max Planck Institute of Neurobiology are devoted to investigating the motion vision of flies. Only recently, Borst's co-worker Jürgen Haag showed that VS-cells are connected on two different levels. It was well known that in their input regions, the cells collect incoming signals from nerve cells which represent local motion information coming from the eye. Yet, it came as a surprise that the cells had a second source of information. The scientists found electrical connections between neighbouring VS-cells in the cells' output regions. Computer simulations of this network led to the following assumption: Information received from a VS-cell's "own" receptive field is first compared with the information received by its neighbouring cells. Only then is the information relayed to cells further downstream in the network for the purpose of flight control.

Babies can tell apart different languages with visual cues alone

Visual language discrimination in infancy
Weikam, Vouloumanos, Navarra, Soto-Faraco, Sebastian-Galles & Werker. 2007.
Science 316: 1159



-----------------------------------
There are no restrictions on use of the images and videos on this page. Claiming to be the originator of the material, explicitly or implicitly, is bad karma. A link (if appropriate), a note to dow[at]uoregon.edu, and credit are appreciated but not required. There may be restrictions on the programs and code, as these were developed (by Mark Dow) at the University of Oregon Brain Development Laboratory for research purposes.

Comments are welcome (dow[at]uoregon.edu).