im2uint8 only generates 0 or 255

2 Ansichten (letzte 30 Tage)
Hadi Ghahremannezhad
Hadi Ghahremannezhad am 10 Feb. 2021
I am trying to present an image of class double using imshow.
suppose this is the image:
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0]
now when I try to convert it to uint8 in order to show it, this is what I get:
b = im2uint8(a) = [255,255,0;
255,255,255;
0,0,0]
but I expect something like this:
b = [78,90,0;
78,37,63;
0,0,0]
so the imshow command shows a weird black an white image:
imshow(a);
imshow(a,[]);
imshow(b);
imshow(b,[]);
How can I properly present a double image?

Akzeptierte Antwort

Jan
Jan am 10 Feb. 2021
Bearbeitet: Jan am 10 Feb. 2021
im2uint8 expects the input to be an RGB image, which is a 3D array with values from 0 to 1. So normalize your data at first by dividing by 255:
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0]
im2uint8(a / 255)
  2 Kommentare
Steven Lord
Steven Lord am 11 Feb. 2021
Or even more simply, just call uint8 on it.
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0];
aJan = im2uint8(a / 255)
aJan = 3×3
78 90 0 78 37 63 0 0 0
aSteve = uint8(a)
aSteve = 3×3
78 90 0 78 37 63 0 0 0
Hadi Ghahremannezhad
Hadi Ghahremannezhad am 11 Feb. 2021
@Steven Lord thanks. this worked great.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by