Some impressions of Definiens
My laboratory does a lot of microscopy, and the image analysis tools available to us are largely inadequate. ImageJ is much more a viewing and processing environment, and the code base is sufficiently crufty and Java sufficiently inflexible to make extending it an exercise in futility. The academic libraries encoding many of the interesting algorithms are in C++, a language which I cannot decide is more atrocious for its design failure or the artificial walls it erects around any code written in it. Commercial packages such as Metamorph provide a fraction of ImageJ’s functionality with cuter artwork and a hefty pricetag. So when I find a new package, I don’t harbor much hope.
Definiens seemed different. The ideas were good: most of what you actually want to measure are properties of regions, and what you need are tools to operate on labelled image partitions, not just individual pixels.
The second stumbling block was the price tag: €3500 per license, plus an annual charge for updates and upgrades, and a few hundred more for training. But it’s science, and taxpayer money is wasted by the sheer inefficiency of the supplier market. If it were really a first class analysis environment, we could live with one license on a powerful machine and running a custom batch processing system next to it. Thankfully they expose enough of their APIs to write your own batch system which can run at the same time as the program itself. Given how little effort a batch processing system is, I wonder that anyone pays the €8,750 for their eCognition Server (functionally the same thing, with Perl bindings).
So I requested a trial license to play with, and play with it I did. I read their manuals. I read their API documentation and tested it. I spent several days, all day, working with the program, trying to make it do my bidding. In the process I lost all interest in the software.
First, the manuals are lamentable. The company operates in English, does not even have a German version of their website despite being based in Munich, all quite normal for a small scientific supplier, yet they could not hire a native speaker of English to make sure their manuals were grammatically correct. I could overlook that if they were insightful and taught you to use the software, but they are not. They define an enormous number of words informally, so many that I felt compelled to convert them into a set of mathematical statements to keep track of them, yet embedded in useless verbiage. They tell you a lot about handling the very complicated interface, but very little about actually doing anything with it, and that is when they are coherent.
For example, the introductory tutorial purports to take you step by step through a simple analysis, yet it jumps back and forth, refers to layers you create five sections later, and gets so bogged down in the intricacies of handling Definiens that it hasn’t time for any real instruction. I would not have completed it at all if I didn’t already largely understand what it was trying to say. It was useful for figuring out where they had stashed various functions I needed.
And that is the most damning flaw of the program. Its interface is so complicated, so ill designed and unsorted, that using it requires endless searching for a basic feature that you are sure must be there, but it is anyone’s conjecture what it will be called, where it will be, and what strange vocabulary will surround its use. If the underlying concepts really were this complicated, that would be one thing, but they are not. Half the complexity comes from mathematical naïveté — using trees of objects where lattices of partitions are called for, insisting on fuzzy logic as a foundation rather than extension to standard propositional calculus — and half from trying to wrap all the necessary mathematics in little graphical wizards instead of providing some kind of programming language. If you want to set a threshold to anything but a hard coded value, your must jump through a rather absurd number of hoops.
And to add insult to injury, it’s slow. When I handed it an 800 frame time series of 2D frames, it took forever to load — perhaps 100x longer than ImageJ — forever to redraw, and when I actually tried to perform operations on it, basic things like a quadtree segmentation, it took minutes to accomplish it. And then it crashed after three or four hours of poking at it.
I also took a moment to look at Definiens’s patent portfolio. Aside from some nonsense about using distributed algorithms for flow optimization on graphs for traffic control, they had the gall to patent semantic region growing in 2001, despite all the materials being publicly available in Ballard and Brown in 1982, and the technique described in language an undergraduate could implement in Sonka, Hlavac, and Boyle in 1999! They also have similar patents, from similar dates, out on basic motion tracking and other staples that have been well known in computer vision for fifteen to twenty years.
In summary, it’s not worth its exorbitant price tag, and the company has a rapacity for patents that should make the rest of us uncomfortable. Maybe it’s finally time to roll up my sleeves and write something that’s actually good.