Rgb2ind value coding problem
1 view (last 30 days)
Show older comments
Hello all. I have some question. i have an image, i read the image using imread after that i convert it to index image using rgb2ind. Then i save it into text file(.txt). why the value in the text file only 0 and 1 ? does it supposed to show range of value from 0-255 ?
a = imread('img1.jpg');
[b,map]=rgb2ind(x,32);
prewitts=edge(b,'prewitt');
dlmwrite('test1.txt', prewitts, 'delimiter', ',');
im using this code. also attach the image and the text file.
0 Comments
Accepted Answer
Guillaume
on 27 Nov 2014
It has nothing to with rgb2ind and everything to do with edge.
As per the documentation of edge, it returns a binary image BW of the same size as I, with 1's where the function finds edges in I and 0's elsewhere.
Moreover, since you pass 32 to rgb2ind, the values in b will be in the range 0-31, not 0-255.
Do read the documentation, it's all in there.
2 Comments
Guillaume
on 28 Nov 2014
To get 256 values (0-255) out of rgb2ind you need to pass 256
This does not change the fact that edge will always return a binary image (0s and 1s)
More Answers (1)
Image Analyst
on 28 Nov 2014
If, for some reason, you want 0 and 255, you could just multiply by 255:
prewitts = uint8(255 * edge(b,'prewitt'));
2 Comments
Image Analyst
on 30 Nov 2014
You're right that 1, multiplied by 255, will show up as 255 in the text file. But what value do you want the zero to show up as in your text file?
See Also
Categories
Find more on Convert Image Type in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!