I wanted to play with Processing the other night. I thought about representing RGB pixels value of a video in a 3D space based on there RGB value, where RGB stand for XYZ.
00:00 : using “Avatar” Trailer
01:07 : using webcam feed
How, why, cool ?
So really basic programming, but I thought it would looks cool. Actually, what was going to be a cool looking animation turn out to become a cool visualisation tool !
I found out that by just showing those pixels in a 3d space based on there RGB values you could see several dimensions at once :
- Red value : X axis
- Green value : Y axis
- Blue value : Z axis
- Luma value : is the vector between the black color (0,0,0) -> white color (255,255,255). It means that if the point cloud is closer to the white corner, brighter the picture is (… no kidding 🙂 )
- Saturation value : it is the vector perpendicular to the luma vector. it means if the picture is saturated wider the point cloud would be, and of course more it is desaturated finer the point cloud will be. A black & white picture would only show particles on the luma value.
This one was the less obvious to me (but I’m not really smart :p)
Source Files :
- Processing sketchbook (project) : RGBto3D_Space.zip
- Processing : www.processing.org
- JMyron Lib (easier to grab webcam on windows with) : http://webcamxtra.sourceforge.net/download.shtml
- ControlP5 Lib (best GUI lib ever !!!) : http://www.sojamo.de/libraries/controlP5/index.html
You will have to add a quicktime movie (.mov) in the “data” folder called “vid.mov”
For sure all this sounds pretty obvious, and I’m pretty sure I’ve seen people doing this kind of stuff before, but I’m surprised I haven’t seen it in any “video editing” software before (or maybe I miss it).
I think it could be a really helpful tool to have a quick over look on your picture and just in a snap being able to tell if its too saturate, too red, or too blue, too bright or too dark…
Feel free to leave any comments about that or if you know something similar, just drop a line in the comments. By the way, this is my really first complete project with processing, so I probably did things the wrong way, you are welcome to correct me 🙂