Saturday, November 3, 2007

DIY Light Probes and Cheetah 3D

Well, I recently came across a terrific 3D app for Mac OS X called Cheetah 3D. I'm still playing with the demo mode, but I've long been intrigued with a rendering technique called image-based lighting, where a "light probe" image is used to render ultra-realistic lighting of a 3D model. Cheetah 3D supports image-based lighting with light probes so I thought I'd check it out.

A light probe is really nothing more than a mirrored sphere, since such a sphere is capable of capturing (nearly) 360 degrees of a scene both vertically and horizontally. But in order to be maximally useful, the probe image must capture the full dynamic range of the light in the scene (i.e., it must be a high dynamic range image or HDRI). Photoshop CS3 and CS2 have no problem merging multiple exposures of a photograph into a 32-bit HDRI, so this is the software I chose to use.

The source of the light probe couldn't be simpler or cheaper: a 7.5 inch diameter plastic giant Christmas ornament from Target for $2.50. And even though the geometry of the probe is somewhat iffy, it works absolutely beautifully. Here's a very quick How I Do It on making your own HDRI light probe images for use in 3D software such as Cheetah 3D and many others:

1) Mount the light probe on a stick and place it in the scene. Here I've simply duct taped it to a bamboo stake we had handy Being a giant Christmas ornament, it had a little nub on it for the tree hanging part. [My wife is standing in as my trusty model in our backyard earlier this evening.]:




2) Take a series of bracketed photos of the sphere to cover the whole dynamic range of lighting present. Tips: mount the camera on a tripod far from the ball and use a long telephoto lens to keep yourself as small in the reflection as possible so as to be almost invisible.




3) Merge the photos to an HDR image in your favorite HDR software (e.g., Photoshop CS2/3, Photomatix, etc.):




4) Keep the image as a 32-bit HDR file, but if you're gonna use it in Cheetah 3D, be sure to flip the photo horizontally to get accurate reflections.

5) Trim it down to a sphere with cropping tools and save it as a Radiance image (.hdr file extension):




6) Cheetah 3D can import native .hdr files like this in its HDRI render settings. Just be sure to set the image type to "probe" in the Cheetah 3D menu:



I won't go into all the details of using Cheetah 3D, but here's a quick demo movie of what can be done with these HDRI light probe images. Note the reflection of the probe droid in the rightmost sphere. The rightmost sphere is also rendered in Cheetah 3D and is strikingly similar to the actual photographed sphere in the scene:


video

Labels: , , ,

Wednesday, May 9, 2007

Data Recovery with (free) PhotoRec in OS X

