Forums

Need recommendation: nonlinear video-frame warping

Started by axlq January 31, 2008
I'm sure this is a solved problem, but I don't know where to start
looking.  I have expertise in software and electronics, but DSP
isn't my field of expertise, so I don't know what hardware is out
there that will do the job I need.

I am putting an R&D proposal together for my company, and one
component of it involves real-time nonlinear transforms of a video
signal.

The transform, in real time, would take video frames from a
wide-angle-lens camera and transform them into new video frames such
that the radial position R1 of any pixel in the original frame is at
a new radial position R2 = d * sin (2 * arcsin (0.5 * R1/f)), where
f is the focal length of the camera lens and d is some constant I
define.

This is basically an inverse-fisheye function - a fishey image
reverse-projected back out of the fisheye lens and projected onto
a plane.  A 180-degree fisheye lens would require an infinite-size
plane of projection.  That isn't not my application, but it means
that the output image may have many times the pixels of the input
image.

The DSP processor, in addition to performing this transform, would
also have to perform the necessary interpolations to completely fill
every pixel in the output image.

Are there any DSP processors that can perform transcendental
function operations on high-resolution (1080p) video frames in real
time?

Thanks.
-A
Hi.

Do you really need a DSP for this? I think you can get what you want 
without using special DSP-chips. A PC and a modern graphic-card will be 
able to do all kinds of warps for you.

I assume you don't change the warp on the fly. If so you don't need the 
transcendental functions during runtime. Just compute your warp once and 
build a big lookup-table that maps from destination pixel to source 
pixel (with fractinal positions, so you can do the filtering).

During parameter tweaking you want interactive framerates. To do this 
you just calculate your lookuptable at a lower resolutions (1/8th in x 
and y would do). Then you just bilinear-interpolate between the gridpoints.

Can be done on a PC in software, or you can do it inside a vertex-shader 
on the graphic card.

The real problem will most likely be how you get the movie into the 
machine in realtime.

I lost track of this thread, found it, posted a reply, but it didn't
get posted.  Trying again...

In article <60jr20F1qsneiU1@mid.uni-berlin.de>,
>Do you really need a DSP for this? I think you can get what you want >without using special DSP-chips. A PC and a modern graphic-card will be >able to do all kinds of warps for you.
I haven't seen a PC do it at 60 Hz for a full 1440x1080 frame. We have indications that we may need to go up to an 80 Hz frame rate for our application. For now, for this proof-of-concept activity, we'll make do with whatever frame rate a 1080p camera gives us (probably 30 Hz).
>I assume you don't change the warp on the fly. If so you don't need the >transcendental functions during runtime. Just compute your warp once and >build a big lookup-table that maps from destination pixel to source >pixel (with fractinal positions, so you can do the filtering).
Good point, thanks. I hadn't thought of that. It'll be a BIG lookup table though.
>Can be done on a PC in software, or you can do it inside a vertex-shader >on the graphic card.
This demo here: http://www.gillesvidal.com/blogpano/cockpit1.htm does warping similar to what I want to do. The image shown is clearly mapped to a sphere, yet the transform to the flat display results in straight lines being preserved and not subject to curved distortions.
>The real problem will most likely be how you get the movie into the >machine in realtime.
A camera feeding digital or analog signals into a DSP that does the transformations? Which brings me back to my original question. I don't even know what to search for, or where to start looking. This doesn't seem like a complicated problem (nonlinear transformation of video frames in real time). I'd hate to re-invent a solution for a solved problem. -A
Matrox had a standard product to do real-time warping of video images about
a decade ago.  Calling them may be a good place to start.  Here's a link on
the general topic.
Regards,
Steve

http://www.dspguide.com/ch23/7.htm   
On Jan 31, 3:00 pm, a...@spamcop.net (axlq) wrote:
> I'm sure this is a solved problem, but I don't know where to start > looking. I have expertise in software and electronics, but DSP > isn't my field of expertise, so I don't know what hardware is out > there that will do the job I need. > > I am putting an R&D proposal together for my company, and one > component of it involves real-time nonlinear transforms of a video > signal. > > The transform, in real time, would take video frames from a > wide-angle-lens camera and transform them into new video frames such > that the radial position R1 of any pixel in the original frame is at > a new radial position R2 = d * sin (2 * arcsin (0.5 * R1/f)), where > f is the focal length of the camera lens and d is some constant I > define. > > This is basically an inverse-fisheye function - a fishey image > reverse-projected back out of the fisheye lens and projected onto > a plane. A 180-degree fisheye lens would require an infinite-size > plane of projection. That isn't not my application, but it means > that the output image may have many times the pixels of the input > image. > > The DSP processor, in addition to performing this transform, would > also have to perform the necessary interpolations to completely fill > every pixel in the output image. > > Are there any DSP processors that can perform transcendental > function operations on high-resolution (1080p) video frames in real > time?
Interesting. Many years ago I heard about two start-up companies working on variations of this type of technology. Never heard what happened to them. In the graphics world, one would tile the image into rects or triangles small enough that the translation for the corners was similar, and then just transform to corner coordinated and then texture map the tiles, stuff that graphics cards could do circa 20 years ago. Nowadays, you'd use the shader engine on any kids gamer PC. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M