When you supply a 2D array to image(), the values within that array are mapped to a colormap. The colormap is needed to convert scalar values to RGB triplets. imread() returns a 2D array for grayscale images, but you can supply the corresponding 3D array (where R=G=B) to image() if you want:
image(repmat(a,1,1,3))