Imagine my horror when I went to process the photos on my memory card only to find that they were gone. And these weren't just any photos, but rather a day's worth of before and after photos of patients (in my real life, I'm a facial plastic surgeon).

Now, "after" photos are one thing...patients could always come back for more picture-taking, even though many come from hours away. But "before" photos on patients treated later that same day can never be re-shot, of course. So due to what I suspect was corruption of the directory structure, only the previous day's images were on the card.

Now, since I had reviewed the photos on the camera back when I shot them, I suspected that the data was still there, just inaccessible through either the camera's interface or my computer's OS. So I started scrounging the web for memory card photo recovery utilities when I came across a little gem called "PhotoRec"..and it was freeware!

Sure, I found a freeware app called "EXIF Untrasher," but it only recovered JPEGs, and I shoot in RAW. And there were a few nice shareware and commercial apps like "PhotoRescue" ($29.00) and "CardRaider" ($19.95) that can recover RAW, but I wanted something FREE and PhotoRec fit the bill.

Now, granted, the pay apps have nice GUIs while PhotoRec runs in the UNIX shell in a text-based interface, but it requires little interaction and gets the job done. It also runs on just about any common OS platform from Mac OS X to Windows to Linux to Solaris, etc. Most importantly, it also recovered the entire card of RAW files including some I thought I'd gotten rid of ages ago.

Here are the simple steps to running this under Mac OS X (FWIW, photos on the card were shot in Canon RAW and camera's CF card was mounted via a card reader under Mac OS X 10.4.9):

(1) Download PhotoRec v6.6 here. Don't worry that it's also a download for an app called TestDisk, which I haven't played with (yet).

(2) Uncompress the file testdisk-6.6.darwin.tar.bz2

(3) Inside the folder that results, you will find a folder called "darwin" that contains the UNIX executable called (unsurprisingly) "photorec".

(4) Double-click photorec to launch it into the terminal and here's what you'll see:



(5) Select the volume that represents your memory card and hit return to Proceed. In this case, /dev/disk1, is what we want.

(6) At the next screen, which looks like this:



select the partition table, which should be fine at the default setting of "Apple partition map" and hit return to get to this screen:



(7) "Search" will be highlighted. Hit return to start file recovery and you'll see this:



(8) "Other" should be highlighted and should work just fine (or at least it does for me with my setup). This will take you to the last step where you select what directory to recover to, in which case the default folder should be fine. Just select "Y" at this screen:



It will then start processing your memory card and saving what it finds to a folder called "recup_dir.1"

(9) Sit back or go make a sandwich and come back to a folder full of recovered files (hopefully)...which in my case meant a dozen patients' photos perfectly pulled from the digital ashes.

Anyway, it ain't a pretty app and it's not for the faint of heart or those uncomfortable with the Terminal, but it worked beautifully for me (and my patients). Whew!...

Labels:

Saturday, April 14, 2007

Better "Dark Frame" Subtraction in Photoshop

Night photography brings with it a number of unique challenges (not the least of which is tripping over your gear in the dark), but one such nuisance are so-called "hot pixels." Hot pixels are the bane of any long exposure digital photography, including night photography and astrophotography, and typically they appear as star-like bright specs in the image. From what I understand, they arise from "thermal noise" within the image sensor. Technological specifics aside, you'll generally find that the longer the exposure, the more likely you are to see these spots (they look a little like stars, but they never move).



The most common way to deal with them, though, involves shooting what's called a "dark frame" which can then be digitally subtracted from the original image to eliminate the hot pixels. A dark frame is made by shooting an image of equal duration (shutter speed) to the original shot, but with the lens cap on so that the frame is completely black ("dark") except for the sensor noise and hot pixels. Some cameras, in fact, do this automatically for exposures beyond a certain length. [Note: you don't put the lens cap on...the camera simply closes the shutter and exposes the equal exposure time dark frame which is then subtracted in-camera].



But there's a big problem with this simple approach: the subtraction turns the hot pixels into black holes or black spots (something minus the same something equals zero which equals black). Now, for astrophotography, this is not so much of an issue since a black spot against a black sky is basically invisible. But for those of us shooting night photography this can be a real pain when odd black specs appear on illuminated subjects. (see image below)



What we really need is a way to fill in the hot pixels with a blend of the surrounding pixels to better conceal their removal. But in a quick search of the web, I couldn't find a Mac OS X compatible program or Photoshop action that would do what I want. Sure, there are several apps out there for Mac (e.g., the very cool and uncrippled shareware, Keith's Image Stacker, for OS X) and for Windows, but all just do simple subtraction. The exception to this is a freeware app called BlackFrame NR but it only runs on Windows [grrrr...].

What follows is my own little method I devised. I've made it into a freeware Photoshop action which can be easily tweaked to your camera's specific behavior and should work under Windows and Mac OS X, but I've only tried it under Photoshop CS for Mac. You can download my Hot Pixel Remover here, but I'll explain it below since I don't provide any documentation (hey, it's free, so don't complain).

First, in Photoshop CS open the original image, hot pixels and all. It will occupy a layer called "Background". Next, open the dark frame image, select all (Cmd-A) of it, copy it (Cmd-C) and paste it into a new layer over the original image. The dark frame, now called "Layer 1" should thus be in perfect registration with the Background layer. Now simply run my Hot Pixel Remover action, wait a few seconds, and voila, no more hot pixels and no more black holes.

