SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

Motion Detection

by Corvus V Corax

I   Description         A short descripion of motiontrack
II  License             A refer to GPL v2
III Executables         A listing of all programs that make motiontrack
IV  Install             Some installation instructions
V   Parameters          A description of program commandline parameters
VI  Usage               How you could use the motiontrack programs
VII Developmet,         If anyone is interested in the code

Forks and Todos

-I Description:

Motiontrack is a set of backend tools that can be used for motion detection

! Please don't use this software to help monitor places ! ! where it impairs the privacy of other people, like ! ! monitoring public places and streets, CCTV, voyeurism...! ! http://www.stop1984.org -- against total surveillance! !

Right now it is able to detect changes between 2 images that resulted to motion (in opposition to changes doe to random clutter) and tell the areas (i called them sectors) where this motion did happen. (This process is very configurable to fit your local needs, like optimizing your images in several ways, ignoring colors and areas )

Motiontrack is also able to compare two images and check them for differences, even if the images are poorly aligned. (for example 2 scanned copies with both angle and shift derivation, as well as moderate brightness difference) It could even auto-align slightly polygonal distorted images, for example taken with a webcam at not exactly the same angle however this is currently beta code.

Path for the future is to make motiontrack able to recognize the objects which are actually moving. First thing realized now is simple pattern detection. The software should later be able to recognize for example ball = object cosisting of several arc segments around nothing

(in edge enhance view)
face = object with arcs around. horizontal lines in the lower half,

upside down 'V' above, topped by 2 circles, ... ...
where those simple geometric structures are the patterns to detect by patern matching then, and the object recognizing above being done by simple neuralnet AI ;) or some really cool hack, dunno, notthing done yet.

The pattern detection is thus far able to turn line art into ASCII art, and search for distinctive features for auto-alignment :-)

-II License:

Gnu Public License (GLP) 2 (or above)
(see COPYING)

-III Executables:

 mdiffer        [ --color-exclude [<red>,<green>,<blue>:<width>] ... \
                ... [<red>,<green>,<blue>:<width>] --color-end ] \
                <source1> <source2> [<destination>] [--help] [-h]

 mnormlz        [ -v <value> | --value=<value> ] <source> [<destination>] \
                [--help] [-h]

 menlight       < -v <value> | --value=<value> > <source> [<destination>] \
                [--help] [-h]

 mblur          [ -v <value> | --value=<value> ] \
                <source> [<destination>] [--help] [-h]

 mresize        < -v <value> | --value=<value> > <source> [<destination>] \
                [--help] [-h]

 menhance       [ -s <value> | --size=<value> ] \
                [ -a <value> | --amount=<value> ] \
                [ -q <value> | --quality=<value> ] \
                <source> [<destination>] [--help] [-h]

 msectors       [ -s <value> | --sensitivity=<value> ] \
                [ --absolute ] \
                [ --exclude [<x>,<y>] [<x>,<y>] ... [<x>,<y>] --end ] \
                [ --sectorsize=<value>] <source> [<destination>] [--help] [-h]

motiontrack [ -s <value> | --sensitivity=<value> ] \

                [ --absolute ] \
                [ -e <value> | --enlight=<value> ] \
                [ --blursize=<value> ] \
                [ --resize=<value> ] \
                [ --enhsize=<value> ] \
                [ --enhmul=<value> ] \
                [ --enhqual=<value> ] \
                [ --blur ] [ --no-enhance ] \
                [ --norm ] [ --normsize=<value> ] \
                [ --magnify ] [ --shrink ] \
                [ --color-exclude [<red>,<green>,<blue>:<width>] ... \
                ... [<red>,<green>,<blue>:<width>] --color-end ] \
                [ --exclude [<x>,<y>] [<x>,<y>] ... [<x>,<y>] --end ] \
                [ --sectorsize=<value> ] \
                <source1> <source2> [<destination>] [--help] [-h]

 masciiart      <source> [<destination>] [--help] [-h]

 mscale         [ -x <value> | --width=<value> ]
                [-y <value> | --height=<value> ]
                [ --sourcecoords <x1 y1 x2 y2 x3 y3 x4 y4> ]
                [ --destcoords <x1 y1 x2 y2 x3 y3 x4 y4> ]
                <source1> [<destination>] [--help] [-h]

 malign         <reference> <test> [<destination>]
                [--help] [-h]

