Sep 2nd 2009
Absolute Values
Absolute Value Fuse

Absolute Value

I’m often trying to find the magnitude of something, regardless of sign.  Commonly done for things like normals or velocity or distance.  You would expect there to be a built in tool for that sort of thing, but there isn’t.

Previously,  I did it with a CT or a Fuse operating on a per-pixel basis.  An f.Color.rgb = abs(f.Color.rgb) sort of thing, which is pretty slow in Fusion as a CT or Fuse, but is plenty fast in Cg.  More on that later.

Today I had an idea on how to do it with a matrix.   The basic idea is to scale the the image by .5, and by -.5 and find the difference of the two.  So |x| = (.5*x)-(-.5*x)

This method is much faster.  The resulting Fuse runs about 40% faster than a CT, and several times faster than the old Fuse I had made which operated pixel by pixel.  Unfortunately, ROI isn’t supported yet for Fuses, so if you have a tiny ROI, the CT or the CMx’s will both run faster.   EDIT: ROIDS can be supported in Fuses…  I’ll need to add it to the Fuses I’ve posted so far.  Stay tuned…

So here’s the Fuse, a Cg ViewShader that lets you view the absolute value in a Viewer, and an example comp showing the CT, Fuse, and CMx methods, as well as the ViewShader.

Download FAbsolute Fuse 1.05Download FAbsolute Fuse

Download Absolute Value Viewshader 1.01Download Absolute Value Viewshader

Download Example Comp (Absolute Fuse) A01Download Example Comp (Absolute Fuse)

It would be interesting to see if the disparity between the speeds  of processing the matrix vs per-pixel goes away when you compile a c++ plugin…

2 Comments »
Jun 1st 2009

Oh look, another post where we do something off the wall using nothing but Fusion’s standard toolset!

In this case, I had an idea for a plugin and needed a way to explain the concept to Ben and Matt.  Basically, I wanted to find the largest “object” in an image, and this is the comp I came up with.

Get the Flash Player to see the wordTube Media Player.

Read the rest of this entry »

No Comments »
May 29th 2009

I was working on a little job today with a 2D temporally variant scalar field.

You know, B&W footage.

I needed to find the parts of the data that were changing the most and compare them to the overall data and the maximum delta.

What I ended up with, once Ben pointed it out to me, was a simple example of calculus laid out in a couple tools.   The simplest case is just taking the frames I have and interpolating the same number of frames, so there’s no missing samples.  It’s silly, really.

But you can try it with other sampling, so there’s also an example of a Sobel filter, with a 1D kernel perpendicular to the normal 2D one.  Cute really.

If you checked out my interactive smoothing comp, you can see how I used a Sobel filter to make the forward facing laser pointer by looking at the differentiation of the R and G channels over time.  Same idea, just different way of expressing the temporal dimension.

I’m tossing in a Laplacian filter too, just for fun, it’s not useful for the calculus part, but it was easy to do, and shows how you can change the kernel to make different effects.  It’s possible to also evaluate 2D or 3D kernels this way, too.  The temporal offsets can be combined with spatial offsets so you could make a 3D blur filter, or a 3D sharpen.  Or a 3D Unsharp Mask, as I’ve also included.

Download 3D filtering sample (simple calculus and temporal filter examples) Download 3D filtering sample (simple calculus and temporal filter examples)

No Comments »
May 7th 2009

We were recently commissioned to do some visualizations for a virtual colonoscopy procedure.   Also known as a colonography.   If you’re unfamiliar with the process, Wikipedia has enough information to give you a general overview. While there is a lot of information on the internet about the scanning process itself and what the patient will experience, there isn’t much about the ways in which the CT data can be analyzed once it is acquired.  So here’s a brief overview of what we at Anatomical Travelogue did with it.

Screengrab from the realtime colonoscopy demo

Screengrab from the realtime colonoscopy demo

Read the rest of this entry »

1 Comment »
Apr 7th 2009

Here’s a little attempt at making a 3D vectorscope using particles.  It’s cute like the centroid comp, elegant and simple with no plugins or fuses needed.   Nothing wrong with fuses or plugins, it’s just neat to be able to have something that works for any using Fusion 5.2 or later without anything else, and lets you see what Fusion can do out of the box.

3D Vectorscope Fun!

3D Vectorscope Fun!

Read the rest of this entry »

No Comments »
Feb 25th 2009

We’ve been working on some new tools for automated segmentation, and more importantly, rationalization.

Matt shared with me a bit on the method he used in his thesis for finding the centroid of an image sample.   I made an attempt at producing such an effect solely with the tools built into Fusion, and managed a pretty nice result that’s not too shabby on the speed.  I suspect it will be sped up a lot when we make it into a fuse or plugin, but the effect is nice just as a comp, as it speaks visually to a concept that doesn’t sound like it would be visual at all.

In this first video, the green crosshair is finding the barycenter of the various circles, taking their size, density, and softness into account.

Get the Flash Player to see the wordTube Media Player.

In the next video, the same thing is happening, this time on a particle system.  Ben thought the circle example was silly because circles are easy to solve for, and this method works per-pixel, so I wanted to show an example of that type of setup.

Get the Flash Player to see the wordTube Media Player.

And here’s a comp to try out on your own.

Barycenter_Example_C’_B01

1 Comment »
Dec 29th 2008

We’re releasing a simple tool today to help you reduce noise in ’09. We develop many 3D filtering tools at AT, but this one is a good candidate for release because it’s useful for video compositing.

Download Median In Time 1.0Download Median In Time

MedianInTime performs a median filter over time for each pixel. The median filter kernel can be selected from sizes 3,5,7 or 9 (indicating the total number of frames in the sort). The tool calculates the median based either on the luminance or the RGB channels separately. This operation will generally reduce noise, but is also great for removing things that appear for just one or two frames such as rain drops, film artifacts, and subliminal advertising.

I rendered two examples to demonstrate the technique. The first video shows how objects moving quickly in relation to other content can be removed with the median filter. In this example the stars moving in this time lapse footage are removed (as well as the odd shooting star).

Get the Flash Player to see the wordTube Media Player.

Read the rest of this entry »

No Comments »
Oct 29th 2008

So here’s my inaugural post…

SEM shaders, before and after

SEM shaders, before and after

When I started working at Anatomical, we had a compositor (of sorts) working here who we would pass shots off to. Because a variety of reasons it wasn’t very effective, and so I pushed to have the process modified so that the people doing the 3D rendering were actively involved in the compositing workflow, and vice versa. Fast forward some years, and at this point, I comp nearly all of my own shots, and our “compositor” is pretty darn good with rendering from 3ds max.

Read the rest of this entry »

1 Comment »