How can I a change GigE camera preview from grayscale to color?

12 views (last 30 days)
I have a GigE camera object that I want to view the preview from in color. It is outputting in Mono12 format and so if I take a snapshot, it outputs a matrix with cells ranging from 0 to 4095. If I preview the images from this camera using the 'preview' command, I can view the live stream of data, but it is only in grayscale, as it obviously hasn't been mapped to a colormap yet. My question is how to go about viewing this live stream of images from the camera in grayscale to the livestream in color. Is there currently a way to do this? Thank you.

Answers (1)

Sachin Lodhi
Sachin Lodhi on 26 Apr 2024 at 10:35
Hi Michael, I understand that you are trying to change the GigE camera preview from grayscale to a color. For this, I recommend you use 'colormap' function. The 'colormap' function sets the colormap for the current figure to the specified predefined colormap.
MATLAB offers several built-in colormaps that could serve this purpose. The 'parula', 'jet', 'hsv', and 'hot' are popular choices, with 'hsv' (hue, saturation, value) being particularly effective at covering a wide range of visible colors by varying the hue component.
If you aim to display the grayscale image data using a colormap that encompasses all visible colors, the hsv colormap is a suitable choice. Here is a sample code snippet to use the hsv colormap:
% Set preview data to native camera bit depth (default is 8 bit)
imaqmex('feature', '-previewFullBitDepth', true);
v = videoinput('gige', 1, 'Mono12');
% Create a preview window and get image and axes handles
im = preview(v);
ax = im.Parent;
% Specify scaled grayscale data mapping to colormap
im.CDataMapping = 'scaled';
% Specify a colormap to display grayscale image mapped to RGB image
colormap(ax, hsv); % Using the HSV colormap for a broad spectrum of visible colors
% Specify auto detection of CData limits
ax.CLimMode = 'auto';
% Or, specify a fixed signal data range to display
% signalRange = [10000 20000];
% ax.CLim = signalRange;
Note that this code is merely an example, and you will need to adjust it according to your needs.
I also recommend you to refer to the following documentation for more information on 'colormap' function:
I hope this helps.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!