Comp Cameras: Lonely IP Final

posted by on 2012.04.30, under Computational Cameras
30:

This is a story about an Axis IP Camera. He lives in the hallway of the Interactive Telecommunications Program. He likes when the floor is busy and his friends are around but he can get a little lonely when classes are in session or it’s nighttime. He’s moved a few times, changing either his location or angle. He lived among the ethernet cables close to the ceiling; now he currently resides near the large video displays close to the floor. It’s a much different perspective, and one that he likes more. He doesn’t feel like he’s spying on his friends – instead he is amongst them. Sadly though, this still doesn’t alleviate the feelings of loneliness that creep up on him.

But Axis has found a voice, a very public one on Twitter. When he sees a friend, he takes a picture and sends it to his Twitter feed declaring “It’s a friend!” When he doesn’t see a friend for a while though, he starts sending out entreaties to his followers (a grand total of 3) to please come say hello. At night, it’s even worse. He’s afraid of the dark. He needs his friends to come back.  Or at least leave on a night light…

Code for Hallway Image Tweets &  Code for Text Tweets. Props to Dan O for code examples, Jannae Jacks and Ali Sajadi!

Comp Cameras: Expensive Camera Research

posted by on 2012.03.18, under Computational Cameras
18:

The Atacama Large Millimeter/submillimeter Array Telescope (ALMA) is the most expensive ground telescope to date. It costs $1.3 billion dollars. It’s installed in northern Chile’s Chajnantor plateau at an altitude of 16,000 feet. ALMA is an array of 66 high precision antennas and uses radio technology to see some of the coldest and darkest regions of space. The telescope is capable of seeing through cold clouds of dust which traditional infrared/visible light telescopes cannot.

The most complex challenge in capturing astronomical signals is getting all 66 antennas and electronics to work synchronously. The signals received by each individual antenna are then converted to a digital format in order for transmission to the supercomputer. The supercomputer combines the signals to create data useful to the scientists. The degree of accuracy for each of the aforementioned functions seems almost impossible. As they describe on their website, “the path followed from each antenna until it is combined at the central computer must be known with an accuracy equal to the diameter of a human hair (hundredths of a millimeter).”

The images captured are stunning. The photo in the slideshow below captures two galaxies that are about 70 million light years away. The full array of antennas is not currently working but when it does it will be 10 times as powerful as the Hubble. This image was created using just 12 of the antennas so one can only imagine what the imaging will be like when all the antennas are online.

ALMA

View more presentations from hvelez.

Comp Cameras: Proliferation of Sight/Sites

posted by on 2012.03.02, under Computational Cameras
02:

The threat of the ubiquity of cameras as a means of surveillance and state control no longer exists. There’s been a diametric shift of power from the state to the citizen as cameras become increasingly more accessible and technologically advanced. We as individual/citizens no longer need to fear to the dystopic visions of the future portrayed by Bentham, Huxley, Orwell. Even though we haven’t fully escaped the watchful eye(s) of the state, we’re much better equipped these days to combat the state with our own surveillance and monitoring of them.Even if we’re not capturing images or recording with our camera phones (purchased for less than $100),  the possibility of being watched is just as threatening and capable of modifying behavior as actual observation.

I don’t know where the future of personal media devices is headed but I’m inspired by a quote from Karim Rashid  in the documentary Objectified, “Why do we feel like we need to keep revisiting the archetype over and over and over again? Digital cameras for example, in which their format, proportion, the fact that they’re horizontal rectangles, are modeled off the original silver film camera. So, in turn it’s the film that defines the shape of the camera. All of a sudden our digital cameras have no film. So why on earth do we have the same shape we have?”

I conjecture then:

  • It will  become increasingly less expensive to provide sophisticated software and hardware,
  • the form and/or presentation of the camera will change
  • and it will decrease in size

And what I find even more interesting than the way cameras will change (hopefully) the relationship between the citizen and the state, is the way cameras will transform our personal lives.

