Image Processing; converting images

Hi guys. I have images in .im7 format. I've loaded them into Matlab using PivMat and ReadIMX, then formatted them into .mat files ( images ? ). Now, I'm trying to covert them to either .jpg , .tif , .png , .bmp using imwrite but I cannot do so because 'type was struct'. Can I efficiently go from 'structure' format to any of the formats that imwrite recognizes ?

2 commentaires

KSSV
KSSV le 6 Juil 2017
You have to extract the required pixel information from the structure and use imwrite.
Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
Thank you. If you don't mind me asking: what information would that be ? x ( 1x2048 double ) and y ( 1x2048 double ) and also w ( 2048x2048 double) also the unitx and unity are 'mm' - how'd I deal with that ? These are probably really stupid question, but I just want to make sure if I'm doing it wright.

Connectez-vous pour commenter.

Réponses (2)

KSSV
KSSV le 6 Juil 2017

0 votes

You need to pick the matrix 2048*2048 and use imwrite

8 commentaires

Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
Thank you again. When I'm trying to do so it spits 'Too many output arguments' out. Do you know why ?
Give the code what you have tried...You should only send the required matrix into imwrite
A = rand(2048);
imwrite(A,'myimage.png')
I guess you used something like
out = imwrite() ;
No imwrite doesn't give you any ouput, it writes your matrix into the filename and format which you have specified in the given folder.
Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
yes, I was doing that. Thank you so much. But now, even when I do it as I should have been doing, it displays a white rectangle
KSSV
KSSV le 6 Juil 2017
What data does matrix have? Attach it.
Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
The file is too big to attach it. The entries of the matrix are integers ranging from 100 to above 1000 if that helps ?
Thorsten
Thorsten le 6 Juil 2017
Modifié(e) : Thorsten le 6 Juil 2017
Imwrite assumes double input data to be in the range [0, 1]. Everything above 1 will be mapped to 1, resulting in an all-white image. So you have to map your data to the range [0, 1].
Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
Thank you Thorsten, used mapminmax to map my data to desired range, not sure if that's what you meant ? It now displays the image ok, but with horizontal black thin lines ? There are also, hardly visible, white thin vertical lines along the image ? Any idea what might be causing it ?

Connectez-vous pour commenter.

Image Analyst
Image Analyst le 6 Juil 2017
Try this:
storedStructure = load(filename) % Don't use semicolon
% Now extract the image field into its own variable.
rgbImage = storedStructure.myImage; % Or whatever the field for the image is called.
imwrite(rgbImage, 'my RGB image.PNG');

1 commentaire

Damian Wierzbicki
Damian Wierzbicki le 6 Juil 2017
Thank you. I get the same using this method, a white rectangle.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Convert Image Type dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by