How to create a gray scale image

Hi, i want to create a gray scale image in matlab so I write a matrix 5x7 lets say A=[0 0 0 0 0 0 0; 80 80 80 80 80 80 80;200 200 200 200 200 200 200; 110 110 110 110 110 110 110; 160 160 160 160 160 160 160;255 255 255 255 255 255 255] . Then i use the imshow command and I expect an image where every row has a different intensity, the first black, the last white and the others with intermediate values. Instead of that i get a picture where only the first row is black and the rest of them are white. what am i doing wrong?

 Respuesta aceptada

Image Analyst
Image Analyst el 29 de Nov. de 2013
A is a double. Cast it to uint8:
imshow(uint8(A));
or else use [] if you want to keep A as a double:
imshow(A, []);

7 comentarios

maria
maria el 29 de Nov. de 2013
thanks a lot, it worked :) but what is actually difference between double and uint8 ?
Image Analyst
Image Analyst el 29 de Nov. de 2013
A double is a 8 byte (64 bit number) that can represent a wide range of numbers, including those of fractional values. A uint8 is a 1 byte (8 bit) number that represents only integers in the range of 0 to 255.
maria
maria el 30 de Nov. de 2013
Editada: maria el 30 de Nov. de 2013
great, but even in that case matrix A has only integers. should't it be able to give me a grayscale image even though it's double?
Image Analyst
Image Analyst el 30 de Nov. de 2013
Editada: Image Analyst el 30 de Nov. de 2013
It is a grayscale image - a floating point grayscale image. But it's not an integer class . It's a double class that happens to have only integers in it, but it's still a double. Look:
A=[0 0 0 0 0 0 0; 80 80 80 80 80 80 80;200 200 200 200 200 200 200; 110 110 110 110 110 110 110; 160 160 160 160 160 160 160;255 255 255 255 255 255 255]
whos A
A 6x7 336 double
maria
maria el 1 de Dic. de 2013
but my matrix represents a filter, and i want to impose it in an image. should i convert it to uint8 or is it fine if it is double?
Image Analyst
Image Analyst el 1 de Dic. de 2013
It's fine if it's a double. You'll get more accuracy that way. You only need to convert it to an integer if you want to do certain things, like store it in a standard image format.
maria
maria el 1 de Dic. de 2013
oh ok, thank you so much for your help :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Image Processing Toolbox en Centro de ayuda y File Exchange.

Preguntada:

el 29 de Nov. de 2013

Comentada:

el 1 de Dic. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by