MATLAB: 32Bit RGBA Image

MATLABrgba micromanger 32bitrgba

Hello,
i read via MicroMager Core succseedfull images in Graymode – But the device give me an 32bit RGBA Image that would not
display with function imshow()
import mmcorej.*
mmc = CMMCore;
mmc.unloadAllDevices();
mmc.loadSystemConfiguration ('C:\Program Files\Micro-Manager-2.0gamma\DijSDKcameraMgr.cfg');
mmc.prepareSequenceAcquisition('DijSDKcamera');
mmc.startContinuousSequenceAcquisition(0);
imgRaw = mmc.getLastImage(); %mmc.snapImage(); %img = mmc.getImage();
pixelType = 'uint8';%8BIT GRAY default
if depth == 4
pixelType = 'uint32';%32BIT RGBA can't display img as 32BIT RGBA only 16Bit RGB is possible ?
elseif depth == 2
pixelType = 'uint16';%16BIT RGB not supportet by Micromanger normaly 32bit or 8bit
end
img = typecast(imgRaw,pixelType);
img = reshape(img, [width, height]);
img = transpose(img);
cla reset;
imshow(img);
mmc.unloadAllDevices(); %complettly destruct MMCore
How i can convert tzhe image correctly ? The Funktion image(img) Display an point cloud of image, but not in real colors given from map…
thx for any suggestions
Karsten (www.FlexxVision.de)

Best Answer

"My Camera give me back an RGBA Image R8|G8|B8|A8 = 32 Bit"
"size is : width*height*(bpp/3)"
Shouldn't that be width*height*(bpp/4) ?
Assuming it's 4 bytes per pixel, and that imgRaw is indeed of class uint8:
img = permute(reshape(imgRaw, 4, width, height), [3, 2, 1])
imgRGB = img(:, :, 1:3); %discard alpha channel which is all 0
imshow(imgRGB);
This assumes that the image pixel are stored in row-major order, which your code also assumed.