Missing sources

Uploaded the remaining source packages for for nimage, nmath, levset, nmisc.

No Comments

Theme

Changed the theme to a home brewed one that was mostly generated using blender. Added the random movies below. Still needs a little bit of touching/tweaking.

No Comments

Remaining

At this point, there are several projects that I hope to post up here

  • Course projects (Multi-Agent robotics, Silhouette shadow mapping, K-best first search (with perimeter), Video-based augmented reality, Visual tracking with AAMs, Matlab vectorization, ..older (undergrad projects)).
  • Tile world
  • Other libraries (nsfs, nappear, nmisc, ngeomtc)
  • Old windows test apps.

No Comments

A few more videos added

Some other details cleaned up as well. Check out the new videos, some should appear below. Most are on this server; a couple are also on my youtube account.

No Comments

New MSc videos

I just found a slew of old videos in scratch space on the drives at school that relate to my Master’s thesis. The videos should appear in the project page

No Comments

Phd progress moved

Moved over the phd progress page from the CS website. Need to also move the fingers example. Check it out here.

No Comments

tile world

Contract work. A simple environment (search the web) for agents to learn in.

The core functionality was implemented, but to my knowledge no learning agents were actually implemented in the environment.

More details, and potentially source to come.

No Comments

ngeotc

More to come.

, ,

No Comments

nsfs

More to come.

, ,

No Comments

nappear

More to come.

, ,

No Comments

Image-Based Face Tracking for VR

Not so much of a research topic as it was an attempt to duplicate some YouTube video that did Head Tracking for VR using a WiiMote (This wasn’t just some YouTube Video, but actually quite a popular one.)

There is a company seeingmachines that has a commercial version of a head tracker that they use for a similar purpose.

The non-pattern based one uses a 4DOF SSD tracker. I’m currently working on a port of the demo for the Mac.

,

No Comments

Bomerman 4k

Yep, looks pretty crappy. It isn’t that easy to make a game fit into 4096 bytes. I thought it was easier, but once you set up a region to draw and get your keyboard input you really don’t have much space to work with. Not to mention the overhead from extra files in the jar-file nor the extra space taken by having multiple classes.

There are some real contenders for these types of games up at Java unlimited, which hosts a 4k game contest.

Executable (bomb.jar)
Source Code

,

No Comments

JShape

The JShape applet has been updated, and there are some sample images as well. Some of the tilings:

No Comments

Phd Progress

Vision-based Modeling of dynamic Appearance and Deformation of Human Actors


Abstract:

The goal of the proposed research is to capture a concise representation of
human deformation and appearance in a low-cost environment that can be seamlessly integrated
into entertainment and Virtual Reality applications–applications that often require
relighting, high levels of realism, and rendering from novel viewpoints. Geometric modeling
techniques exist in the current state of the field, but they focus solely on
geometric deformation and ignore the appearance component. I propose
a combined model of both geometric and appearance deformation, leading
to a more compact representation while still achieving high levels of realism.
Furthermore, many existing methods require input data from artists or expensive
Laser scanners. The proposed vision-based method is less expensive
and requires only limited manual intervention.

In a controlled environment, several cameras will be used to acquire a dense
static geometry and a basic appearance model of a street-clothed human (e.g., a texture mapped model).
A skeletal model is manually aligned with the existing geometry,
and the actor performs a sequence of predefined motions. Multi-image vision-based
tracking techniques are used to extract the kinematic motion parameters that account for the
gross motion of the object. Multi-view stereo and silhouette cues, and temporal
coherence are used to extract the time-varying residual geometric deformation. These time-dependent
geometric quantities, and the time and view-dependent photometric quantities are used to create
the final compact model of appearance and geometric variation. Following several graphics techniques
for modeling articulated deformation and leveraging existing tools for image-based rendering,
the deformation model is built on top of linear blend skinning. Appearance and geometric variation
are modeled together as a function of abstract interpolating parameters
that include, e.g., relative joint angles and view angles. Examples of deformation include muscle bulging
and some forms of cloth budging. We model this compactly using a dimensionality
reduction and sparse data interpolation, where several low-dimensional subspaces and corresponding
interpolation spaces are used, effectively clustering
portions of the surface that are affected by the same abstract interpolators. Contrast to many of the
vision-based human modeling techniques, our complete model can be re-rendered under novel viewpoint,
novel animation, and even novel illumination when the illumination during capture is calibrated

