Use getframe() and take the cdata field:
z = peaks(64);
f = getframe(gca)
thisImage = f.cdata;
Of course it's best if you just use the original data, like Geoff suggested, if you can, but sometimes that's not convenient if you have to pass the array way down deep into a call stack. Using setappdata/getappdata is not much more onerous than the code I gave, but you must remember to call setappdata whenever you put new stuff into the axes, and I think you'd end up having to call getframe anyway if you wanted to capture any graphics you put into the overlay above the image.