Multiple cameras? 
Posted: 16 May 2007 12:17 PM   [ Ignore ]
RankRank
Joined  2007-05-09
Total Posts:  137
Jr. Member

Has anyone tried a multiple camera setup? I imagine the placement would be quite a feat to match up each camera’s viewing dimensions. If this was possible, technically the images could be stitched together as a single larger image, and then processed for tracking (or perhaps in a different manner to determine tracking across cameras). My camera, running at 320x240 runs smooth; I imagine a faster computer, dual-core, could run maybe 2 or more of these in a single pass without much slowdown; although I am not positive. If so, 4 cameras could be put together to make an impressive total capture resolution, 1280x960? If the CPU load would be too intense, maybe low-end firewire cameras could be used, to offload the cpu work.
Just a thought.

 Signature 

my weblog
peepfair.com, slowly being developed, please use freely

Profile
 
 
Posted: 16 May 2007 01:03 PM   [ Ignore ]   [ # 1 ]
Avatar
RankRankRankRankRankRank
Joined  2007-04-08
Total Posts:  2293
Moderator

I don’t really know much about this, but I do know it’s possible. The problem is I don’t know everything you would need. I don’t believe touchlib is already equipped to do this, but I know in vvvv it is definatley possible to do this by haveing multiple video inputs, and merging them together. For the best quality and lowest latency, you may need a video capture card. I’m trying to look up more information online and the vvvv forum to find out more.

Here’s an example in vvvv example patch. I just tried it and it works with my 2 usb cameras. I could try connecting my firewire cam too and see how it performs with 3 cameras. I haven’t tried blob tracking yet.

Update:

I know very little about vvvv, but I made a patch that works with the fingerpaint blob tracking patch with multiple cameras. You can try if you’d like. I can’t tell how much more CPU it uses really. My patch also isn’t the most efficient probably, but it works. You can download the file here: http://h1.ripway.com/cerupcat/2cameras.zip

 Signature 

Follow me on:
My Website - Youtube - Twitter - Linkedin

Profile
 
 
Posted: 17 May 2007 11:13 AM   [ Ignore ]   [ # 2 ]
RankRank
Joined  2007-05-09
Total Posts:  137
Jr. Member

Thanks for the quick response. I thought about it some more, and I think the multiple cameras is very doable. Perhaps the cameras can be pointed at the same exact spot and simply combine the images into a whole, overlaying each image ontop of eachother. I’m surprised that not many people on the forums have posted anything about this type of topic; perhaps because it’s mostly software based-- programming this would be a hassle. I’ll try out your software soon as I get a chance, thanks!

 Signature 

my weblog
peepfair.com, slowly being developed, please use freely

Profile
 
 
Posted: 18 May 2007 07:29 AM   [ Ignore ]   [ # 3 ]
RankRankRankRank
Joined  2007-01-08
Total Posts:  1038
Member

@ scape, probably because most people here are just using one camera for their projects

I uploaded the file of cerupcat as an attachment, in case his domain ever goes offline or whatever

File Attachments
2cameras.zip  (File Size: 7KB - Downloads: 104)
Profile
 
 
Posted: 18 May 2007 03:14 PM   [ Ignore ]   [ # 4 ]
Rank
Joined  2007-04-18
Total Posts:  13
New Member

In my prototype I use a double camera set up. I wanted to achieve a higher precision and since my total effective screen size is 1,2 x 0,9m I ended up with using two Unibrain Fire-I camera’s with each 640x480px @ 30fps.
Both camera’s are rotated 90degrees so I can glue the two video outputs together, resulting a higher total resolution with screen ratio 4:3 (since this is the output from the projector). But by doing this I had to trow away some of the camera’s pixels (since (480px x2) X (640px) is not 4:3).

I tried two ways in combining the two camera’s output in a single list of total cursors:

The first was combining the two video matrixes into a new videomatrix and then ran the cursor tracking algorithm. This resulted in a very slow fps from the total patch (whole package is written in MAX/MSP).

Then I tried using two different processors for each camera (I’m using a Mac Pro quad-core Intel Xeon to run both the cursor tracking and the GUI). So I used two patches, each for calculating the cursors for one camera. The resulting two cursor lists were recalculated by a third patch into one total cursor list. This resulted in the same amount of fps as by using just one camera (30fps) since the two camera patches run onto two separate cores.

The only drawback is that I really have to position the two cameras accurately otherwise I’ll get double cursors at the centerline of the screen.

The first picture is a sideview of the to cameras, the second picture is a top view through the with silicone covered acryllic (te silicone makes the image a little vague, but I’m still very glad with the almost transparent result of the silicone pouring!!!)

Image Attachments
two cams.jpgtop view.jpg
Profile
 
 
Posted: 18 May 2007 04:06 PM   [ Ignore ]   [ # 5 ]
Avatar
RankRankRankRankRankRank
Joined  2007-04-08
Total Posts:  2293
Moderator

Arjen, if possible could you post your MAX patch? If you’d rather not, that’s ok. It’s just that I might seeing if I can port it over to PD, since I tried making a PD blob patch but I couldn’t get it working. If not, I’d like to try using MAX/MSP. Thanks.

I wonder also which is more efficient, using vvvv or max for multiple cameras. My vvvv patch really is only to demonstrate that two cameras can be used, and it’s a very basic patch, but works well enough for demonstrating.

 Signature 

Follow me on:
My Website - Youtube - Twitter - Linkedin

Profile
 
 
Posted: 18 May 2007 05:32 PM   [ Ignore ]   [ # 6 ]
Rank
Joined  2007-04-18
Total Posts:  13
New Member

I don’t have the patch here (its at the Uni and I’ll wait with posting my software untill my project has ended) but I can help you in the right direction.
I used the MAX/MSP CV.JIT objects from Jean-Marc Pelletier which can be found at http://www.iamas.ac.jp/~jovan02/cv/
There is a detailed manual at his site as well.

I’ve used the following objects from the V.JIT package (and of course some jitter objects like jit.qt.grab):
cv.jit.blobs.centroids (for retrieving the center of blobs which exceed the set threshold of white pixels)
cv.jit.label (for labeling the significant blobs)

To properly use the cv.jit.blobs.centroids you may need to retrieve a binary image of the camera input.
O and reading and playing with the help files of the objects gives you a good impression of their possibilities.

Hopefully this will help you on your way

Profile
 
 
Posted: 18 May 2007 05:43 PM   [ Ignore ]   [ # 7 ]
Avatar
RankRankRankRankRankRank
Joined  2007-04-08
Total Posts:  2293
Moderator

Great thanks Arjen. I’ll take a look at that. I forgot I had seen something using cv.jit.blobs.centroids and blob detection in Max on another site before. I’m not as familiar with MAX as I am with PureData, but I think that’ll help a lot especially when looking at the help file. If I need some help maybe I can ask Miller Puckette since he’s on faculty at my school.

Thanks again! And your setup looks nice from your pictures.

 Signature 

Follow me on:
My Website - Youtube - Twitter - Linkedin

Profile