write (save) an image file

i had a .mha file, i used the below two lines to display the image and i get the first full image as in the link below....
V = mha_read_volume('BRATS_HG0001_truth.mha');
imshow(squeeze(V(:,:,round(end/2))),[]);
please can someone help me how to save that image to a jpg or bmp or tiff file....
i tried
imwrite(squeeze(V(:,:,round(end/2))),'filename.bmp')
but i'm not getting the image... i get the outline of the image as shown in link (image(b))... what should i do to save as image(a)

 Accepted Answer

Notice that when you call imshow you are providing the [] second parameter. That tells imshow() to effectively shift and scale the data so that it runs between 0 and 1. You can do the same tranformation:
newimage = squeeze(V(:,:,round(end/2)));
minimage = min(newimage(:));
maximage = max(newimage(:));
scaledimage = (newimage - minimage) ./ (maximage - minimage);
imwrite(scaledimage, 'filename.bmp');

4 Comments

sir when i did so i got the below error
??? Error using ==> writebmp at 16
Class of X must be logical, uint8, single, or double.
Error in ==> imwrite at 431
feval(fmt_s.write, data, map, filename, paramPairs{:});
Error in ==> Demo at 10
imwrite(scaledimage, 'filename.bmp');
so i edited the line to
scaledimage = uint8((newimage - minimage) ./ (maximage - minimage));
but that time when i write i get a fully black image and nothing else....
how to correct the above error....
Try casting everything to double to do the math, then cast back to uint8 inside the call to imwrite().
now it worked... thank you Walter Roberson and Image Analyst for your help....
i am also getting the same black image. can you tell me this code? plzzz i need this urgent

Sign in to comment.

More Answers (0)

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!