The specified model also has potential applications in the use of appearance and
deformation transfer between different subjects. Furthermore, the combined geometric and appearance
model will almost directly transfer to similar domains, such as modeling hand deformations, or
related domains, as facial deformations. An improved model of geometry and appearance could also
be used to improve markerless vision-based motion capture. This work also hopes to better identify the
range of clothing and deformations that can be both captured and satisfactory modeled as a function
of relative joint angles neighboring rigid body velocities and other related external factors, such as direction
of gravity, and wind.

Documents

The third version of candidacy report is now available. The document is currently
a work in progress and should not be redistributed candidacy.pdf (Updated: Wed Apr 18 12:01)

Update: I passed my candidacy, more relevant details to the exam are on a separate page

Media

Multi-view tracking preliminary results.

Testing of collision bounding representation
ben_collision.avi

,

No Comments

Tetris source and movies added

Added the source and a movie for the tetris08 project. Movie shows the AI with a history of 2 playing for a little bit.

No Comments

Moved over the msc thesis

All MSc stuff from the CS website is now here.

No Comments

Fixed up some..

of the movie links for my masters thesis.

No Comments

Grid view

A different view for the projects in a grid fashion.

No Comments

Content to come

In the near future I will start adding some real content. Been caught up in some other tasks lately, and trying to actually enjoy some of our short lived summer.

No Comments

If you are reading this…

..then your thoughts are actually being sucked into a black hole.

This is pretty much a placeholder with stubby content on stuff. Give it some time, I will update it.

Oh yeah, and grow a beard, or even a mustache, too.

No Comments

Libraries added … pubs included

Some of the libraries (nimage, nmath, levset) now have entries.

No Comments

levset

This library contains classes that implement 2D/3D levelsets (full and narrow-band).

Features:

  • explicit and implicit schemes for basic evolution equations.
  • marching squares/cubes to obtain a surface.
  • fast marching method (FMM) for re-initialization
  • loading/saving data

There are also SIP python bindings, making it easy to prototype a solution. For example, to perform chen-vese segmentation, you would define a function that defines the evolution:

# evolution function, returns how much to move and maximum time step.
def fun(levset, image, stats, x, y):
l, d, k = levset(x,y), dirac(levset[x,y],2.0), levset.getCurvature(x,y)
pix = (image.pixel(x,y)&0xFF)/255.0

pin, pout = (pix-stats[0])**2, (pix-stats[1])**2
upd = d*(ak*k+(pin-pout))

return (upd, 0.98/(math.fabs(d*(2.0*ak/(xsp*xsp)+2.0*ak/(ysp*ysp))) + 0.01))

And then you would interleave this function call (bound with extra parameters using a lambda function), with the levelset motion and re-initialization calls


func = lambda levset,x,y: fun(levset, self.image, stats, x, y)
while not done:
stats = computeStats()
for i in xrange(0,3):
levset.moveWithCurvature(func)
levset.ensureSignedDistanceFMM()
#...

,

No Comments

nmath

Basic math and vector routines. Features:

  • Special classes for common vector/matrix sizes. General matrix class with interface to lapack for numerical routines.
  • Minpack for non-linear least squares.
  • Smart pointered data; all copies are shallow.
  • Python interface.

,

No Comments

nimage

Basic c++ image library. Features:

  • Templated image classes (integer, floating)
  • Smart-pointered; copies are all shallow.
  • Plugins for input/output (jpeg, png, movies)
  • Basic filtering operations (signed distance function).
  • Python wrappers.

,

No Comments

JShape

A little applet that will generate random shapes (and pack them into a rectangle). Try playing with the settings, and then you can drag the drawing from the canvas into your editor to edit the shapes. Update: Added a tiling of the plane, but you will have to use the webstart version (due to permissions). If the applet does not load, try the web launch .
The source code is now also freely available (for the front-end at least):  rshape-0.2.zip

,

No Comments