Thanks for all the replies on this.
I'm going to take a look at what is available. I haven't seen anything yet
that uses the "image outline" patches to define regions -- which seems to be
a better start before color region.
However, I think that once I get something that "kinda works" -- it's going
to take a guru in CIKernel function to optimize.

Thinking out loud (before looking at all the ideas -- I like to do this to
see if I'm on track, and to get some creative ideas that might change after
someone gives me an answer);
I think I can assume that someone waving their hands first to get
"attention" from the kiosk, or just noticing that the kiosk is doing
something when they pass in front of it -- then after that, the motion would
be in a region within, say 128 pixels (1/4 the image size) from the previous
frame grab-- any faster and it would be nonsense anyway. Motion detection
would activate some sort of image to give feedback of where the "hand mouse"
is pointing.

Rather than putting the "cursor" exactly where I'm detecting my X & Y for
greatest motion and smallest region, I can use some routines that "chase"
the mouse -- the cursor would follow a "smoothing" algorithm that has rate
and direction, to attempt to catch up to the user's pointing. I'll have to
plot about 5 most recent "hot pixels" and work out the most "likely" current
position, since I'm likely to get sporadic "hot spots."

Extremely Pseudo-code:
++ Assume running video camera at 15 FPS should be good enough.
++ Background extraction -- if no change in image is detected after startup
+ 10 seconds, then store image. Sample camera every 10 seconds thereafter
and see if there is a change. Somehow, I need to find a way to use "gray
levels" when using the invert and compare current to previous image, to only
get drastic changes. Flickering light or some incidental change could trick
an activation phase.
++ If a sufficient change is detected, Activate a blinking cursor.
++ If change in image every second after for 3 seconds, Activate tracker
cursor.
++ After activation, I'd crop to a 128x64 region.
++ Track "motion" area.
++ Crop to 64x64, and apply outline detection (maybe) with color region
image processing to find smallest 'region' of movement and/or most moved (if
possible)
++ Crop then to the outline of the color region (or not, depending if it
increases efficiency).
++ Then, I'm assuming I can find the "most moved" and brightest pixel of the
color region (within outline), store the X and Y coordinate.
++ I will have had to store the "master" pixel region from my 3 crops --
320x240,128x64,64x64,WxH (if a final crop was used). Any intensive image
processing should if possible, occur after the image is smaller than 64x64,
and I can use tricks and assumptions to narrow it down to this. I can assume
also that any "reasonable" speed of hand motion would be within 32 pixels of
the previous frame grab. So I look for my next crop of the 320x240 area 32
pixels away -- and throw away any region that is NOT in both frame grabs.
++ Compare hot pixel region to average of last 5 results. Don't register a
"move" if hot pixel is less than 10 (5?) pixels from last 3 sampled points.
Update cursor to "move toward" this location.
++ Fade previous hot spots, remove last hotspot.
++ If cursor is over a hotspot for 22 samples (~1.5 seconds), assume that it
is selected. Make it now follow the users motion for further action. Motion
down would bring it forward--activate a video, zoom an image or load a
Composition. Up would push it away--to put away and bring up other icons for
other options. Right to play, and Left to rewind (if video).

I'd love to use actual hands, and animate an image like virtual hands while
tracking two points like the "majority report" -- but I'm going to be happy
just to get this working. It would definitely provide good feedback,
however, to perhaps display my 5 tracking points (with fade out) to give the
user and intuition on what is being tracked and the vector. Someone might
notice it's "going after their tie" and just automatically run their hand in
front of their tie to "grab" the mouse.

I've read a few hacks out on various websites about converting a video
camera that has "low light" or night capabilities to just use the infrared--
but that would require another investment -- I'll see if this works first.
The same principles should apply, only "heat" is going to get the hand
better, and perhaps some distance information.

>> Any ideas that might use "pausing" for selection of an item on screen, some
intuitive way for a person to "click" or would make this work, are well
appreciated. I'm relatively inexperienced with QC compared to many here.

Best Regards, 
Mark Johnson

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to