saving coloured image in gui
    4 views (last 30 days)
  
       Show older comments
    
    ash fairy
 on 28 Jul 2017
  
    
    
    
    
    Commented: Image Analyst
      
      
 on 29 Jul 2017
            hiii all!!' i was trying to save an image in tif format after doing maximum intensity projection!!whenever m saving the image stored is in grey scale...my original image colour is green....can anyone give me a solution!!thanks in advance
2 Comments
Accepted Answer
  Image Analyst
      
      
 on 28 Jul 2017
        
      Edited: Image Analyst
      
      
 on 28 Jul 2017
  
      Are you SURE? Have you passed the image you're passing to imwrite() into the size() function and seen what it says?
[rows, columns, numberOfColorChannels] = size(yourImage) % No semicolon
whos yourImage
What gets reported to the command line for numberOfColorChannels and the data type? If it's 1 instead of 3, then it's gray scale, NOT color. If it's 3, it should save as color, if it's uint8.
3 Comments
  Image Analyst
      
      
 on 29 Jul 2017
				Ash fairy, you need to make a full size colormap, then you need to do this:
rgbImage = ind2rgb(imageInAxes, colormap(cmap));
rgbImage16 = im2uint16(rgbImage);
See this full demo code:
% Initialization
gray8 = imread('cameraman.tif');
gray16 = im2uint16(gray8);
subplot(1, 3, 1);
hAxis = imshow(gray16);
whos gray16
% OK, let's start.
imageInAxes = getimage(hAxis);
whos imageInAxes % Should be uint16.
% Create green color map.
maxGL = double(intmax(class(gray16)))
z = zeros(maxGL + 1, 1);
ramp = (0 : maxGL)' / maxGL;
cmap = [z, ramp, z];
% Convert gray scale 16 bit image to color using colormap
rgbImage = ind2rgb(imageInAxes, colormap(cmap));
whos rgbImage
% Right now rgbImage is double in the range 0-1.
% Convert to uint16 in the range 0-65535
rgbImage16 = im2uint16(rgbImage);
subplot(1, 3, 2);
imshow(rgbImage16);
whos rgbImage
% Ask user to save the image.
[baseFileName, folder] = uiputfile('*.tif','Save the image?');
fullFileName = fullfile(folder, baseFileName)
imwrite(rgbImage16, fullFileName)
% Recall it from disk to check that it looks normal
recalledImage = imread(fullFileName);
subplot(1, 3, 3);
imshow(recalledImage);
More Answers (0)
See Also
Categories
				Find more on Convert Image Type in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

