Sorry for the long delay, I hope this is still useful: If I've got the question right you'd like to read an LFP and write a PNG containing the debayered raw (not de-hexed) lenslet image.
Your approach was correct, the images are dim because the LFP is a 10-bit image for Illum, or 12-bit image for F01, and these are stored in 16-bit numbers so the display appears dim. The easy fix is to scale the image. Once this is done, if you want to save the raw lenslet image, imwrite works fine.
The key steps are below, full example showing conversion to doubles and dealing with F01 images is at:
LF = LFReadLFP('Images/Illum/Jacaranda.lfp');
% Scale it up to occupy all 16 bits:
RawImg = LF.RawImg .* 2^(16-10);
% Now demosaic
LensletImage = demosaic(RawImg, LF.DemosaicOrder);
% And display
LFDisp(LensletImage);
% The 16-bit png is pretty big, 200 MBytes
% imwrite(LensletImage, 'Jacaranda16.png'); % commented out because this file is big
% You might consider manipulating the above to work in 8 bits instead:
RawImg = uint8( LF.RawImg .* 2^(8-10) ); % convert down to 8 bits
LensletImage = demosaic(RawImg, LF.DemosaicOrder);
imwrite(LensletImage, 'Jacaranda8.png');
see full example at link above.