We have a brand new look! Take a tour with us and explore the latest updates on Adobe Support Community.
I'd like to know if there are any FFT (Fast Fourier Transform) plugins for Photoshop CC, since I'd only find a free one by Alex Chirikov, which however is way obsolete for versions later than CS4 (and also supposedly introducing noise too, unlike paid plugins, for which however I have found no further reference).
So, are there any other free or paid FFT plugins?
Yes, here's one for photoshop 64 bit versions on windows:
A mac version
There was an update to the retouchpro forum, so those URLs are no longer valid (posts are still there somewhere, but at a different URL).
Anyway, the plugins have now been reworked, and actions for semi-automating the process has been created. They are now hosted at http://ft.rognemedia.no/
It now supports color images, and the process has been improved to give considerably better results than the old "manually paint over the stars"-method.
This version of the Fourier transform plugins includes:
They all are open-source and use the FFTw software for the transforms. The individual transforms should be applied only using the Ft Fourier Transform Suite script rather than from the Filter menu as a standard RGB file cannot hold the amount of data generated. Windows and Mac with Photoshop CS6 through CC present (2018).
These are being loaded to GitHub - rechmbrs/FtPattern: Ft Fourier transforms C++ code for Photoshop WinMac and Pattern Suppres... but it is not complete yet.
Presently working on documentation and history.
Need persons to read docs and ask question to fill in missing documentation. Help will be accepted if you have time.
Good on you Ron, I'm very excited to peruse your repo.
Comments please during your perusal. Need a lot of help with documentation as I'm not sure what needs to be added.
Use plugins only through FtFourierTransformSuite script not from Filter menu.
Your documentation is extensive, which is all anyone can hope for - and it is certainly more info than anyone has gotten in one place before. I'm a little tainted because I've been through the de-honeycombing process several times, and quite recently too, so all of the information that *I* need is fresh in my head.
The real "documentation" for me is being able to see the code, and I'm somewhat familiar already with Alex's old code as well as a similar plugin for GIMP. I had a little trouble understanding the folder structure in the source files - I think not everything corresponds to a finished functionality? I wonder if someone can help you better organize this to avoid dealing with copy-pasting redundant code? I can't.
In any case I took a closer look at just one of the projects. I recognise some of it from Alex's original plugin. My feedback is there could be better commenting, there are a lot of constants used without being declared as constants, unused variables, and seemingly unneeded temporary variables that really don't serve to clarify anything, as well as values that should remain constant being passed around to functions. There is also a lot of Hungarian notation used. Not big deals but I'm just saying there is always room for improvement. Plus those are just my first impressions, there could be some good reasons for why it is the way it is.
There's no shortage of people on github who wish to seem helpful (in the eyes of potential employers) who may come at you with all kinds of minor corrections.
I have questions for you though... if you FFT with Alex's old plugin, can you IFFT that transform to restore the image with yours?
Similarly, FFTW lib uses a different algorithm depending on your machine's hardware - does that mean I won't be able to FFT on one computer then IFFT it back on another type of computer? I can't find info on FFTW's implementation consistency, and these questions are no doubt based on my own lack of expertise in the area.
Thank you so much for taking this initiative! The automation is very promising. I hope the community embraces what you've done. Make sure when people google their issues with paper texture and half-tone, etc... they stumble on your YouTube, because what you have here is much more desirable than similar projects in the past, and we've been long overdue for something like this. Well done!
Thanks for your response.
I should have made some comments in the initial readme about what my aims were in doing this project. First, I was helping Jonas to get his action to work. So I needed to fix the Fourier transform (Ft) code to give him and the users a good input and output as the present code was broken. I looked at the code and noticed several errors related to Ft and others to working in Photoshop plugin. I set out just to modify Alex's original code and found that it was in simple C not C++ and then decided I could do it. Not being a C or C++ programmer (actually I'm a research physicist and used Ft extensively) it was going to be a major chore. Secondly I wanted to supply the Photoshop Users with Ft implementations that are easy for them to use. This includes diagnostics which are part of the Suite.
I called around for programming help and none appeared so it all mine and the patient people at a few websites. Being the physicist, I knew that I needed to generate code to do 1D, 2D, and 3D transforms. Forward and inverse for each of those. All needed to handle 8, 16, and 32 bit/color channel. I set out to code one plugin to do any combination of the needs but soon found other constraints the would make me really learn C/C++ and learn Photoshop plugins with little or no documentation available. I stepped back and decided to write one very simple plugin to do what Alex's code set out. I actually found that the forward and inverse algorithm were very similar and combined the two into one source but compiled separately. Finally we hooked it in the action and we stepped through what was happening and changed the format of spectra so it was easier to use. After a while I had cloned the first plugin into forward and inverse by the 3 dimensions. Started to think about run times and decided to make more clones where the Half width transform were computed and thereby reducing wall clock time by about 50%. So I ended up with 12 very simply coded plugins which could be used individually in Photoshop. Other than coding, I ran C Lint and other diagnostics to finalize the code. There should be no unused variables or uninitalized variables. Code is indented for easier reading.
There are no parameters needed from the user so having a dialog would have been of no use and makes use within an action much better. Using properly compiled plugins can be inner mixed between Windows and Mac as well as different computers of each type.
Jonas and I had a person, Francesco Pierfederici, with Mac programming experience to join us to make the code run on Mac Photoshop installs. The exact ccp are used on Windows and Mac. Other files necessary for compiling are in folder and again are the same for Win or Mac unless noted.
In the end the code I produced is not 2018 state of the art code but there is no reason for it to be. My major aim was to make User-friendly Ft suite that was very versatile and software that can be viewed by both programming novices and science types who want to know how you do Ft on a computer using Photoshop. I plan to lock my final code and change only for bug fixes. Anyone who wishes to play with the code, branch off from the GIT code and you be responsible for the usage.
I'm willing to discuss the plugins and what they do but not programming style etc. These routines are for the Photoshop USERS.
Well thank you again for this project, I imagine someone could indeed fork it for further utility in the future. My dream is to one day be able to easily batch process scans of several old photos (in one scan), split, straighten, de-moire, all that stuff... with relative ease. I'm also interested in a future where we're digitally processing handwritten documents, and I suspect FFT of 2D images is key to that as well.
If it was me I would consider that all software is always for the users, but for the sake of future maintenance, longevity, and easily on-boarding helping hands we still care about the code .
To clarify about unused vars; because of the way the projects are set up, variables are created early in the code but then only used in code that simply will never be executed. It doesn't bother me, I just thought I should mention it since I happened to become aware of it.
I'm ready to do something other than plugins and C/C++.
Have you looked at using ExtendScript (JSX) to write your one pass process? The versatility is unreal if you can find how to use it. Writing dialogs is simpler and everything is script safe.
Keep in touch if try something interesting. I'm an image manipulator so have a lot ot tricks from 50+ years of fiddling with images.