-IV Install:

Motiontrack needs an installed image manipulation library to compile. This can be either libgd or ImageMagick, with support for your favorite image formats, installed on your system.

Note that the GD library is currently the default, since it has been used longer and the code is more speed optimized. This may change in the future.

If you got the motiontrack sources from CVS, you first have to create the configure scripts by running

./autogen.sh <configure options>

(which will automatically run ./configure with these options afterwards)

If you are installing from an tarball, you can also run

./configure --prefix=<path to install>

where <path to install> is for example /usr if you want your executables in /usr/bin, or /usr/local if you want them in /usr/local/bin. standard is /usr/local.

Note that the pre-created configure script has created invalid makefiles on a bsd system i tried it on, if configure misbehaves, regenerate a local version via autogen.sh and your autoconf/autoheader/automake installation.

configure searches for all programs and libraries needed by motiontrack to compile in your system standard library and include paths. You can give hints where to search additionally, by specifying

./configure --with-searchdirs=<prefix1>:...:<prefixN>

or setting some environment variables accordingly, like LIBRARY_PATH and C_INCLUDE_PATH, or the -L<dir> and -I<dir> options in CFLAGS, CPPFLAGS or LDFLAGS.

./configure --help

lists all possible configure options, like library preferences, GD versus ImageMagick, debug options, ...

Note that you can compile in multi-processing support when specifying --enable-cluster to configure, since motiontrack 0.1.3. This adds the optional flag [ -j <pnum> ] to all cluster enabled executables, where you can tell motiontrack how many processes to spawn for image processing.

run

make
make install

to create and install the whole package. (all executables, sorry, no manpage yet)

-V Parameters:

To see a short usage description run each file without parameters.

mdiffer [ --color-exclude [<red>,<green>,<blue>:<width>] ... \

         ... [<red>,<green>,<blue>:<width>] --color-end ] \
         <sourcefile1> <sourcefile2> [<destinationfile>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ --color-exclude [<red>,<green>,<blue>:<width>] \ ... [<red>,<green>,<blue>:<width>] --color-end ] is an optional set of parameters to specify colors to ignore, when checking for image differences.
A color consists of 3 RGB values, which have to be in range 0..255, ( black: 0,0,0 -- red: 255,0,0 -- green: 0,255,0 -- blue: 0,0,255 -- ... ) and a width value for exclusion accuracy. Any positive integer is accepted for width. DONT forget the --color-end tag to close the list, or motiontrack wont run

<sourcefile1> and <sourcefile2>
are to be images. If their sizes differ, only the overlapping regions will be used

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

mnormlz [ -v <value> | --value=<value> ] <source> [<destination>] \

