As I see it, working with the IMAQ Image Typedef always results in problems for me, so I've gotten to where I try to avoid using it. Working with IMAQ should be so much better than what it is.
Here are some Ideas:
1. Allow IMAQ stream to disk RAW Format with a string input for a header for each Image. You could call this vi once to write a Header to the Image, then for every call after that everything you input into the string would be written between Images. This vi should allow you to append the images. Most of the time I DON'T want to write out to a specified Image format. I want to stream raw Video to disk.
Also, we are entering an era where lots of Image data is being dumped to disk, so the Raw stream to disk function would need to take advantage of multithreading and DMA transfer to be as fast and as effecient as possible. The Vi should allow you to split up files into 2GB sizes if so desired.
See the block diagram to see how this would change the Labview code required to grab Images and save them to disk.

Also, It would be nice to be able to specify what sort of Image that you want to use in the framegrabbing operation. This could be set in the camera's .icd file, or by the IMAQ create.vi
Notice in the above example, I make IMAQ create.vi create U16 Images, but when the Image is output, I have no choice but to take the image in an I16 form. I would like to have the image in its native U16 form. I am converting the image to U16 from I16 by the "to unsigned word Integer" I don't think that this should work, but it does, and the fact that it does helps me out.
In general it would be nice to have better support for Images of all Flavors. U16, U32 and I32 grayscale, and Double grayscale.
While you are at it, you might as well add in a boolean input (I32 bit result Image? (T/F)) to most Image math processing functions, so the coercion is not forced to happen.
Really though....... LETS GET TO THE POINT OF THIS DISCUSSION.....
The only reason that I have a problem with all this is because of speed issues. I feel that arbitrarly converting from one data type to another wastes time and processing power. When most of my work is images this is a serious problem. Also, after checking out the Image Math functions they are WAYY slower than they need to be compared with thier array counterparts.
Solution: spend more time developing the IMAQ package to be speedier and more efficient. For example, the IMAQ Array to Image is quite a beast and will essentially eliminate a quick processing time. Why is this? This doesn't need to be. NI should deal with Images internally with pointers, and simply point to the array Data in memory. I dont see how or why that converting an array to an image needs to take so much time.
Discussions on this subject:
http://forums.ni.com/ni/board/message?board.id=200&thread.id=23785&view=by_date_ascending&page=1
And
http://forums.ni.com/ni/board/message?board.id=170&thread.id=376733
And
http://forums.ni.com/ni/board/message?board.id=200&message.id=22423&query.id=1029985#M22423