How to start with image processing and analysis?

I am looking for some advice on image processing and analysis. I am imaging Langmuir films (in color or grayscale using a USB MightyScope and a Brewster angle microscope). I want to process the images to obtain numerical parameters over lateral dimensions, such as area coverage or "grain" boundary lengths. I also want to process the images for three dimensional information, meaning that different brightness levels in an image imply different levels of coverage of the layers. As a side note, I have images from contact angle measurements that are currently being processed in ImageJ.

I am a mostly novice at the image processing part of "data analysis". I suspect that I will need edge detection algorithms, length and area mapping algorithms, and multi-level grayscale thresholding algorithms. I also have to bring two master-level graduate students up to speed with me (it will be the quality of their work, not mine, that matters). Finally, I have a rather short time to try to establish that we have made a reasonable start. Basically, I want to approach this by defining a "milestone" for my students. On hand the images they will acquire, I would like to have recognized success with them setting the hardware and software methods in about two to three weeks (of focused, graduate-student time :-) ). After that, I would hope their further efforts would be to streamline their practices rather than to continue to have to learn yet new techniques.

With this in mind, I have two starting questions. The first is a rather blunt market-level query (with apologies that I have no intent to start "software XYZ is better" wars). How deeply should I commit to Igor Pro versus ImageJ (or something else??)? I have the financial resources for Igor Pro, the full appreciation of its power at the wave level of data analysis, every ability to program code in Igor Pro as needed, and all faith in Igor Pro to do whatever is needed. My graduate students have to brought up to speed from ground zero in Igor Pro (or ImageJ or whatever). They will have to do graphical and regression analysis anyway, so they will soon have to "get their feet wet" with Igor Pro regardless. I absolutely do not want that we have to program anything to do what we need. The best answer is a strong recommendation on a set of tools they can sit in front of, apply systematically, and learn to master toward producing reliable results. Ultimately, my question is about the ease of use of Igor Pro versus ImageJ for the sake of my graduate students (not for my sake). Answers may be best posted to me directly as appropriate.

My second question is a general one. Where might I go for the best general tutorials on principles and best practices on image processing? In a nutshell, what ONE Web site should I (and my graduate students) read and what ONE most appropriate resource book should I buy?

Assuming that I do go with Igor Pro, I will post later to ask for insider tips and tricks.

I would especially appreciate comments and suggestions from the community of folks who do image processing routinely using Igor Pro. Is what I have in mind really not as hard as I might otherwise imagine?

TIA
Just a comment. In my lab we do a lot of image analysis and a lot of number crunching. For image analysis, we use ImageJ/FIJI as well as a few other programs (Imaris and Amira) and for number crunching we use IgorPro. Despite using Igor for many things, I've never got into using it for image analysis. I have on occasion generated test images with Igor because I knew how to do the code and it was quicker than doing it in ImageJ, but on the whole I keep the two separate. I've thought about implementing image analysis procedures for Igor and never got around to it, mainly because the development and support for ImageJ is so much better and there's a big community of users locally and online. Despite this being an Igor forum and despite me being a huge fan of Igor, I can't recommend it. I also think your grad students should be learning to use ImageJ rather than Igor.
Hello J.J.,

If you are going to use IP for image processing work I suggest you take a look at the Image Processing Tutorial. You can find it under File Menu->Example Experiments->Tutorials.



A.G.
I thought I'd give an update ...

ImageJ and FiJi are really nice. They truly have laid the groundwork foundations for us, they have helped us "see" (figuratively and literally) what various image operations really mean, and they have given us some fantastic results for our research studies. As @sjr51 has noted, they are easy tools to use for a range of image processing, everything you could need just works out of the box and in a clean way, and the documentation is nicely done. I absolutely agree. Anyone who is staring in image processing absolutely must start with these tools.

That said, in the meantime, I have learned something else important. I now appreciate that we need more than just an imaging processing tool. We need an imaging processing tool that is designed to tackle only the specific needs that we have. Bluntly put, we cannot be bogged down to sort through the "everything and the kitchen sink too" approach that we would have to take when we would continue with ImageJ or FiJi.

I know that ImageJ or FiJi supports Java. I imagine there are ways to get program we need from ImageJ or FiJi using it. However, programming is not a path that my graduate students want to take (and not one that I support at this point in their studies for various reasons). That leaves the programming parts to me to do or to sub-contract out ... which means it leaves those steps to me to do. I see absolutely no RoI to learn Java coding, especially given the experience I have to code in Igor Pro.

So, I am moving on to Igor Pro for the specific image processing that we need to do.

Over this past weekend, I have already assemble a base for the code. It takes an image, extracts the r g b channels, subtracts one from the other, finds an RoI, and manipulates the image grayscale levels based on settings from the histogram. It has some panels to adjust settings such as threshold and scale factor during subtraction and to define cut levels in the histogram. Was this easy ... not really. Was it fun ... yes. Did I learn stuff ... you bet! And, as a fantastic benefit, just by bringing the image in to Igor Pro via Gizmo, I learned that we need to change the lighting system we use to capture our images in the first place. The background pattern only reveled itself clearly with the 3-D plot. We might have seen this in ImageJ eventually. But ... we are past the stage of having to wait on the eventual.

In summary, my answer to my starting question is ...

As a beginner to image processing, you absolutely must learn and use ImageJ first. Then, when you determine that you need to program for something specific, decide where you go next based on your personal background in programming (ImageJ/Java, MatLab, or Igor Pro).

Thanks for the responses.

--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
Hi,
One late comment. I agree that other softwares are useful to understand what does what in image analysis. When one knows what needs to be done, Igor is just awesome. You can program it to do what you need, not taking what is offered. We programmed it to do things that not even very expensive commercial microscopy softwares can do. By expensive i mean here roughly 30 igor licenses worth.
A beginner's suggestion, you can try to load the image processing demo, there is a handy menu that allows one to do so many different things. Perfect for trying out things that one would never imagine exist. And it types the code in the command bar, easy to copy paste in a program!
jjweimer wrote:

I know that ImageJ or FiJi supports Java. I imagine there are ways to get program we need from ImageJ or FiJi using it. However, programming is not a path that my graduate students want to take (and not one that I support at this point in their studies for various reasons). That leaves the programming parts to me to do or to sub-contract out ... which means it leaves those steps to me to do. I see absolutely no RoI to learn Java coding, especially given the experience I have to code in Igor Pro.


Not about which program to use, just want to point out that to program for analysis in ImageJ, it is not necessary to learn Java. Many times, understanding ImageJ macros is good enough, which is really simple.
jjweimer wrote:

In summary, my answer to my starting question is ...

As a beginner to image processing, you absolutely must learn and use ImageJ first. Then, when you determine that you need to program for something specific, decide where you go next based on your personal background in programming (ImageJ/Java, MatLab, or Igor Pro).


I thought I'd chime back in on this thread too. Firstly to say that I agree with this summary. Second to say that in the time since my last reply, we are now doing more complex image processing using ImageJ and Igor. The balance has shifted though from what I described above. Typically steps that are already well written in ImageJ are not ported to Igor, but as soon as feasible we are now loading images into Igor to do the crunching. The two main reasons are speed and familiarity with Igor programming. My ImageJ scripting skills are OK but writing and troubleshooting Igor code, I find a lot easier.