Here's what it's doing:

1) It starts by making a duplicate of the original layer and applying a median blur of about 5 pixels (Filter-->Noise-->Median...) which should average out the hot pixels, which is good. But it also averages out lots of image detail, which is bad. But here's where the magic comes in: we're going to use the dark frame as a transparency mask to only show through those areas of the blurred image that correspond to a hot pixel.

2) The dark frame layer is curves-adjusted (Image->Adjustments->Curves...) to clip the very darkest 15 levels so that we can enhance only the hot pixels.

3) The dark frame is then desaturated to grayscale (Image->Adjustments->Desaturate) and then an Auto Contrast (Image->Adjustments->Auto Contrast) is performed to punch up the hot pixels.

4) The hot pixels are then selected (Select->Color Range...) in such a way as to select based on closeness to black.

5) This selection is then applied as a transparency mask to the median-blurred layer by clicking on the "Add layer mask" button in the layers palette.

6) The dark frame is then turned off and the result is a nicely cleaned up photo.

Below is the final result (a closeup crop) which shows neither hot pixels nor black holes. Nice!



Remember, this is just a version 1.0 attempt at this, so there may be some bugs under certain circumstances. Please let me know if there are. Maybe this will inspire someone to come up with a better way. (But best of all for me is that it's quick, free, and works on my Mac!) Again, you can download "Faceman's Hot Pixel Remover.atn" here.

Labels: , , ,

Wednesday, March 14, 2007

Gel Mod for Quantaray MS-1 Slave Flash



I recently was given a couple of Quantaray MS-1 flash boosters. If you haven't seen them, they're basically simple, dirt-cheap, optically-triggered slaves. (See Steve's Digicams for a nice review of this item) Anyway, I wanted a simple way to add colored gel effects to these slaves without ruining the slaves in the process.

The colored gels were made by creating a PowerPoint presentation with blank slides filled with various solid colors and then having a local A/V presentation company create the slides for me. By making mounted slides out of them the gels are durable and easy to handle.

The clear plastic I chose was some left over Crystalite Polycarbonate (an acrylic similar to Plexiglas, but a bit stronger) from an unrelated project. It's 1/8th inch thick and comes in big inexpensive sheets at your local lumber superstore like Home Depot or Lowes. I could have used Lexan which is much more scratch resistant and about twice the price, but I didn't have any on hand.

This is the $19.95 Quantaray MS-1 slave flash. For twenty bucks it's nothing fancy: it trips on the first flash it sees, dumps a full flash output every time and is powered by two AAA batteries. (You can notice the battery hatch in the bottom left corner in this picture).



Here a piece of Crystalite Polycarbonate (better than Plexiglas, not as good as Lexan) has been cut to shape and the edges sanded for smoothness.



The clear plastic panel has been mounted to the unit with hot melt glue. Note the positioning: the plastic piece extends beyond the top of the slave flash unit by an amount equal to the width of the 35mm slide mount's top border.



Close-up detail of the hot melt glue used to attach the plastic.



A simple small binder clip, easily found in any office-supply store is used to clip a colored 35mm slide as a gel. Note that it exactly covers the flash's output window.



At twenty bucks a piece, why not make a couple of these? Here magenta and cyan gels have been placed.



Incidentally, I made the photo of the bottle of lidocaine at the top of this post by implementing Strobist's excellent $10 DIY Macro Studio setup as shown below. BTW, if you haven't been to the Strobist's site, make sure to stop by. It's absolutely packed with some of the best flash photography concepts and techniques you'll ever come across.



[Note: to avoid tripping these dumb slaves with your dSLR's pre-flash, make sure your main flash unit is in manual mode, not TTL. (In manual mode, most flashes—such as my Sigma EF-500 DG Super on my Digital Rebel—will not pre-flash.]

Labels: , , , ,