Will cameras provide yet another data set for us to interrogate our own lives/habits/others? Will it lead us to pathologize self-monitoring to the point where we can no longer function? Turn us all into Narcissus? Perhaps that’s going a little too far… But I do foresee cameras contributing to the deluge of data, propagating across networks/feeds, and maybe also changing the way we communicate with each other (image superceding text).

Comp Cameras: Lonely Camera

posted by on 2012.02.27, under Computational Cameras
27:

I worked with Elena and Luca on this week’s Computational Cameras assignment. We wanted to use the Axis IP camera installed in the ITP hallway. Using OpenCV we would detect blobs, take a picture and have it tweet to the itphallway twitter feed. We’ve managed to save frames in Eclipse and also tweet (using some code from Dan Shiffman’s email processing example and our twittermail address) but have not been able to get OpenCV working yet or to have frames saved and tweeted within the same applet. Of course, I’m inclined to anthropomorphize the camera and will build in a time elapsed function so that if the camera doesn’t detect any blobs for x amount of time it will initiate a series of lonely tweets: Where is everybody? Why is it so dark? I feel so alone… To be continued most likely for my midterm!

Comp Cameras: Eye Iterate

posted by on 2012.02.19, under Computational Cameras
19:

Eye Iterate detects the eye of the user and captures the pixels within that bounding box. Those pixels are then translated and scaled to iterate across the screen until the user disappears behind the eye. The pixels will continue to update as long as the user remains in front of the camera. I haven’t been able to figure out yet how to make this happen. Instead of using translate and scale, I think I’ll create a 2D array of pixels and see if that gets me closer to what I want to see or use the createImage()?

Here’s my current code:

import hypermedia.video.*;
import java.awt.Rectangle;
OpenCV opencv;

Rectangle bestRect = new Rectangle(0, 0, 0, 0);

PImage eye;

float scaleX;
float scaleY;
float transX;
float transY;

int counter = 0;

void setup() {
size( 640, 480 );

opencv = new OpenCV( this );
opencv.capture( width, height );
opencv.interpolation(OpenCV.INTER_NN); // set the interpolation method
// open video stream
opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT ); // load detection description, here-> front face detection : "haarcascade_frontalface_alt.xml"

eye = loadImage("suren.jpg");
eye.resize(20, 20);

}
public void stop() {
opencv.stop();
super.stop();
}
void draw() {
//rectMode(CORNER);
//scale(11);
//translate(transX+10, transY+10);
opencv.read();

// proceed detection
Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );

// display the image
imageMode(CORNER);
pushMatrix();
//imageMode(CENTER);
// translate(transX, transY);
print(transX+" " +transY);
println();

// scale(3);
image( opencv.image(), 0, 0 );
popMatrix();

// if (faces.length== 2){ //switch faces
// PImage firstFace = bigImage.get(faces[0].x,faces[0].y,faces[0].width,faces[0].height);
// PImage secondFace = bigImage.get(faces[1].x,faces[1].y,faces[1].width,faces[1].height);
// image(firstFace,faces[1].x,faces[1].y,faces[1].width,faces[1].height);
// image(secondFace,faces[0].x,faces[0].y,faces[0].width,faces[0].height);
// }

