This is an area where ImageJ2 has been quite focused. I would like to see ImageJ & Icy become closer together, with respect to Icy consuming ImageJ2 modules. These take the form of Commands (Java code) and scripts in various JVM scripting languages. The entire ImageJ2 module infrastructure is designed to make writing headless functionality easy, and to be easily consumed by other applications such as Icy, KNIME, OMERO, etc.
The "WorkingWithModules" tutorials explains in more technical detail:
But essentially, the idea is that if chunks of functionality can be implemented within the ImageJ2 module framework, and executed via the beautiful Icy interface, everyone wins because Icy becomes more powerful and those pieces of functionality are usable headless from the command line.
I'm happy to discuss further if there is interest on your end.
Regards,
Curtis