[--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ -v <value> || --value=<value> >
when checking for minima and maxima, average over <value> pixels to discard extremas

<sourcefile>
is to be a valid image file to enlight

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

menlight < -v <value> | --value=<value> > <sourcefile> [<destinationfile>] \

[--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

< -v <value> || --value=<value> >
the resulting image will have <value>% of the source brightness specifying 100 makes a 1 on 1 greyscale copy

<sourcefile>
is to be a valid image file to enlight

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

mblur [ -v <value> | --value=<value> ] \

<sourcefile> [<destinationfile>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ -v <value> | --value=<value> ]
the brush size for blur calculation in 1/100 pixels default is 300

<sourcefile>
is to be a valid image file to blur

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

mresize < -v <value> | --value=<value> > <sourcefile> [<destinationfile>] \

[--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

< -v <value> | --value=<value> >
percentage of the original size, 100 would make a greyscale 1 to 1 copy.

<sourcefile>
is to be a valid image file to enhance

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

menhance [ -s <value> | --size=<value> ] \

          [ -a <value> | --amount=<value> ] \
          [ -q <value> | --quality=<value> ] \
          <sourcefile> [<destinationfile>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ -s <value> | --size=<value> ]
the brush size for enhance calculation in 1/100 pixels default is 400

[ -a <value> | --amount=<value> ]
multiplicator for the resulting edges found, in % default is 2000

[ -q <value> | --quality=<value> ]
the resolution of the edge search result, affects the destination image size and the calculation speed with factor 4!
default is 50, values above 100 are useless

<sourcefile>
is to be a valid image file to enhance

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the overall pixel brightness of the resulting image

msectors [ -s <value> | --sensitivity=<value> ] \

          [ --absolute ] \
          [ --exclude [<x1>,<y1>] [<x2>,<y2>] ... [<xn>,<yn>] --end ] \
          [ --sectorsize=<value> ] <sourcefile> [<destinationfile>] \
          [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ --absolute ]
use an absolute brightness threshold for sector-check instead of one relative to the average difference. This might be usefull, when auto-comparing several images where some show completely different stuff, what could produce false negatives doe to a very high "difference average"

[ -s <value> | --sensitivity=<value> ] is an optional parameter to specify the motion detection sensitivity value reaches from

        0       greatest sensitivity. motiontrack might detect any slightest
        ...     motion, but the risc of false alarm is high.
        ...
        5       the standard value, accurate motiondetection with low
        ...     false alarm risk.
        ...
        9       lowest risk of false alarms doe to flicker. but is unlikely
                to detect small motions.
                use when you want to detect intruding elephants

[ --exclude [<x1>,<y1>] [<x2>,<y2>] ... [<xn>,<yn>] --end ] is an optional set of parameters to specify sectors to ignore, when checking for motion. sectors can be of type <x>,<y> for the plain coordinates or <x>,<y>:<z> where z is ignored. this way one can use the format of the output as input without change
DONT forget the --end tag to close the list, or motiontrack wont run

[ --sectorsize=<value> ]
specifys the size of a sector in pixels. For example 20 will cause sectors to be 20x20 pixels in size. default value is 5.

<sourcefile>
is to be a valid image file to analyze

[<destinationfile>]
is the filename of an optional resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the amount of sectors with motion in it, followed by an ordered list of this sectors (if any) and their brightness value in the form:

x1,y1:brightnes1 x2,y2:brightnes2 ... xn,yn:brightnesn this format can be used, too if one wants to specify an exclude list.

motiontrack [ -s <value> | --sensitivity=<value> ] \

             [ --absolute ] \
             [ -e <value> | --enlight=<value> ] \
             [ --blursize=<value> ] \
             [ --resize=<value> ] \
             [ --enhsize=<value> ] \
             [ --enhmul=<value> ] \
             [ --enhqual=<value> ] \
             [ --blur] [ --no-enhance ] \
             [ --norm ] [ --normsize=<value> ] \
             [ --magnify] [ --shrink ] \
             [ --color-exclude [<red>,<green>,<blue>:<width>] ... \
             ... [<red>,<green>,<blue>:<width>] --color-end ] \
             [ --exclude [<x>,<y>] [<x>,<y>] ... [<x>,<y>] --end ] \
             [ --sectorsize=<value> ] \
             <sourcefile1> <sourcefile2> [<destinationfile>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ --absolute ]
use an absolute brightness threshold for sector-check instead of one relative to the average difference. This might be usefull, when auto-comparing several images where some show completely different stuff, what could produce false negatives doe to a very high "difference average"

[ -s <value> || --sensitivity=<value> ] is an optional parameter to specify the motion detection sensitivity value reaches from

        0       greatest sensitivity. motiontrack might detect any slightest
        ...     motion, but the risc of false alarm is high.
        ...
        5       the standard value, accurate motiondetection with low
        ...     false alarm risk.
        ...
        9       lowest risk of false alarms doe to flicker. but is unlikely
                to detect small motions.
                use when you want to detect intruding elephants

< -e <value> || --enlight=<value> >
if given, menlight will be run internally after the mdiffer step specify <value> as % of the source brightness, 100 does nothing

[ --normsize=<value> ]
when checking for minima and maxima, average over <value> pixels to discard extremas, when given motiontrack will normalize source images before calculationg difference. Note that will render color-exclusion useless, since this step greyscales and changes colors beforehand.

[ --blursize=<value> ]
the brush size for blur calculation in 1/100 pixels if given, mblur will be run internally after the mdiffer (or menlight) step

[ --resize=<value> ]
percentage of the original size for mresize. if given, mresize will be run internally before the menhance step

[ --enhsize=<value> ]
the brush size for enhance calculation in 1/100 pixels default is 400

[ --enhmul=<value> ]
enhance calculation multiplicator for the resulting edges found, in % default is 2000

[ --enhqual=<value> ]
the resolution of the edge search result, affects the destination image size and the calculation speed with factor 4!
default is 50, values above 100 are useless

[--norm]
same as "--normsize=5"

[--blur]
same as "--blursize=300"

[--no-enhance]
if given no enhancing takes place before sectors is being runned internally.

[--magnify]
same as "--resize=200"

[--shrink]
same as "--resize=50"

[--color-exclude [<red>,<green>,<blue>:<width>] \ ... [<red>,<green>,<blue>:<width>] --color-end ] is an optional set of parameters to specify colors to ignore, when checking for image differences.
A color consists of 3 RGB values, which have to be in range 0..255, ( black: 0,0,0 -- red: 255,0,0 -- green: 0,255,0 -- blue: 0,0,255 -- ... ) and a width value for exclusion accuracy. Any positive integer is accepted for width. DONT forget the --color-end tag to close the list, or motiontrack wont run.

[--exclude [<x1>,<y1>] [<x2>,<y2>] ... [<xn>,<yn>] --end ] is an optional set of parameters to specify sectors to ignore, when checking for motion. sectors can be of type <x>,<y> for the plain coordinates or <x>,<y>:<z> where z is ignored. this way one can use the format of the output as input without change
DONT forget the --end tag to close the list, or motiontrack wont run.

[--sectorsize=<value>]
specifys the size of a sector in pixels. For example 20 will cause sectors to be 20x20 pixels in size. default value is 5

<sourcefile1> and <sourcefile2>
are to be images. If their sizes differ, only the overlapping regions will be used

[<destinationfile>]
is the filename of an optional resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the amount of sectors with motion in it, followed by an ordered list of this sectors (if any) and their brightness value in the form:

x1,y1:brightnes1 x2,y2:brightnes2 ... xn,yn:brightnesn this format can be used, too if one wants to specify an exclude list

masciiart <source> [<destination>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

<sourcefile>
is to be a valid image file to ascii-paint

[<destinationfile>]
is the (optional) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the ASCII version of the ASCII art (while the output image is a bitmap version of this, showing the internal patterns for debug)

mscale [ -x <value> | --width=<value> ]

        [ -y <value> | --height=<value> ]
        [ --sourcecoords <x1 y1 x2 y2 x3 y3 x4 y4> ]
        [ --destcoords <x1 y1 x2 y2 x3 y3 x4 y4> ]
        <source1> [<destination>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

[ -x <value> | --width=<value> ]
is to be the width of the destination image in pixels, default is the same as the source

[ -y <value> | --height=<value> ]
is to be the height of the destination image in pixels, default is the same as the source

[ -- sourcecoords <x1 y1 x2 y2 x3 y3 x4 y4> ] these coordinates mark 4 points in the source image, which should be near the edges in the order
<top-left> <top-right> <bottom-left> <bottom-right> if not given they default to the edges itself

[ --destcoords <x1 y1 x2 y2 x3 y3 x4 y4> ] these coordinates mark the destination where you want those reference points to end at. As long as you dont try rotations of more than 20° in any direction this way, this should be quite accurate, however its still a simple apreviation algorithm in beta stage. So you will create distortions if your specify them too extremely misplaced. Default are the coords as the edges of the destination image You can speficy coords outside the image bounds for both coordinate sets.

<sourcefile>
is to be a valid image file to ascii-paint

[<destinationfile>]
is the (optional) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the ASCII version of the ASCII art (while the output image is a bitmap version of this, showing the internal patterns for debug)

malign <reference> <test> [<destination>] [--help] [-h]

[--help] and [-h]
specify on of these to get a short help. specifiying nothing does same

<reference>
is to be a valid image file to use as a reference to align the test image to

<test>
is to be a valid image file to rescale to be then compared to the reference image

[<destinationfile>]
is the (optional but recommended) filename of the resulting image to create

image filetypes are determined by filename extensions

output to <stdout> is the ASCII version of the ASCII art (while the output image is a bitmap version of this, showing the internal patterns for debug)

-VI Usage:

Using Multi Processing (clustering):

When compiled with "--enable-cluster" you can tell each motiontrack executable how many processes to spawn, default is 4 when compiled with multi processing support (and of course 1 when compiled without). Do this with

m<name> ...<options>... [ -j <number of processes> ]

When motiontrack is compiled without cluster support, this option is valid but has no effect.

Motion Detection:

You need 2 images (from a webcam or video stream), with aprox. 1 second time difference.

You can check for differences in pixel brightness between this images

with

mdiffer <source1> <source2> <destination> \

[--color-exclude <list> --color-end ]

These brightness differences indicate possible object motion between the image, as well as random flicker and smoke produced by your camera and the light sources.

If you are not interested in motion or changes that happen to be in specific colors (for example because sometimes you have random black lines, or red dots in your images you are not interested in) you can exclude everything which is in this colors in either one of the source images from the whole check.
The width parameter of colors sets the detection accuracy. a width of 2 or 3 will exclude only the specified color, while one above 100 will exclude much that does look somehow alike this color. Feel free to experiment around, while running mdiffer between any image and a black reference image, to test this values for your case.

If you get better results, you can change the brightness of these differences with

menlight -e <value> <source> <destination>

If your input images are very dark, value should be up to 400 to get optimal results, if it is too bright, specify 25 to get brightness to a quarter.

If your images are too big so they take too long to process, you can use motiontracks

mresize -v <value> <source> <destination>

tool, to get into a better magnitude of size. try 50 for value to make an image half the resoulution

Now check for possible objects in the output of mdiffer with the edge enhancer:

menhance -s <size> -q <quality> -a <mult> <source> <destination>

This edge enhancement brightly amplifies any sharp borders in the given image, which are the moved objects. But it unfortunately does light up pixel sized inconsitencies, too. Increasing the brush size makes it much slower, but enables better distinguish between real edges and random inconsistencies or compression artefacts.
If you increase size, you should decrease quality to make less checks in the same area, producing a smaller result image, otherwise it could get way too slow.
Also you can change the result multiplicator from the default *20 (2000%) to different values, which should have a similar effect as changing the sensitivity of the sector check.

Now while the random pixel changes are now represented by evenly spread spots over the image, the real movements, or moving objects are outlined in their old and new position, and their contures can be easily spotted as contiguous bright areas.

By dividing thise image in sectors of equal (default 5x5) pixel size

msectors [-s <value>] <source> [destination] [-s <value>]\

[--sectorsize=<value>] [--exclude <list> --end]

all sectors are at somehow the same average brightness doe to the equaly spread random inconsistencies, except the sectors which include real object movement which tend to be much brighter.

If you want the sectors to be 50x50 pixel, since you check in really large images, specify "--sectorsize 50" for example.

Remeber to increase or decrese sectorsize when you fiddle with the enhance quality.
For example since enhance does use quality 50% for default now i decreased the original 10x10 default sector size to 5x5 to get the same overall behaviour back.

msectors gives back an optional image with all sectors shown

depending on the given sensitivity ( -s 0 till -s 9 ) the overbright sectors are detected as motion and given back.

If you are not interested in motion in specific sectors, for example cause there is a clock in your picture at sectors 2,2 2,3 3,2 and 3,3 you can exclude them via "--exclude 2,2 2,3 3,2 3,3 --end"

If you are not interested in the technical details and dont need the images of the steps in between, you can just check for motion between 2 images with

motiontrack [ -s <value> | --sensitivity=<value> ] \

               [ --absolute ] \
               [ -e <value> | --enlight=<value> ] \
               [ --blursize=<value> ] \
               [ --resize=<value> ] \
               [ --enhsize=<value> ] \
               [ --enhmul=<value> ] \
               [ --enhqual=<value> ] \
               [ --blur] [ --no-enhance ] \
               [ --norm ] [ --normsize=<value> ] \
               [ --magnify] [ --shrink ] \
               [ --color-exclude [<red>,<green>,<blue>:<width>] ... \
               ... [<red>,<green>,<blue>:<width>] --color-end ] \
               [ --exclude [<x>,<y>] [<x>,<y>] ... [<x>,<y>] --end ] \
               [ --sectorsize=<value> ] \
               <sourcefile1> <sourcefile2> [<destinationfile>] [--help] [-h]

All text output of every executable goes to <stderr>
except for a single number representing the amont of pixel brightness or the amount of sectors with motion in it in sectors and motiontrack, which goes to
<stdout>
Also does the ascii art of "masciiart".

In addition to that, sectors and motiontrack give out an ordered sectorlist of the sectors with motion detected in it to <stdout> in the form

x1,y1:brightnes1 x2,y2:brightnes2 x3,y3:brightnes3 ... xn,yn:brightnesn

where the brightness represents the motion detected there.

You can grep this output and process in your own scripts easily :-)

Also you can specify a list of this format as an exclude list, this way saving the work of removing the useless brightness values :-))

Comparing generic images:

Generic image comparison, it much related to motiontracks approach of motion detection. However for motion detection the movement-search algorithm assumes that most parts of the images are actually the same, while in some area, movement happens.

When comparing generic images, especially images that show completely different stuff, this could lead to false negatives, so an absolute algorithm might have to be used instead. You can do that by adding the [ --absolute ] flag to "motiontrack" or "msectors".

If you do so, you might also want to disable enhancement and enable blur instead, depending on your image source. Especially when using the auto-align functions, small remeaning disalignments could result into big detected differences when being edge-enhanced.

Auto alignment:

The "mscale" program can morph around images in an interesting way while being created to fit the needs of the "malign" program, it fails badly at greater rotation angles (>45°), however you can still use it for basic re-scaling and changing the image width to height ratio.

The "malign" program assumes that while two images show the same, they are disaligned, so it searches for some unique features near the edges in one image, and then tries to find the same features in the reference image.

While this only works with derivation of some douzend pixel of shift or rotation of less than 10° like they happen if you scan an image two times without accurately aligning it on your flatbed scanner, its still might be a feature to prove itself worthy for several applications.

You could for example try to compare two webcam taken images of the same motive at slightly different angles this way.

Feel free to contact the developer (me) with feedback and suggestions.

Pattern Detecton:

Usage of

masciiart <source> [<destination>] [--help] [-h]

Your source image should be white on black line art (for optimal results). You can test it with the output of "menhance" used on your webcam images maybe you get something useful. mine produces too much 'clutter'. Hint: higher resolution images result into better ascii art

       when processing after the enhance step,
       but they might not fit in 80x25 anymore then.

-VII Development, Forks and Todos:

Actual version is 0.1.3

The stuff is getting more complex from now on, so if anyone would like to contribute now would be a good time to start, since the code is still simple enough to get throgh. Read src/TheCode.txt for a file and class overview, and the headers for function descriptions.

TODO is everything that brings motiontrack forward, optimizing code, documentation, hacking an AI, whatevery a coder can imagine ;)

Have fun

                        Corvus V Corax
                                                   corvuscorax@cybertrench.com


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.