// draw face area(s)
noFill();
stroke(255, 0, 0);
for ( int i=0; i

Comp Cameras: Punching Nun

posted by on 2012.02.09, under Computational Cameras, Computational Media
09:

Learning how to use skeletal tracking with the Kinect, I felt inspired by the punching nun puppets. It was simple enough to map the images of the nun’s head and boxing gloves to the appropriate joints. The difficulty came with how to scale the images based on the proximity of the user to the device e.g. smaller images farther away and larger images closer up. I also encountered a few issues with the background which disrupted the mapping of the images.

Processing Code:

import SimpleOpenNI.*;
SimpleOpenNI kinect; 

PImage r;
PImage l;
PImage nun;
//PImage bg; 

void setup() {
  size(640, 480);
  r = loadImage("rightglove.png");
  l = loadImage("leftglove.png");
  nun = loadImage("nunhead2.png");
  //bg = loadImage("Church1.jpg");
  //image(bg, 0,0); 

  kinect = new SimpleOpenNI(this);
  kinect.enableRGB();
  kinect.enableDepth(); 

  //turn on user tracking
  kinect.enableUser(SimpleOpenNI.SKEL_PROFILE_ALL);
}

void draw() {
  kinect.update();
  background(kinect.rgbImage()); 

  //make a vector of ints to store the list of users
  IntVector userList = new IntVector(); 

  //write the list of detected users
  //into our vector 

    kinect.getUsers(userList); 

  //if we found any users
  if (userList.size() > 0) {
    //get the first user
    int userId = userList.get(0); 

    //if we're successfully calibrated
    if (kinect.isTrackingSkeleton(userId)) {
      //mack a vector to store the left hand
      PVector rightHand = new PVector();
      PVector leftHand = new PVector();
      PVector head = new PVector(); 

      kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND, leftHand);
      kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND, rightHand);
      kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD, head);

      PVector convertedRightHand = new PVector();
      PVector convertedLeftHand = new PVector();
      PVector convertedHead = new PVector();
      kinect.convertRealWorldToProjective(rightHand, convertedRightHand);
      kinect.convertRealWorldToProjective(leftHand, convertedLeftHand);
      kinect.convertRealWorldToProjective(head, convertedHead);
      //and display it
      fill(255, 0, 0); 

      imageMode(CENTER);
      image(nun, convertedHead.x, convertedHead.y);
      image(r, convertedRightHand.x, convertedRightHand.y);
      image(l, convertedLeftHand.x, convertedLeftHand.y); 

      // ellipse(convertedRightHand.x, convertedRightHand.y, ellipseSize, ellipseSize);
    }
  }
}

//user tracking callbacks
void onNewUser(int userId) {
  println("start pose detection");
  kinect.startPoseDetection("Psi", userId);
}

void onEndCalibration(int userId, boolean successful) {
  if (successful) {
    println(" User calibrated !!!");
    kinect.startTrackingSkeleton(userId);
  }
  else {
    println(" Failed to calibrate user !!!");
    kinect.startPoseDetection("Psi", userId);
  }
}

void onStartPose(String pose, int userId) {
  println("Started pose for user");
  kinect.stopPoseDetection(userId);
  kinect.requestCalibrationSkeleton(userId, true);
}

Comp Cameras: 10 Ideas for Skeletal Tracking

posted by on 2012.02.09, under Computational Cameras
09:

1. Digi-Date, an instructional game on how to improve your dating game through body language and gestures.

2. Gait Date, an online dating community based solely on matching individuals based on their gait.

3. Sit Up Straight, an instructional game on proper etiquette in a variety of different environments. Users learn how to sit up straight, keep their elbows off the table, and use the right fork with the oyster course.

4. Mixing Music, using limb movement (up, down, left, right) and rotation (0-180 degrees) to manipulate beats and compose new music.

5. Cher’s Closet, inspired by Clueless, allows users to try on outfits in seemingly endless combinations without ever having to physically try on the clothes before they get dressed.

6. Lonely Goatherd, a puppet theater. I’m thinking of the scene from The Sound of Music, hence the name.

7. Spirit Animal, users explore their spiritual side by a having the head of their spirit animal transposed upon their own. They then get to act out various scenarios like a wolf on the hunt or a deer drinking water.

8. Meditation aid, I imagine users transversing various “planes of existence” (ranging from the psychedelic to inside the cavity of a whale) as they try to achieve nirvana.

9. Camera jammer, as users walk by kinect their skeletal data is immediately erased (before the traverse the entire screen) or substituted with a dummy image so they can get by undetected.

10. Music video maker, make your own music video and become a YouTube sensation! Inspiration. Chose your own background (or sequence of background images which you scroll through with defined gestures) and dance. Use the skeletal data to create background dancers that emulate same movements.

pagetop