how to convert matrix to graysclae image?
1 view (last 30 days)
Show older comments
Hi, I have a matrix that i have extacted using spin images descriptor, it is of size 15x15 :
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/164883/image.png)
I want to display it in gray scale but it doesn't work. I tried to use imshow() like this :
imshow(uint8(spinImages(1,1).spinIm),'DisplayRange',[0 255])
imshow(255-uint8(spinImages(1,1).spinIm),'DisplayRange',[0 255])
and also i used imagesc :
imagesc(255-uint8(spinImages(1,1).spinIm), [0 255])
imagesc(1-uint8(spinImages(1,1).spinIm), [0 255])
imagesc(uint8(spinImages(1,1).spinIm), [0 255])
but worthless. pleaz could you help me.
6 Comments
Adam
on 25 May 2016
Edited: Adam
on 25 May 2016
imagesc( spinImages(1,1).spinIm );
colormap( flipud(gray) );
will give you a white background and high values as black if that is what you want visually.
Obviously you can also inverse the data itself - it depends if you want the data inverted for other purposes than visualisation too.
Accepted Answer
Guillaume
on 23 May 2016
Edited: Guillaume
on 23 May 2016
" but it doesn't work". In what way?
What you've showed will display the image, possibly not the way you want, but it will display it.
I'll note that the intensity range in your screenshot is up to 3906. Because of the call to uint8, any intensity above 255 will be set to 255. I'm not sure that's what you want.
There's certainly no reason to convert to uint8 if you're going to restrict the display range to [0 255] anyway.
Possibly, you meant:
imshow(spinImages(1,1).spinIm, [])
3 Comments
Guillaume
on 25 May 2016
If you want to inverse the image:
imshow( max(spinImages(1, 1).spinIm(:)) - spinImages(1,1).spinIm, [])
would be better than the completely unnecessary conversion to uint8.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!