These can be difficult questions. It is hard to compare approaches without trying both and doing a direct comparison.
I have found that IMAQ functions are usually much faster than equivalent functions on arrays. IMAQ also handles the edge conditions very well, which are a pain in arrays (like convolution).
Therefore, I would say for 1 and 2 IMAQ wins.
Switching back and forth can be slow. It will depend on your algorithms which way is faster.
An interesting observation: Some functions that are not directly available in IMAQ can usually be done in a short sequence of operations. For example, if you wanted to do a filter that replaced each pixel with the sqrt of the sum of the squares of the surrounding pixels, you could do the following sequence:
1. Use a lookup table to replace each pixel with its squared value. You might need to use a larger image representation for the results.
2. Use a convolution to sum the pixels in a 3x3 grid.
3. Use another lookup table to replace each pixel with the square root of its value.
This would probably work much faster than switching to a matrix and trying to do the sequence of operations on the matrix.
Bruce
Bruce Ammons
Ammons Engineering