Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

write (save) an image file

Asked by Elysi Cochin on 31 Jan 2014
Latest activity Commented on by Elysi Cochin on 31 Jan 2014

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)

http://imageshack.com/a/img838/8308/yc91.png

0 Comments

Elysi Cochin

Products

No products are associated with this question.

1 Answer

Answer by Walter Roberson on 31 Jan 2014
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');

3 Comments

Elysi Cochin on 31 Jan 2014

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....

Image Analyst on 31 Jan 2014

Try casting everything to double to do the math, then cast back to uint8 inside the call to imwrite().

Elysi Cochin on 31 Jan 2014

now it worked... thank you Walter Roberson and Image Analyst for your help....

Walter Roberson

Contact us