Ok, so I've investigated some more. Intel's DX10 FFT page has a good overview of one way of doing it: http://software.intel.com/en-us/articles/implementation-of-fast-fourier-transform-for-image-processing-in-directx-10/
Looking at the shaders and the method, I reckon this is possible using only the CI filter. I'll give it a go over the next few days unless something better comes along. There's a catch though: most FFT methods require power-of-two image sizes, not ideal for image processing. Stretching the image will distort the frequency domain, making the FFT somewhat pointless. Adding borders will add new frequencies making it somewhat pointless again. Affine transform perhaps? Or is there another method that doesn't need POT? Dick: didn't realise it was used for character recognition. And now I've looked at how that works, I realise that this is HUGELY useful to me: I need to do some image recognition in the same app :D 2009/9/18 Dick Applebaum <[email protected]>: > Yes! Cleaning up images! Like grainy old photographs, newspaper pictures, > passport photos with the embossed seal... > > Also, It is used in converting scanned images of text into digital text > through Optical Character Recognition, OCR. > > Dick > > > On Sep 18, 2009, at 2:56 AM, Chris Wood wrote: > >> There seems to be quite a lot of uses, but what I'm most interested in >> is cleaning up images. >> >> Basically, the FFT image represents frequencies in the image instead >> of colours, so you can say black out the right side of the image to >> remove high frequencies (i.e. noise reduction/blur) or boost parts to >> highlight detail.. It's stuff that can be done the normal way, but >> using frequency data you can do it in much easier ways and at much >> higher quality. Probably much faster too, if it's anything complex. >> Eg. if the image has video noise of a certain frequency, it's quite >> easy to kill the noise without losing much detail. For enhancing >> astronomy images, it's very powerful indeed. Plus I wrote a spline >> editor a while back so live editing of the filter curve would rule >> hard! >> >> Chris >> >> >> 2009/9/18 Alex Drinkwater <[email protected]>: >>> >>> I know it's useful on audio, but, just out of interest, what are the >>> practical uses of doing an FFT on image data? >>> >>> a|x >>> >>> >>> >>> >>> On 18 Sep 2009, at 09:41, Chris Wood wrote: >>> >>>>> Good idea! The "butterflies" done by GLSLang, the stages by JavaScript. >>>>> Maybe it's possible to do the reordering (bit-reversed addressing) in a >>>>> filter, too. >>>> >>>> The catch here is that you're stuck with core image if you want the >>>> nice javascript features - it's similar to GLSL but lacking a lot of >>>> the more advanced stuff that might be necessary. If not, it could work >>>> out. >>>> >>>>>> They also seem to need two output channels for each input, which could >>>>>> be >>>>>> more of an issue. >>>>> >>>>> Uhm? Maybe you mean the real/imaginary parts? (Though, the input has >>>>> them, >>>>> too.) >>>>> Should be easy: we could abuse the color channels, since the transform >>>>> will >>>>> always be done separately for individual color components. >>>> >>>> Yeah, the real/imaginary parts. The problem is that you do the >>>> transform on each colour channel separately, so for rgb you need 6 >>>> channels (12 for the two buffers), which likely means 4 buffers in >>>> practice. >>>> >>>> Possible solution: convert the image from rgb to hsv - the V channel >>>> contains most of the interesting data, so we can just process that and >>>> save a lot of messing about with extra buffers plus 2/3 of the >>>> processing (1 channel instead of 3). >>>> >>>>> And why not then abuse the color channels (we have 4!) for the swap >>>>> buffers, >>>>> too? >>>> >>>> Yep. If we're going down the HSV route and just processing V, we can >>>> use the R + G channels for the real + imaginary values. That leaves >>>> two channels to spare so perhaps the H and S channels could sit there >>>> if it won't harm performance. >>>> >>>> Good ideas here, keep them coming :) >>>> >>>> Chris >>>> >>>> >>>>> >>>>> Jens >>>>> _______________________________________________ >>>>> Do not post admin requests to the list. They will be ignored. >>>>> Quartzcomposer-dev mailing list >>>>> ([email protected]) >>>>> Help/Unsubscribe/Update your Subscription: >>>>> >>>>> >>>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/psonice%40gmail.com >>>>> >>>>> This email sent to [email protected] >>>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Quartzcomposer-dev mailing list >>>> ([email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> >>>> >>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/the_voder%40yahoo.co.uk >>>> >>>> This email sent to [email protected] >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Quartzcomposer-dev mailing list ([email protected]) >>> Help/Unsubscribe/Update your Subscription: >>> >>> http://lists.apple.com/mailman/options/quartzcomposer-dev/psonice%40gmail.com >>> >>> This email sent to [email protected] >>> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Quartzcomposer-dev mailing list ([email protected]) >> Help/Unsubscribe/Update your Subscription: >> >> http://lists.apple.com/mailman/options/quartzcomposer-dev/dicklacara%40mac.com >> >> This email sent to [email protected] > > _______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to [email protected]

