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
Need recommendation: nonlinear video-frame warping
Started by ●January 31, 2008
Reply by ●February 2, 20082008-02-02
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.
Reply by ●February 21, 20082008-02-21
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
Reply by ●February 21, 20082008-02-21
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
Reply by ●February 21, 20082008-02-21
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